Live CEOing Ep 801: Design Review of Calculus & Algebra Features continued

Stephen Wolfram and his team review calculus and algebra features for Wolfram Language 14.1, focusing on how to represent vectors, matrices, and tensors symbolically. They debate typesetting choices, array operations like transpose and tensor contraction, and whether to include special symbolic arrays like Kronecker delta products.
Chapters
All right.
Hello everyone. Welcome to the second design review of today. Looking at calculus and algebra for version 14.1. And this is our second go through second, maybe third even go through of this material. And we've got some changes here. Okay, so the trivial version of non threadable will be something like A, B, C plus non threadable of X. No, that's not what I expected. Oh, no. What? No, it's not.
So. Sorry, sorry, sorry, I was muted. The non threadable is an attribute. So you set attributes X non threadable. And then A, B, C plus X stays unevaluated.
Oh, okay.
And then various things like vector symbol automatically generate that attribute and so automatically have that attribute. Yes, yes, I guess they have that attribute. And since it's there, the head, then it gets there. Yeah. So vector symbol of X will just do that. And if you look at attributes of vector symbol, you'll see that non threadable is there.
By the way, type trusting point. That's awfully tight.
Yeah, so we. I had a discussion the. I mean, I can go into the details of that. I had a discussion with Jason and John about this. That is using the. That is using the actual vector character, which.
No, that's not acceptable. What that did there is just not acceptable.
Right. And so, you know, we, you know, basically it there's. I forget what it's called. I think it's called like the black box area of a character. And basically it places that right above the, you know, right above the base of the over script. We could try to somehow have some sort of baseline, which would be a bit arbitrary. Or we could, instead of using the vector symbol, use right arrow where because it's, you know, has both halves of the head, it doesn't look nearly as tight. Right. The shaft is then centered rather than right above the head, you know, so the latter is obviously very simple. The I. My sense from my discussion with John is that the former is not that hard, but it could have consequences.
Okay, well, it needs to be looked at. Okay, okay. All right, so let's move on here. So what are you saying that D does with vector symbols and so on?
It does the array derivative. So let's say that you have a function of a vector X. If you differentiate with respect to X, you get the gradient.
So I can say this comma, vector symbol X.
You don't need that anymore. X is now vector symbol makes that X. Oh, wait a minute. Maybe you do need that.
I mean, if I say just X here, I'm sure I'm getting something completely different, aren't I? Yeah, yeah.
Look at the examples. I mean, it seems weird to.
Vector symbol.
Yeah, the examples below.
Yeah.
For vector symbol, for instance.
Yeah.
Okay. I'm sorry, where are the examples? Oh, here. I mean, there's an argument that hiding these arrows is sort of okay because we kind of, you know, it's just a hint. Maybe. I don't know.
You know, I don't think that, you know, standard form is supposed to be pretty, you know, unambiguous. I don't think that just creating the whole thing as just a symbol is really what we want.
I'm not wild about that superscript N appearance.
I really think that that's debugging information. And I don't think that's what you want in formulas most of the time.
Which.
The N. Yeah, the dimension stuff. I've never seen formulas that have it in them ever.
Well, that's not true. I mean. Right. Certainly, you know, certainly people write things like I sub n. Yeah, yeah.
No, no, you're right. But this is, this is saying what the total size of the thing is. No, but it is.
Right.
So I sub N typically means identity matrix of size N by N. Oh, I see.
I see.
Okay. So that's, that's more like, I don't know, like one of our symbolic functions. That's. That's, you know, chronic or delta N comma, M type thing.
Okay, well, I guess.
Wait, wait. N. N is the explicit indices that are being used to index into the Kronecker delta, not the total size of the Kronecker delta.
Right, right.
There's a different thing.
Yes, right. But if, if, if you look at identity array of N, then you will see.
I understand that. I understand. So, Right.
And, and, and so for, you know, once you get a sufficiently complicated thing like the symmetry, then I have to put it in a tooltip. So I suppose we. I could move the end to the tooltip.
What Vector symbol 2 doing there in that?
Oh, that. That's. That's just because the. There's a missing text resource I haven't updated. So it's getting it from the name of the template box. Right. That's the two argument vector symbol as opposed to the one argument or three argument.
Okay. I kind of think that the tooltip is the right place for this.
Okay.
But, but, you know, I wouldn't.
Mind if we, if we thought of it. It's, it's. It's. If we figure. And we don't need it to do this now, but if we gave sort of, kind of Like a mode that you could turn on a setting.
We want this for. For a bunch of other typesetting stuff. And I think that's a separate discussion to enhance traditional form. And because I'm. For years I've been fed up with the fact that I have to retype formulas in certain cases.
Right, right.
I mean, this is a general discussion of basically switching a bunch of preferences in traditional form and in standard form about what gets displayed.
Right.
And we should simply have that. I mean, it's something. We started that discussion a while ago about traditional form. We never finished it. And we need to finish it. Okay. All right, so let's move on here. So what is this? This is a tensor, right.
And it's a rank 3 tensor as shown by the over script.
And what the heck's that prime doing there?
So that's presumably derivative. A derivative there somewhere, right?
That a derivative escaping. It's launching into low earth orbit or something as a derivative. I mean, it's far away from the.
B. Yeah, I'm not sure why that is. I would, I'll have to investigate that. That, that particular case.
Okay. Why are we making this bold? I mean, are we.
Because we write the conventions for, for, if you remember, dyads, right. You know, for, for dyads and, and higher ranked things as bold rather than vector. Right. So, you know, I understand that, but.
We'Re the only case in, in, in standard form where bold means something. I'm not.
Well, maybe. Can I think of something? There are.
I mean, are we happy with the matrix thing being the two way arrow? I think we talked about that last time. I think.
I think both vector and matrix one should have the ability to not have the arrows on them.
Well, that requires switching standard form and we need to talk about that separately.
Right? I mean, right. There. There is another convention, right, which is to use a single underline for vectors and double underlined for matrices. It's relatively rare, but it does.
That's a convenient handwritten one. Honestly, in my. I mean, you know, as a person who moved from the UK to the US you know, in. After kind of having learned one convention for all these things. Okay. In the British scheme, most of these things were bold. The American scheme of putting arrows on them, that was a kind of. To me, that was an American 1950s-60s kind of physics oriented, mathy approach. Okay. I don't know where it originally came from. It might have come from somewhere, might have come from continental Europe, I don't know. But this is. It always struck me as Being. Well, you know, the, the, the, and I think the. Yes. The underlying thing was sort of the handwritten version of the bold thing.
And.
The double underlying thing was pedantic. And I never really saw that. I mean, more, more you would see that as a, I mean. So there are a bunch of different conventions is what I'm trying to say. And in modern times, I mean, I'm wondering whether we should invent a little convention. Whether. Okay, so here's a possible idea. And if we really want to have this idea, we need somebody from Design to join us. But here's an idea. Okay, so imagine that we have something like. Just imagine even smaller than that might be crazy. An absolutely microscopic little, It's a little bit too small.
Magnify that a little bit.
Yeah, I don't think that's going to.
Be, doesn't magnify correctly. Oh, yeah, right. Because they give an absolute size there. But, but I can.
Well, yeah, you'd need a, you'd need a dynamic, you'd need a dynamic size in order for it to scale with the font.
But, but you see what.
Yeah, but. Right, this is for the rank three array.
Yes. Yeah, it kind of might be kind of crazy.
I think it's kind of crazy, right? I mean.
All right, fine, fair enough. What about putting the three in a box, the be not bold and three in a box or something?
I would, I would be okay with that. I think it's certainly, certainly easy enough for me to do. So I'm happy to do the experiment. And then once we, once we've done it, we can report back if necessary.
Then, then basically what we're talking about is, you know, in, I mean, if I say overscript be framed of three or something.
Yep. I mean, obviously we'd need to get the, the, the, the frame size. Right. But. Yes, that's exactly what, what I was basically thinking or understanding.
Let's just make it a little bit, let's just make it a little. What is it? Frame margins. Frame margin zero. And then we want to say frame style, gray. And then we probably want to say here styled style. That comma, 8, 7. I don't think that's completely crazy.
No, I think that's quite nice. And then it, Right, then it's, it's obvious sort of as the generalization of the arrows.
Yes, exactly. And I mean, you know, if we have an 11 dimensional tensor look like that.
Yes, right. I, I, you know, I tried some expert and I tried some experiments where we combined the arrow with the rank and you Just couldn't make something that was both readable and sensible out of that. But this box idea is, you know, I think. I think will work.
Okay, fine. And then. Yeah, so. So the, The. The vector is the degenerate form. The vector is the simplified form of that. Okay. All right. Okay. What is the integer second argument of transpose?
It's a new thing that's basically.
Rotates the dimensions.
Oh, I thought it was rotate dimensions down to that depth. You're saying it's rotate them by all of them. By that number.
By that number.
Yeah.
You mean mod. Mod the. Mod the rank of the tensor.
Yes.
Right. So right. It's basically right. Rotate right. You give the permutation which is either rotate right or rotate left of range of rank of the tensor.
Normally you're giving. Okay, the syntheses that I know so far are the permutation, the arrowy thing, which is kind of a representation of a transposition.
The two. A rule.
Yes. And then this is.
It's a shorthand for a permutation.
It's a rotate. Right. Or something of the permutation.
Yes, of the identity. Of the identity permutation.
Why is it useful?
It comes up with in formula. So this particular.
In the chain rule, in the chain rule that we use all the time, so we differentiate something composite, we have to use an array chain rule. So you're going to have an inner product among the last K and the first K dimensions. And so it keeps coming up.
But do you have an example, Adam, where.
So basically. So if you take one of the.
So.
Well.
But basically you're chopping off. I'm still a little bit confused. You're differentiating with respect to an array of rank K and you're saying that to do that.
So if I differentiate a product, if I differentiate the product, I would like to have A times B, whatever the product is, plus A prime times B plus A times B prime. Except that we cannot multiply one of those directly with the array dot because the.
Last.
Some number of last coordinates are come from the derivative. So from a prime. And we would like to. So to align them correctly, we have to do this transposition by order rotation.
So you have to rotate the first thing to rotate out the derivative things which were at the end and you have to rotate them to the beginning. Is that the idea?
Yeah. Yeah.
Okay. Okay, that's interesting. I'm a little worried that people are going to get this wrong in transpose. I mean, doesn't transpose already have a single list argument?
Yes.
Yes.
Well, the single list is a permutation.
No, I understand that, but if I just give. I see. If I just give a brace, N brace, that will mean take the nth thing and put it in the first position. I don't.
I think that's an error.
I think it's an error. It has to be a list of.
Okay, fine, Fine. Then this is fine. Okay. Type setting for transpose. What's the type setting for. For one of these bulk transposes.
Right. So that. That is. That is one of the questions you. You can look at it. It's.
Is it.
Yeah, well, you could just type it in. Right. You know, do transpose of a. And. And, you know, and I think what I settled on for the time was a colon separator and then the argument. But I went through a bunch of versions, none of which was quite. None of which looked quite right. And so I decided this is no less.
I mean, that doesn't look horrible.
Right.
It's kind of wild, but doesn't seem horrible.
And the advantage of this approach is if somebody does put in, you know, an explicit permutation list there, then, you know, you'll get something that doesn't look completely ridiculous.
That's quite nice, actually.
Yep. Okay, good. I'm not completely incompetent at my job. Good to know.
Good to know. My only question here would be whether in fact, not completely Whether in fact this would be better, whether that illusion is worthwhile or not. Probably not.
Okay.
I think not. Okay, okay. Onward.
Right. Well, I'll let you look at the examples if you have a good question about any of those.
That's not nice. I did a shift. I did a command return there. That's beautiful.
Right. And so the. Right. So I could force off. Right. It's because you made it into an input cell and control. Right. String characters are shown by default. Right. If you use symbol V, you wouldn't have that issue. I could turn off. I could turn off string, you know, string quotes that might have some effect on editability, but it's probably not a huge deal to turn it off there. The question is, would that affect. No, I don't think that would affect copy and paste. So I think I can probably do that.
If.
If we think that the right thing to do is to suppress the. The string characters there.
I think that looks kind of awkward.
Yeah.
Stephen, are you pondering or am I having connectivity issues?
You're not having connectivity issues. You're having a distracted, you know. Okay, sorry. Please, please. Okay. Where were we?
Yeah, Leave That Tick tock alone for now.
Yeah, I wish it was tick tock. Do you realize that still. Anyway, never mind. Okay. Okay. So could you repeat whatever the last thing was?
Right. So the question was, you know, should we suppress the string characters in, you know, in the display of the base of the vector symbol?
I think with. Probably. Nice. Is it too dangerous?
Yeah, I mean, it might have some effect on editability. Well, why don't. It's an easy enough experiment to do.
So I'm a little worried about it. I mean, I think what I just did. I can see wanting to do what I just did, but what happens if.
You evaluate that vector symbol V comma N on its own line?
Just call it V. Well, here on its.
Move it out. Yeah, like that.
Here. And now if I copy this and paste it in here. Oh my God.
Right, because.
Right, because it's. Because input form has shows. I mean, the input cell has show string characters to. True.
Yeah, that's right. So I could specifically turn that off in the, in the display function for the base, which, like I said, potentially has impacts on editability. But assuming people aren't going to be generally wanting to edit these in detail and probably just changing like a V to a ve or, you know, that's.
Not going to hurt anything.
Probably not going to hurt very much.
Yeah, I think it kind of made the inputs very hard to simplify, whereas the outputs are looking much nicer with the tau type setting. So we do need.
Yeah, yeah. I mean, this is a glitch which you guys didn't try, so.
No, no, I was aware of it. I knew about it, but we didn't know how to fix it. Well, at least I meant.
Well, I, I, you know, I wanted, I didn't want to just unilaterally turn it off. I left it in here to have this discussion right now.
But I've come across many, many times, like when trying to simplify the.
We should try and fix it.
Yes, thank you.
Listen, this reels thing here, we should also allied. We shouldn't display it explicitly.
Right. Well, you can see that it's, it's. It's part of the dimension display. So for moving the dimension into the rm.
Yeah, right, I get it.
Yes.
Then it'll just have rm, but we shouldn't show that it's. Yeah.
And there's even more. Like some of these. The matrices can have symmetries.
Right. Which I haven't pushed those changes to the build yet. I only implemented them over the weekend. But yes, once you got into symmetries I just gave up and put in.
A tooltip because what is this? What is the right hand side of this?
It's vectors of 3, I believe, or vectors of 3 comma reals. Is that the, I believe the correct syntax.
Encouraging.
Right. So that, that actually. Right. That vectors of three would be over the complexes. But you know, the real RN is the subset of cnn.
Yeah. Okay, nice. That's snazzy, isn't it? That's useful too.
Yes.
Now, what would happen if I didn't give a second argument here?
Well, you need to. You mean D. Oh, that mean. Oh, that. You mean.
Adam did some stuff for that. So.
Yeah, yeah.
So it works. Yeah.
Okay. So and if I take this.
And.
I say dimensions of this.
Right. So that's actually a bit of a point of contention, right? That's right. It's, that's because there's, there's tensor dimension.
Yeah, the dimensions is just structural thing.
We discussed it last time as well.
Yes, nice. Any objection to that?
So there, there's no objection to that, but there is a contention, a point of contention about if you do matrix symbol of a N comma N and then you add that to matrix symbol of B M comma m, then what should tensor dimensions give?
An error message.
Okay, so that is not what Adam implemented.
So.
Right.
So we sort of assume that the thing is validation. So.
Okay, I don't understand why that's right.
Yeah, so we've added the.
So there's.
A generate, generate conditions option. So if you say generate conditions goes to true, then it will give you the condition.
And if, if you.
Roger, what do you think about this?
Do you think this is right or.
Do you, I mean, is this consistent with. It seems wrong to me. It seems dangerous to me.
I, I, I haven't actually thought about this. I'm, I'm not sure now I'm a little bit surprised.
Yes. So, so if, if you say generate conditions goes to none, you'll get the error message, which was the old behavior before Adam changed it.
Well, if I say conditions to all.
There is no such setting.
Okay.
Yeah, you can do, if you do true, you'll get a conditional expression. And then if.
That is the most disgusting way to present that conditional. I mean, see, that's exactly why, you know, the typesetting we have, we really need to look at. Because if I, if I were using this anywhere, I would have to retype that.
Well, I don't think that's the typesetting problem. Right. I think, I mean, I presume what you're objecting to is the equation after the if.
Yes, that's what I.
Right. That is not a typesetting problem. I write the typesetting is typesetting exactly what, you know the conditional expression that was given. If the conditional expression had n equals and 1, that's what you would see.
Yeah, well, fine, but that's. Then I'm objecting to that. Yes. Okay.
Yeah, yeah. At least. So with general conditions we can't do that that much. Like if it's, if it's like.
I think you should do the basic simplification. Okay. Otherwise. Otherwise you just have real ugliness like this. I mean, I've had this situation a bunch of times where I've been using these things and I pretty much have to retype them. Okay, right.
So if you do slash, slash, simplify on percent 41. Well, well, well, will that give you.
Probably not.
Probably not. I know if it will go into the condition.
If it doesn't, it should. Oh, it does. Well, okay. Anyway, small thing to fix.
Yeah.
But now let's talk about gen tense dimension. Okay, so I don't think we know this isn't obviously silly what it's doing right now, but Adam, is it? I don't know. It's not obviously silly.
So basically why I chose false as the default is that we have tensor rank that computes ranks of things without checking dimensions.
Right. Yeah. I mean, I think me, Jose and Adam all have slightly different positions on this. But you know, you know, you know, my position is that, you know, tensor rank was, was the buggy one and it should have been checking dimensions as well. Jose thought that was being a bit overly restrictive. So didn't, didn't originally implement that restriction and. But now Adam changed has. I mean, he's added the generate conditions option which gives us more flexibility, but he basically changed tensor dimensions more like tensor rank and that it doesn't check by default or it assumes that things are not. Like if you did two and three, it would complain. But if.
Yeah. So if we want tensor rank to be consistent with tensor dimensions and have generate conditions goes to true. Basically tensor rank would have to be equal, implemented as length of tensor dimensions. That's the only way to get the results correctly.
Look, if you think you've done something reasonable here, these are corner cases and I think we should assume it's okay.
I think we can live with it and correct if we have to. Hey, so Itay, we really need a norm type setting.
I mean we have one in traditional form. I'm pretty sure. So I think I can make norm just be like traditional form. I just, I think it's somewhere on my list and I just haven't done it. But, but Stephen, if you do traditional form on that input, then I think you, you then we'll get.
Yeah, much better. And it shouldn't be Frobenius. It should be Duck F. Yes.
I mean I think, I think I. Well, if, if we're going to be a true traditional form, maybe this is something. I'll make a slight difference between standard form and traditional form. Maybe not. But a true traditional form. The true traditional form for this really is F. In textbooks people do use F for that. Whether we should do. I thought we had that.
I'm going to ask the question in traditional form is it. Does it format in a different way than traditional binomial? I don't think it should.
If I haven't checked that yet. It's on my to do list to check that. If it doesn't typeset, I'm going to do the necessary stuff to make sure it typesets. I mean the tooltip will be different so you can tell the two apart. But the, the base display will not.
Okay.
Will not be different.
Yep. So I assume that this should be called array symbol, not tensor symbol.
It is called array symbol.
Yeah, no, I know. Called a red symbol. Not cold tensor.
Yes. Right. And in fact. And in fact. Yes. And in fact there. I mean, so, so, so Adam made some other changes which I have sort of begudgingly accepted to tensor rank to, to you know, play more nicely with array symbol because array symbol really is array, you know, R array type. And so, you know, you can do component wise multiplication of it or apply listable functions. Those are clearly non tensorial. They're not basis independent. And so you know, we now sort. So those used to be forbidden in tensor. In tensor rank and tensor dimensions. And now it's sort of allowed at least for the symbolic. For the array symbol case. I'm not sure if you changed. Did you also change?
Yeah, I changed for everything. So if, you know, it's allowed to, to apply to any array expression or tensor expression because we don't have a way to tell the difference between array expression and tensor expression.
Right. If we ever have a true tensor type, then we will want to disallow that in those things.
Two questions. First of all, array dot. Why is this is like tensorcontract, Is that correct?
Well, it's a, it's a tensor product. It's an inact. It's an inactive tensor product followed by a tensor contract.
See there in the paragraph, second paragraph, Stephen, in the, in the details. Tensor contract, outer product. You can see.
Ok, OK OK ok ok ok, ok. I mean that seems like a useful operation. Yeah, okay.
It's super useful. I mean this, this is the inner product needed for the chain rule, basically.
Yep. Okay. Chronicler array. Why is that different from Identity array?
Yeah, we need to.
Yeah, that, that is the. One of the leftover discussions. So. So you have you wrote out the formula somewhere? Is this in this agenda?
It's documentation page for Chronicler Array.
Okay.
Is it pairwise or something? Is Kroneca delta Pairwise? And an identity is always, so to speak.
So identity array is the identity tensor on square on square tensors. Right. So it has two N indices. It eats N and spits out the. The same vector, the same tensor as you contracted with chronic or delta or Kronecker array. Is. Is this more general thing that sort of. It's like a normal product of certain chroniclers that you contract in different. It's hard to give a very short explanation of what it is.
Open the source page.
Yeah, open the search page for Chronicler Array. I believe Adam wrote the. What Adam told us is he wrote down the formula for it in there. Yeah, it's a very. Right. And sort of my concern is, you know, chronic or array could be confused with, you know, either the specific, you know, what's commonly called the chronic or tensor, which is, you know, epsilon. And there are various higher rank generalizations of it which are not this. They're. They're sort of.
So wait a second. Kronecker delta is just a. You know, it's just a numerical function.
Yes.
Yeah, this is not. Right.
Right. But there is a tensor. Just like there's a totally anti symmetric tensor. Epsilon I, J, K, whatever. There is a tensor delta ij.
Right. And that is identity array of N would be the N by N Kronecker tensor.
Okay. And what's the difference between this and that?
Well, read the definition. Wait, where's the formula? I don't see the formula here.
So.
Is it in an example where.
Did I write the.
I think the formula was in email.
Right.
So we. Yeah, we should.
So it's a product of kronecker deltas of j11 j12 times kronecker delta of j21, j22 and so on.
Right. It's basically sort of sub diagonal sub identity arrays or subsets of identity. It's identity or. Well, no, that's a wrong way to do it.
Wait a minute. The J sub I. By the way, I think that formula is not right. Read what it's saying. Doesn't look right. I sub whatever. I sub J. Yeah, it's really hard.
To read, but I do believe it is correct.
Okay, but so in the usual physics way of doing this, there would be kind of a Delta. I want J1.
The formula.
Yeah, formula in the chat.
So I just sent it to you chat. That's not extremely helpful and it's.
Maybe you. You want to do convert to standard form. Although I'm not sure that would make too much of a difference here. It might help a little bit actually.
If you did convert to standard form. So this is. Those bools are essentially the deltas.
Yes. Right. So. So if you look at the. The after the second double equal on. On the second line you'll see that Kronecker array is a table of products of Kronecker deltas where you're sort of taking different subsets of the indices of your tensor of your array.
Well, does that, I mean is this normally called a chronicle array or is this something.
It is not because.
No, no.
Right. So the, the. A chronic is what? The higher rank generalization of a chronic array is the anti symmetrized product of delta ijs. So which is very much not this.
Well, then we shouldn't call it. So what should we call this?
That is the problem that we've struggled with. And so we look to you as the, as the excellent namer of things to help us come up with something.
Okay, all right. Okay. What the heck is this thing?
So maybe you should evaluate a few examples. You'll see it has. It's. It's basically sub identity arrays with some things zeroed out because you're, you're making sort of certain restrictions on what it is. You're.
So this is also a nounified array. Yes, that's wrong for this. I mean, because most things that are called array. What else do we have that doesn't evaluate? And I just think this was broken. I wouldn't think to do normal on this. I would just think it was broken.
Well, we have one's array, right? Identity array is also like this.
Don't tell me that.
Yeah, so we want the symbolic form for those arrays.
Right? Because then if you take the dimension of. If you take the derivative of a 10 by 10 matrix, then rather than giving a nice compact formula, you have 10 by 10 matrices everywhere being dotted into your. You know, because of the chain rule or whatever. You were horrified by this last Time. But we convinced you that it's necessary. Maybe we need to somehow.
I mean this is, this is very much what's, what's. What's done in. In matrix formulas and others like you have.
I'm aware, I'm aware but I don't think it's right because I think what we. We've got other things like center array and so on which actually evaluate. See what I'm saying?
One's very similar. Something that sort should actually be symbolism.
Well, I'm right. So quantity array and sparse array sort of evaluate but also sort of don't.
Yeah, sort of don't.
And then many of these other things.
Are very different kinds of things.
Yeah, some of them are very different kinds of things. But the ones which really are arrays. I guess it's more common with matrix. Right. We have lots of named matrices that tend to evaluate to non trivially and.
Constant array, central array. Those are all. See I, I think it'll be hard to understand one's array versus constant array.
Array of ones. It's a different part of speech. So it behaves differently.
I mean zeros and ones are really special as opposed to you know, twos.
I'm talking about Constant array is a thing that evaluates to give a constant array.
I see what you're saying. Well, well these are gonna. They come up here and they, they. They are kind of endemic. They basically.
No doubt they just need a name.
Yeah, yeah.
Something that, that, that you know. Vector symbol. I don't have any problem with. It's. It.
I mean this doesn't help with. Well now zero symbol.
Is it one symbol?
Yeah, I think so. I think symbol would take the. Or symbolic ones that are symbol or something of that sort. Some symbol somewhere would be good.
I don't.
Just an S.
Oh.
No.
But it's, it's not a symbol. I know, yeah.
Symbolic onesie.
No, I think that's going to lose everything by the time we call it symbolic ones array. We can't call it just ones array. It will be totally confusing.
I was going to suggest that we call it just ones and then. But maybe that's too cute.
In other languages.
Vector symbol. Why did we rename it vector symbol from symbolic vector?
Because typically in, In. Well, in. Because in many applications. Right. You want to use it as a head. Right. If you're going to be differentiating it. You. You don't want a sent symbolic array. You want an array that's a function of variables. Right. So you'll notice if you look at the differentiation Examples, right, We have vector symbol of V of X.
Yeah.
You thought that, that you thought it was quite confusing to have, you know, a symbolic matrix, blah blah, blah of X.
Okay, hold on.
Well.
Yeah, help us if we do this.
So Adam created a new second argument. I don't know that this helps, but Adam created a new second argument to. To normal, which is called special arrays. And which is the thing that if you want to leave sparse arrays and structured arrays alone, but want to expand these types of arrays is what you use.
So you know, the boat is sinking, we're pumping water out.
Yeah, no, I mean, look, that whole thing with normal, that's going to take its own focus and study. That's just normal. It's very, very overloaded. That's. That's a whole, whole big story.
Right, so compact ones array.
Ones array. Is it sparse?
No, it's completely. And not in the ordinary sense of sparse. Right. It's completely dense. Well, I suppose it is a sparse array with a non default element. Right. It's dimensions and.
But is it in fact a sparse array?
No, it can be converted to a sparse array, but it's. It stays as this.
Yeah, I mean it's kind of stupid to call the sparse ones array given that it's. I don't think this is right. We can't do this along with constant array.
So they are a little bit like special functions. They are special arrays.
One's array function or one's function.
No.
No, no, I didn't think that.
Well, I mean, in a sense it is a function, right? It's a function from the integers to.
N by N. Matrices operate as a function in the sense that you feed it an argument and it does something like.
So what you're looking is for. Yeah, we're looking for. Is a name, possibly a naming convention.
Yes.
My first instinct was something you're not gonna like this like an S just as we have N. Yeah, I know, but inactive.
Inactive ones array and maybe because then.
You'Ve got activate, then you've got. Then you expect that activate is going to do the normal of it.
Well, I was halfway to possibly suggesting that, but yes, if we think that's crazy, then that's a bad name.
Unevaluated. No.
Why is it. Okay.
Why?
Okay, we want this because it goes along with matrix symbol.
When you generate these formulas, you're going to have these a lot in the resulting formulas. And if you're going to have a compact formula, they need to be symbolic and have some decent typesetting. Like they have Decent typesetting. Now, like the ones array above. That's, that's pretty nice.
So why is symbolic ones array not the right thing?
It's pretty much perfect actually.
Right? I mean, it made, it made more sense when it was symbolic vector, but.
Well, yeah, then could we go. Go back and change those to become symbolic?
It's not quite the same thing though. It's.
Yes, I, I agree. I under. I understand that there is a difference, but. Yes, but. Oh, but yeah, I guess it's symbolic ones already because it goes with this something symbol with the array symbols. So. Yeah, yeah, I mean, say that again.
Explain that again.
Right, it's a symbolic ones array because it, you use it in conjunction with, you know, vector symbol. I mean.
Yeah, that's not unreasonable. Okay, so symbolic, Symbolic ones array. Symbolic identity array, symbolic whatever. Okay, symbolic.
And then the mystery one, the Chronicle mystery.
Right.
I put three names down.
Leopold.
Yeah, I put three suggestions over there, which came from Adam. Index delta array, Delta array, Chronicle delta Ray. I mean, they're still kind of delta.
Explain to me what the thing actually is. What is it for? What does one use this for? Where does it show up?
Derivative of Trace, for instance, and a few other things.
Okay, so explain to me what it's doing. So it's got the collection of things.
Of indices. So certain indices have to be equal for this thing to be one.
Right. So it's sort of like a contraction, only where you have to, you know, zero out certain pieces of it.
Okay, so etai.
In.
In the world of, in, you know, Tensorland, does this have an analog in Tensorland? Is this like. Because normally you would have things like, you know, many tensor formulas are of the form delta ij, delta kl, delta, whatever. Yeah, yeah.
Jose and I looked into this and we did not find a, A tensorial. I can't claim that we did an absolutely exhaustive search, but certainly neither one of us off the top of our head knew of one and we did some looking around and didn't find.
Okay, but is this not equal? It's not equal to the delta IJ times delta KL times whatever?
No, it's more general than that.
Yeah, right. And what, what special case of this is that?
It's the case where. I think, I think that's one one. Am I right.
Here?
Yeah, let me double check. I figured this out at some point, but chronic.
So is it the case that all those sub lists here are indices where this thing is equal to one only when that collection of indices are equal? Is that right? Yes, and those indices are indexing into that initial. I mean, the thing is a rank length of the nice list, right?
Yes.
Yes.
Sorry. It's one, two. It's. Yeah, right. It's sort of what I would have thought.
It's 1, 2, 3. I mean the, the. The generic chronica would be chronica.
Chronicle, array of n n list list 1, 2.
Okay, let's say this comma list 1, 2, list 3, 4. That would be delta ij delta kl. Is that correct?
Yep. Yes, I'm pretty sure.
How common is the subject? I mean, if we called it. This is too horrifying. I mean, how about. Is this obviously wrong? Why is it not the same as the identity array? What? What is the. What is the.
Well, see, See, it's. It's both. It's both the. It's both ones array and identity array.
Yeah.
Why isn't it a second argument of identity array that tells you what to identify an identity, the default would be range of. Of the length of the first list. Is it correct that Kronec array of. If I have a length whatever it is thing there that this thing of range of 4 would be identity array, correct?
No, it's. It would be 1, 3 and 2 4.
Yeah, and that would be. And that would be. That would be one's array of two. Sorry, identity array of two would be that thing with 1324.
I'm confused.
Right? So. So write out list. Write out list, replace the range.
Can I ask this question? Can I ask this question? If I take array of bool of Same q of #.
#2222. Right. And that's not identity array, right? That would be. That would be the thing you have written above the chronicler array you have written above. But that is not identity array of NN of 22 or of 222.
2. Well, let me see. Let me understand that. Identity matrix. Do I. Can I do this? Does it. Do we have.
This. So identity matrix. No, no, that's specifically for matrices because it allows rectangular things. So identity matrix of 2. Sorry. Well, identity matrix of 2 or of list 22 is the same thing as identity.
Array. I see. Identity.
Array half the dimension of the rank.
Right? Because it's. Right. Identity array of N is the or of a list of length N is the identity operation on things of rank N. So it has two N.
Indices. Okay, but this thing that we've got here is a product of deltas. For the appropriate. I mean it's. This translates into a product of deltas, correct? Yes, that. That. What's that? Yes, yes, yes. Oh, that's what you've written here.
Okay. Right. And my main concern is that what when people talk about the generalized Kronecker array, they mean something different than this.
Generalization.
They. They mean the anti symmetrized product of Kronecker.
Deltas. Where does that show.
Up? It shows in. In some measure theory stuff, probably other places I can't think of the top of my head. This way of picking out.
Parts. Anti symmetric parts. Some of that. It's like more. More kind of index transformation rather than. It's not an output. Basically it's a way of transforming certain kinds of input to make them anti symmetric or whatever. That's not right. Like a debt kind of.
Construction. Right. Yes, well, which when I said measure measure was I. I meant more in terms of, you know, not like. Not like Lebeg measure, but as in, you know, calculus on.
Manifolds. Yes, yes, yes.
Exactly. Yeah. Okay. I mean Kroneca product array. No, that's yet something different. The Chronicle product is yet a different thing. Old Leopold is.
Busy. There is a product.
Array. It would have to be symbolic. Delta product array array. Yeah, It's not terrible. I mean if one saw that, one would be not completely utterly confused about what it.
Was. Yep, they would probably be less confused than if they tried to read the ref page and decode that formula. No disrespect to Adam, I just. I'm not sure what the simpler description is. It's.
Just. Well, the first thing we should do is write it.
Out. Yeah, write out that formula.
Absolutely. Delta times this, this, this, this.
This. Yeah. The only issue is that the delta for single argument does something different than it does for. For. For more than one.
Argument. Well, wait a second. Just. Instead of ji, why don't you write it out as A, B, X, Y or something like this so that you can make a thing which it's just delta sub this times delta sub that etc. Right. I mean you just need to write out a tensor. You can write out what you have written out already, but you should just say something like the tensor, you know, intenser notation, blah, blah blah. My suggestion, okay. This should not be documented to this version. Do you.
Agree? How do we not document normal at all or. Or just normal? Special.
Arrays. Don't document normal with special.
Arrays. Okay, I think that's reasonable. Yeah, I think it's too.
Special. But I think if you say sparse array of one of these things, that should correctly turn it into a sparse.
Array. Have we implemented that? Adam, we talked about that. I don't remember if we did.
It. I don't think I did.
No. Okay, so do that, because that's the right way to do it. That's the obvious way I would try to do it. I mean, by the way, symbolic delta product array sounds fairly specialized and is fairly.
Specialized. Yes, it's very specialized. I mean, I think. I believe this was the last symbol that Adam introduced. I mean, we got quite a ways with just identity ones and.
Zeros.
Yeah. And of course, you know, the. The new transposition and the array.
Dot. What is this, that weird I thing? Oh, that's an identity.
Array. Yeah, right. I wanted to sort of distinguish it, so I used a script I. As opposed.
To. It's kind of nice. Okay, I don't understand this example. Now, a radar will work with just ordinary lists of. Okay, Well, you know, I predict that there will be a tale of things we didn't think of here. But this is already. You know, I'm. I'm kind of wondering how this inter operates with, I don't know, quantity array. And I mean, there are all kinds of random functions. I can imagine.
This. Well, I think symmetrized array is perhaps more relevant than quantity array.
But. And what's the answer to that? Do they interoperate with those or.
Not? I. There is a little bit, but not very much. I don't think that's something that could be.
Improved. What is unit vector of N comma.
N? We need better typesetting for that. So the first argument is the length of the vector. The second argument is which position is.
One. I.
See. So N K is the typical. In a generic. Where K goes from one to.
N. It's kind of like a one hot.
Thing. Yeah, yeah, yeah.
Yeah.
Exactly.
Yes. And we need similar things, unit arrays and other things.
Eventually. And how. I mean, the relationship between a Kronecker delta and this.
Thing. Kronecker delta is something that can build up the vector array, et cetera, using.
Table. No, I mean, I'm not talking about the delta product thing. I'm talking about just a pure unit vector. Oh, I see. It's.
Which. Right, so unit vector. Right. For concrete numbers that actually evaluates to a specific.
List. Right. And it's possible that we need to then add a symbolic unit vector too. Here. I haven't seen that, but I can imagine.
It'S. I.
Guess. Yeah. So if the. If N was was like 10,000, we would be in trouble with.
This. Well, but even if it's three, do we need the symbolic version separately or not? Or Is it enough to just.
Have. All right. I mean, it's evaluated since what? Version 2. Version 1. I. I don't think that's something we can really change at this.
Point. No, but we can have the.
Same. We would need to have symbolic unit.
Vector. Oh, it's only version 6, so it's only 17 years. As opposed to.
30. Sorry. For.
Width. For unit.
Vector. All right, well, I mean.
We. Yeah, this was a meaty topic. The. The array calculus stuff. Matrix calculus.
Yeah. I think we're going to need to cover this other stuff on a separate.
Meeting. I think so.
Too. I'm not completely happy with destability. I think it can be more.
Decorated. It's the thing you. You use to destabilize the.
Government. Yeah, we started. Dissolved. But then it's not solving. So what do you do? So you need something that's kind of.
Like. It could be differential.
Stability. Yes. I think that'd be a bit.
Longer. But then I think. I.
Think. I think. I mean, you know, D solve. Solves functional equations. It goes beyond differential. I mean, it has delay equations. It has hybrid equations. It.
Has. It's a brand. D solve has become a brand.
Right. And so kind of follows that The D and R brands. The R sold.
Diesel.
Yeah. Yeah, I know. Okay, well, we. I think we need to discuss this a separate.
Time. Yeah, agreed. I think we can need to come in fresh or. It's just. But every. Everything.
Else. This is yet another name. Symmetric.
Binomial. No, no, that's not kind of waiting.
For. That's the. That. That's the. So Symmetric binomial is our current binomial. And we. Right, We. I mean. Binomial. Yes, we. I mean. I mean, we. Right. We've already discussed this a couple of times in lcc. And I will, you know, once I have the new ref pages finished, which will hopefully happen this week, I will. I will bring it to LCC for a final.
Conclusion. All right, sounds good. Okay, I think that's it for this. Oh, my God. I've almost blown all the way through the next meeting. Shoot. Okay, I gotta.
Go.
Okay. Review biomolecules. So let me just check one thing here. All right? People are asking for increased magnification. Oh, well, sorry, guys. Yeah, there are a lot of small characters here. All right, see you all soon. Bye for now. Thank you.
More from Guy

Cheryl Strauss Einhorn | The Human Edge: Smarter Decisions in the Age of AI | Talks at Google

Rachel Glennerster | Innovation and the Center for Global Development | Talks at Google

Rebecca Winthrop | Rethinking the Purpose of Education in the Age of AI | Talks at Google

Dr. Robert Wachter | A Giant Leap: How AI Is Transforming Healthcare... | Talks at Google






