Live CEOing Ep 808: Design Review of of Calculus & Algebra features for 14.1 continued

Stephen Wolfram leads a design review of Calculus and Algebra features for Mathematica 14.1 with Roger Germundsson, Itai Seggev, and Adam. The team debates notation for symbolic arrays and tensor operations, frontend editing issues with interpretation boxes, and how array derivatives and stability analysis should return results.
Chapters
Okay. Hi everyone. Another design review, this time about calculus and algebra, and I think we already discussed a bunch of the material up here, correct? Yes, yes, that's done.
You might want another view on typesetting because that's ongoing.
Okay.
Did you want to bring. What do you want to bring up? Itaidar.
Right, so what's new since last time?
That's exciting. Look at that. What is that look?
Right, that's percent modernization. So select that. You'll get a reference to that cell. Oh, there's some. That it's working for me in the latest build, so maybe there is.
Okay. But by the way, could. Could you make a comment to somebody that that really doesn't look right. That really isn't right. That. The.
We. We have a dedicated review for this on. On Tuesday, so let's just have that conversation.
Okay.
Right, so symbolic delta product array has. Appear in. Has new type settings since last time. So give it like a list 2, 3, 4 and then a list of. List 1, 2.
Like that?
Yep. Right. So it has dimensions 2, 3, 4 and we're identifying dimensions 1 and 2.
You know, this is going to be relevant to the whole string diagram generalized tensor thing.
Yes, it's right. It's another form of. Of. Of connecting in indices.
Well, I'm happy that this has an utterly obscure name.
Yes. And. And. Right. I can't say I'm super pleased with that appearance, but the. The.
For.
Whoa. I wonder how that happened. Okay, I'll need to look into that.
The message seems to be claim. What's that?
The message seems to be not coming from the newest version of the error messages.
That's a bug I'll have to hunt down.
So you need to add one dimension for it to be valid. And the error message is wrong, of course.
Yeah.
So if you added a five there, then.
I have no opinion. I don't really know what this means.
Okay.
I mean, I do know what it means. It means you're. You're identifying 1 and 2 and 3 and 4. But the 2, 3, 4, 5 at.
The bottom, right, that's sort of like. Right, so just like one, right. One's array of, you know, list three, four gives you a one with three comma four. I mean, there, there it's a. I suppose we could change it from an underscript and an over script to a. To a sub superscript to be more like the others. It'll use up a bit more space that way. But thinking.
Hold on a second. I mean, when you see a product, usually the thing at the bottom is I equals 1 to whatever it is. Right, Right. Which is kind of defining the dimensions. I suppose you could think of it in some way.
Exactly.
Are you sure we even want a notation for this? Or is the notation so obscure we might as well just say symbolic delta product array?
Well, Adam, do you have an opinion on that?
I think we need the notation just to make the outputs compacted. This thing will get produced by derivatives. So.
Can you show.
Derivative of total. So you need to symbol array symbol or. Symbol summary. Some. Some name. You need to put the. Yeah. And. And then 2, 3, 4, comma 2, 3, 4 or something.
Yep. And then differentiate.
With respect to the array here.
With respect to that whole array Y. And it'll be chaining itself like crazy. No, that's pretty weird. That's pretty weird. The fact that it's a, you know, a product is usually kind of a thing that says do this. It's an operation. It's an operator one's array.
Oh, well, right. Well, I mean. Right. It's right. One way to. Yeah, right. I mean, it is a product. It. Right. The. The. The concrete form of that symbolic array is a table of times of deltas.
I'm not buying this. I mean, to me, this is a generalization of the eye of the identity array in some way. And I don't understand this one. What the heck is the difference between this i678 and the 1 6? I mean, this is incredibly obscure. What we.
Well, I is an identity array and one is an array of ones.
Okay, fine, but then this is another array that's like an identity array or this array or that array. It's not a product symbol, which is kind of like a do this type operation. You see what I'm saying? If we're going to do this, here's what I think we should do. I. I think this thing should look like one of these. But instead of being a great big pie, it could be. If you really want it to be a. A product thing. I mean, I, I think it's more like, you know, you could make it an idealized stripped pie or something. Do we have one of those?
We should have stripped Greek letters. Yeah.
We don't appear to have that.
We had. Oh, maybe we added the formal Greek letters.
Okay, well, what I recommend is a stylized pie with similar kinds of. If. If this is 6, 7, 8. What is this? Is this 7 times 8 times? Whatever it is, is this. Okay, so then use that same notation. In other words, instead of an I there, we need something Given that we're calling it product array, we can, we can use, you know, some kind of italicized stylized PI thing, but then subscript it like that and then put. I would just say put 1, 4, either space or semicolon, 2, comma, 5. Don't put another, another Greek letter there. You see what I'm saying?
Okay, We might, might want to then use like a capital delta or something rather.
Well, except we've called it.
It's a delta product. Okay.
Yeah. Setting the. Okay.
Right. And. And the other issue is, is the, The. The string character.
Just a second. I need to ask Roger something. Roger, do you have to leave at the top of the hour?
I do.
Okay. All right. Sorry. Say that again. Whoever was. Was saying what. What is this creature here. Yeah.
That, that is your idea, right. Of an array with the rank over it. Right. So that three is standing in for the arrow or double arrow of vector matrix.
Oh, right. But although this rank is now down as a subscript.
That is not the rank. And, and there's a reason, right? I mean.
Oh, it's not the rank. That's right. That's the dimensions, not the rank.
Well, that, that's. That's half of the dimensions, which is one. Why? I, I used a different letter. So on the one that. On the ones array, those are the dimensions. On the identity array, those are half of the dimensions.
Shouldn't the ones array be 6 times 7 times 8 down here? What?
Well, I mean the. So what do you think the rank of the ones array is?
It's got a bunch of ones going down the leading diagonal. So I think it's a 6 by 7 by 8 object. Am I wrong?
You are correct. What do you think is the. What are. Do you think the dimensions of the identity array are?
Hold on.
Tensor dimensions.
Why did that happen? Oh, tensor dimensions. Mm. Look at the square.
What do you think the dimensions of that are?
Wait a minute. Let me think for a second. I see each one is one side. So it's that. It's the doubled version of that. So it's like, like it's a two by two and the ident. The. The. The two identity matrix is a two by two matrix. Yes, exactly. So this I suspect, is going to be 667-788.
678-788.
Yes. Oh, okay. Roger, do you have a comment on.
This, on the notation?
Yes, yes.
Yeah, I like the 1 and the 0 for the ones array. And zeros array.
The subscripts.
The. Yeah. And the identity. That's also good. But in Terms of whether.
How to do the subscripting given that one of them is the literal. See, I mean, this looks like those are array elements.
Yeah.
Which I don't like. And I think that the times here would be a nice way of indicating dimensions. The problem here is that those dimensions are. Look, I've got a different suggestion. On the I to use the times is here. And on the I to use six, seven, eight times. And then some symbol after that to indicate that it goes on.
Okay.
Does that make sense? I mean, and then. And then we can use the same thing for the PI. We can use the 6 times 7 times 8 there. And then the superscript can be the, you know, 1, 4 semicolon or something. 2, 5. And then this would be. That would be times. And then some little. You could have a dot, dot, dot. Or you could have some kind of. Actually, the other thing you could do. This is a better idea.
Is there a symbol that means repeat?
Well, dot, dot means repeat for us. But it doesn't mean. But it means repeat any number of times. My better suggestion is to just put the. Put the 6 times 7 times 8 in parentheses.
Okay.
And then for the PI. For the scripty PI. Whatever. Whatever that symbol ends up being. That's nice. Symbolic identity array is nice. Symbolic ones array is perfectly nice too. This symbolic data delta product array is really funky, but that's okay. Okay. By the way, if I say array dot here.
That needs two things.
I know.
Okay.
So would that be 8, 11 or something like that?
Yep.
Few.
And then you need a comma one, comma one.
Yeah.
Or two.
Where's a comma one?
It has to be eight, seven, eight or something so that you could seven.
If you do seven, eight there, they'll match up with the last two dimensions of the first one.
Yeah. Like that comma two.
Now I need a comma two. Yep. Level specifications. You need to. Well, whatever. One argument.
Did you.
I closed that there. Okay. And then close the total. Oh, boy. That's pretty exotic. And that's a transpose in direction three. Right, Right.
It's rotation by three.
Rotation by three by three.
The dimensions get rotated by. By three to the. To the left. All right.
This is pretty cool actually. This is really symbolic tensors. Yes. It's actually very nice to make examples from this. I mean, very cool. Now we just need string diagrams and we'll be all. All set.
Right? Yeah. The one other thing is the. Is the. Is the string characters and input cells. So if you copy that that a say into an input Cell or. Yeah, the whole expression into an input cell. Right. So you see how it shows the, the quotes and I, I looked into this.
What about the purpling? That is a bug.
That is a bug that. I'm not sure. I will have to investigate that if, if this notebook can be sent to me.
What is transpose to.
It's. It's a. It's two argument Transpose. That's just a missing text resource. I'll fix that.
Okay, that little two up there is. Oh, that's a transpose. Wow, something went very, very haywire here.
No, no, that's. You're inside of the transpose. But it's not a transfer.
That's a square. No, that's three. Yes, it is. It's three x squared. Because I did a cube. Right, Right.
So that there's a square. It's not a transpose.
No. Okay, fine, I understand, but, but this thing here, I don't understand the tensors. I don't understand. This array dot of this is a tensor here, right?
Yep.
And that's a tensor. But what's the operator between that tensor and this tensor?
Multiplication times.
Right. So this is really symbolic arrays, not symbolic tensors because we're allowed non tensorial operations like okay, component wise multiplication.
And that too. Should it have had a parenthesis here or is that right? No, that's right, that's right, that's right. Okay, so your complaint. I mean, so we need to find the bug here. But. But the issue is these string characters, right?
And so basically I can't turn them off and maintain any editability. I mean, I had a conversation with John and well, I first played with it and I discovered I could very easily corrupt the, the input in ways that only made sense because I had access to the source code of the front end.
But what about template box and things? Why can't you use that just for the A itself?
Well, I don't know what you mean.
Why can't you wrap an interpretation box around this quotes A so that you.
Well, I mean, so, so what? There is the solution of completely turning off editability.
No, I understand that, but I'm suggesting turning off editability specifically for the A on its own to have a blob of uneducated. So the A. If you wanted to change that A by typing over the A, you couldn't do it, but you could remove the A altogether and put something different in there. I'm suggesting a local lump of non integrability.
I.
I think you can do that with an Interpretation box. The template box. Why don't you look at it? I, I, I think it's, I mean.
I mean, I can turn off editability of, of. Right? I can turn off editability of the A, but I don't know that I can turn it off and still, and, and still maintain any way of replacing it.
No, but I think you can just mouse over the whole thing. You can just select the whole thing and zap it. Even though the thing itself is not editable inside, you can take the whole object and zap it. See what I'm saying? Just, just try it. I, I'm pretty sure I'm right about this. Look, you just put.
I'm pretty sure I'm, I will try it, but I'm pretty sure you're wrong about it. Yeah.
Okay, look. Interpretation. What is it, A B or something? Okay, now if I, then take this. Okay, so look, if I go, if I make a table of these things, okay, now I try and edit the A. I can't do it. It beeps. Right? And if I evaluate this, it'll turn into a bunch of Bs. Okay, I can't edit the A. However, I can delete the A and turn it into a U.
Right, but that's because that's the complete expression. The A by itself is not the complete expression. Right? It's the A with the over script three and all the others and the tool chip that's the complete expression. So you could blow away the entire symbolic array, but you couldn't rename it from A to B?
No, look, look, look, look, look, look. I'm claiming it's this. Okay? Now here, if I try and edit the seven, I can edit it to nine, Right?
Because that's a separate expression, right?
Why isn't this a separate expression?
Because that's all part of the symbolic array. That whole thing is the symbolic array.
All right, then I, then what I'm saying is just make, for now, make the whole symbolic array uneditable.
Okay?
That's what I would do.
Okay?
I don't think it's that big a deal because I think recreating that thing with editing is such a frigging mess anyway. You're going to need to respecify it symbolically, right?
Well, I mean, it means you wouldn't be able to, you know, change V to a V sub one or something. I think that's okay going through input.
Form, but it's, it's fine for now.
Okay.
Okay. What's this? Conjugate, transpose. Wait, a Minute. What's that?
Yeah, that's the same thing as transpose.
Oh, it is just cycles argument because.
It'S just a different notation for permutation. So it just eats more permutation. You know, it wasn't this. So just, just this pure addition.
What's tensor product?
An outer product.
Okay, Right.
It's the tensor product that understands, you know, assumed arrays.
This is a wild animal. Look at this creature. It's cool. Really cool. I should have looked at these before, huh? Okay, Now I don't understand why you're not subscripting with P times, you know, P cross Q cross R here.
Cause.
Well, because you don't care. Because it doesn't matter.
I mean. Well, I did originally and everybody hated that.
Or why are you scripting this?
Because. Well, because that, that is. That is a. A particular.
It's a constant.
Yeah. Okay, so. So the argument is this. If I've got a thing called A, I always intended to have a fixed set of dimensions. Yes. At definition. Well, except that I could perfectly well, in this formula here, I could have messed this up by saying, you know, pqz.
Yeah, but.
And then what the heck is going on there?
But that's got to be something different. I don't know what's going on there.
That seems wrong.
Adam. Adam.
I think this is. Adam is assuming that things that are not explicitly different are equal to each other. And that. And, and remember I was opposed to that. And you're like, oh, well, if Adam thinks it's okay, but that's the consequence.
Yeah.
Is that the, is that the partial deroto issue? That. That thing is no longer dependent.
So the, the other thing, the others is a different thing. So, so the first A is different than the secondary. Yeah, you gave the same looking name to two different things.
But, but so what. I mean, so I, I mean, so.
So Stephen, do the following. Copy out those. Those two different A's and put a plus between them.
And it's going to look very weird. It's going to say A plus A.
Oh, it does, it does.
There are different things.
And so if I, I mean, clearly if I same cue those things.
Well, that, that's true.
But.
All right, so do something like 10, you know, tensor dimensions on that. On percent 21.
Yeah. So tensor dimensions will tolerate this thing.
What the heck? Why does it do that?
Well, that's the only possibility that the thing makes sense. Otherwise it doesn't make sense. If Z is not equal R, then the thing is not valid. So if you say tensor dimension, generate Condition goes to true, then it will. Then it will give you the conditions.
I see.
But also, I don't think that this is how people would type it. I mean, a bunch of array symbols in a formula. I think I would find a. Equals some array symbol and then I will use my A.
Yes. Yeah, I agree. Right. Okay. I mean, we got to get some more. You know, we should tag these things as experimental in this version. We should get a bit more experience with them.
Yeah.
But I think this is going to be lovely.
Yeah.
And I feel like just sending a screenshot of this to the folks I was talking to recently who really wanted this functionality.
I think it's a little bit weird that Those like example 4 and 5 there work without a list around the vector symbol in the second argument. Right. Normally when you do. When you're doing a gradient. Right. It's list of list. And here we have a vector symbol.
But a vector symbol is a list implicitly.
Right. But where. But where's the list of list is what I'm saying. Right. List norm. You know, a list normally means something else.
I'm confused.
Yeah.
Why isn't that.
I think what ITA is referring to that when we introduced array derivatives in version 5, we had to add another level of list because you had an, you know, explicit.
Right. Do D of. Compare D of F of x Y, you know, list X2 and then D of F of X Y list. List of xy.
Not a brace. You see, that was the only way to.
I don't think that's a problem because that's a. This is now an implicit vector. Yeah. Whereas I don't. Explicit vector.
Exactly. I don't think it's a problem either.
Okay.
Okay. Yeah. This is lovely. We should have done this years ago. We just didn't know how to do it exactly.
We needed. We actually derived a new chain rule, the array chain rule.
Cool. Yeah, it's really nice. Okay, we've just got a few minutes here.
We're gonna have to probably. Well, let's see what. What you have to say.
Yeah. Okay. Let's just get some sense of this. It's interesting here that unlike an equation solution, you're just giving the values. This is like d stationary points. Values, type thing. Yes. The other. These point values. Point coordinates, maybe. I mean, it might be better to call it these stationary point values. I agree.
Or just stationary values.
Yeah, why not?
Is there an R equivalent?
So what?
Is there a. You know, is there a.
Well, what happens in the multivariate cases is the issue I'm sure examples, you'll get lists. Yeah. If you scroll find system examples over there. Yeah. The heck is this?
This says that the, the. The stationary point 2 is stable. The stationary point 3 is not stable. It's unstable.
We're gonna have to have more of a discussion about this. That's a very weird setup. I mean, I understand what you're doing there, but I. I mean, to me.
So often it almost seems like to.
Be an association that's returned. We tried it early on, so we can go back to it if required. No, I mean, maybe it's wrong, but. But it's just that these, these things where sort of the return value is kind of an encrypted enlisted thing, you know. No, no.
We can very well discuss sort of what the correct return value, you know, form is.
Yeah. Why. Why is that font size too big? I'm sorry? Oh, no, it's just copied from the documentation, that's all. I see. Well, I mean problem too that it didn't. That's the first or system. Now next one non system. Sorry. So again you could. Really cool. Yeah. But yeah, yeah, yeah. It's been highly well tested and with lots and lots of references like all the.
So one thing that often is there is there are parameters and we're able to actually deal. Give conditions on parameters for stability.
I understand. Which is really interesting.
Which is interesting. Yeah. The other thing is sort of the, the discrete one, the R stability one is relevant.
Hold on, hold on. In this case here, I don't like destability. I mean, what you're giving here is the point and whether. And its stability condition.
Yeah.
Yes. Wouldn't it be the most ability conditions?
I mean, so, so when there are no parameters, there is. I mean, it's just true. False. Right.
That's fine.
And otherwise it's. It. Yeah, it could be stability conditions.
It's because, you know, if I see this, if I saw destability conditions, I see the result is a half. A half true. I've got a fighting chance of knowing what the heck that is. If I just see destability, I have no clue what that true means. Yeah, it's fine to change, but it's a bit like a flag from a FORTRAN program or something.
No, I mean stability conditions is not. It's not a horrible name. It's pretty good name, I think.
Yeah. Okay, so that would be.
Okay, so we destabilize like classification, sort of. What Isn't it more destability classification than conditions?
Right.
No, we don't really classify in different kinds of stability. This is all asymptotic stability.
Right, but you're giving true and false. Right. Are there. Are there possible conditions other than true and false in the.
Yes. If the parameter you can just drop. If the parameters.
You get the logical formula.
But also. Also right. I mean, there's sort of a saddle pointy type thing where it's kind of stable in one direction, unstable in the other. What do you give here?
Then it's.
Then it's not unstable. It's not asymptotically stable.
Then it's not. Yeah, exactly.
That's also classic pendulum.
Yeah, that's cool. The heck is this?
This is a recurrence.
So it's a different difference equation. Stability. What is. What is stability for a recurrence? It's whether.
So stationary points is first thing. Okay. So stationary points means that the next point is the same as the previous one. Okay. If you use differences, it will look exactly the same as the derivative stability. Right. Because then the difference on the left hand side. Yeah, yeah. Okay. And stability means exactly the same as for. For differential, you know, the derivatives that asymptotically, the solution goes to that point when it's close, when it starts. Close enough.
Yes. So that's a typical cobweb plot kind of picture. Yes. This is lovely. I think though, we're going to need another meeting.
I think so too.
Yeah. Okay. Maybe tomorrow, right?
Would be great.
Yeah, sure. Yeah.
Can you. Can someone here who's a planner, scheduler, etc.
Claudia? Yes, I will. Jessica. Okay, sounds good. Chris. So there will be different people who are scheduling. Okay. That's. That's some very nice functionality. Really. I'm excited about that functionality. Although I. I want to really understand how it will dovetail with like string diagram type stuff. Do you think you understand that, Roger?
No, no, I don't. I need to read up.
I'm a little concerned about it because I'm. I'm concerned. There's. There's a thing. I just was looking at these plex diagrams, which are yet a generalization of string diagrams that deal with the fact that, you know, when you have tensor contractions, they're like graphs where one index is, you know, some is Einstein summation convention with another index. I see.
Yeah.
A hypergraph. A plex is a hypergraph where in general you can have three indices or any number of indices all kind of running together.
I. So I. I need to really get myself up to speed on that. Who, who is Nick?
Yeah, Carlos. Also I mean, you can, you can. I. We can. Look, I'm, I'm trying to learn, you know, I think there's a very elegant way of dealing with all these things. Very elegant, which will, you know, and I think we are going to be forced to have hypergraphs as a built in thing and we're getting an awful lot of functionality around them. So I don't think it's going to be too hard, but it's very elegant. Very, very elegant. So. And by the way, it also segues into category theory and all kinds of other cool things.
Right.
So. Okay, good stuff. Talk to you all soon then. Okay, 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






