Live CEOing Ep 785: Language Design in the Wolfram Language [=, Binomial, and More]

Stephen Wolfram reviews language design decisions for the Wolfram Language, including a new freeform input feature and whether to add a second binomial coefficient function alongside the existing one. The team debates naming, parsing behavior, and historical conventions before deciding to keep the current binomial and research a name for an alternative.
Chapters
Hello, everyone. Welcome to another Wolfram Language Design review, one of our Language Completeness and Consistency series. And let's take a look at our topics for today.
All right, so our first topic is equal bracket, which, you know, is, Does, you know, it parses in the, in the, in the prototype build. You know, the question, you know, we have a couple of questions, namely, you know, what it should. Right. One of the issues, and unfortunately John's on pto, so we may have some difficulty discussing that today. But one of the issues is what happens if you do it at the beginning of a cell.
Wait a minute. This is crazy. What happened here was I, I hit find and then I, I hit return. I see. Because it selected that.
Right. So this is a normal input cell. Right. So you need to do shift, enter, evaluation. Right. So natural language is sort of, I guess, something Dave picked as a temporary placeholder or maybe we had some process to pick this. I, you know, I don't know. I don't think this is in any way an approved name. And it doesn't. Right. It doesn't currently do anything, but it's.
Supposed to go and actually try and resolve this like interpreter does. I mean, this function is equivalent to interpreter of expression. Is that correct? Oops, no.
Well, I mean, I guess that's something that could be decided, but I thought, you know, we were all my understanding, and I think all of our understanding is that this is something that was supposed to be like something roughly equivalent to a wolfram alpha bracket.
Oh, yeah, it is. I'm sorry, I'm wrong here. What would be the thing to put here? What is the thing to put here that represents this being natural language?
Right. Well then, so if you look at the agenda, right, there are three possible, Three possible choices for wolfram alpha. Right. There is sort of Wolfram parse, there's.
Okay, that's what I was expecting. Yeah, go ahead.
Okay, so I don't know what specifically semantic expression does. Lou, do you happen to know. No.
The interpreter framework is entirely separate from anything I've worked on.
Right. I mean, we were proceeding under, if you look at the examples, and I have sort of, you know, three possible interpretations of this. Right. And, and you know, if you evaluate the first cell in the group, you can actually make these live. But. Right, so if we use Wolfram parse or, or something thereof, you know, that's sort of pretty restricted, but I think that's sort of what we want for something where, you know, it's non interactive and you don't. Right, so like entities you know, mathematical expressions, those sorts of things. Parse, more complicated things don't. Then we could do something that's like control equal. But you know, you get some pretty weird results. Like equal bracket of foo gives you text cell of bar. And I'm not sure that I don't think that's such a good result to get, you know, from a non interactive.
Okay, the. Yeah, that doesn't seem promising. Okay, so to me, this was originally intended as a, you know, a textual version of Control equals. Whatever control equals would do is what I think this should do. In a first approximation. That's my initial position. Yeah. You see what I'm saying? So which of these would that be?
Well, that's the one that's controlled equal expression right there.
Okay, okay, fine.
But my claim is that that is, you know, some of those things are too far removed.
Yeah, yeah, maybe. But I mean, it would happen with control equals as well. I mean, the control equals.
But control equals is interactive. This is not interactive.
That's a really weird result. I don't think it matters that it isn't attractive. I think that the, you know, I think that what matters more is that it's doing the same thing as control equals. I think now I will say something about user experience of this. To me, it, you know, if I start. And by the way, that the. Yeah, I mean. Okay, so the fact that it just acts dumb as a stone here and like does autocompletion for function names inside this is crazy, right?
Absolutely.
Okay, so now the question is, what's the UX that should happen here? Because we kind of know. I mean, it's a sort of generalized ligature type thing to me. There should be some appearance change that indicates you're putting in something special here. Maybe the font should change or whatever. If you backspace into it, it should, you know, blow that up. Right. But it's the same thing as when we do a ligature type thing where we do this and that turns into, you know, as soon as we type the double bracket, it turns into this, but if we backspace into it, it turns back into that. So I'm saying. So what I'm suggesting is that yes, it is non interactive, but the input should start looking different. Am I making sense? Do you understand what I'm saying? So. So when I type this.
So certainly control equal switches to a different font.
Yeah, right. I'm suggesting that this should do the same thing as well, that this. As soon as you type this, you're in this state and you're Going to type into here. This should be coming out on different font, I think whatever is readily achievable. Okay. Something different about it, and if I backspace across it or I break it somehow, then it can, you know, revert to its normal form. So what I'm saying. So I think that will help in making it not so surprising that this is doing something automagic like control equals. Now, another thing that's coming that may affect this is the local parser, which finally, after a decade, is supposed to be arriving. Am I making sense?
To the degree that that affects control equal, it would also affect this.
Yes.
Right.
But the point is that. That one of the features of the local parser is that it can fail. And that means that it is interactively.
I'm sorry, control equals can also fail. I don't know.
I know, but look, we can be capable of doing it, but only on the server. You see what I'm saying? And so interactively, it knows that there is a possibility that you should have to retry it and go to the server. Right. So it's a little bit unclear to me how this should work in equals bracket. And you're right. We need a, you know, we need a language, a full form for this.
All right.
What is the. What is this? I mean, it's really an interpreter thing, isn't it?
I mean, I don't see why this is an interpreter thing. Right. It's. It's a Wolfram alpha thing. I mean, which doesn't mean we have to wolfram Alpha, but it's interpreter in.
The sense that it takes a string and produces an expression.
Sure, but so does WolframAlpha. Right? I mean, this is literally. I mean, it's an undocumented second argument. Right, but this is literally. I mean, if you, if you want this to be like the control equals experience, then this is wo from alpha of input string comma, control equal parse, control equal result. I forget what it is, but it's listed in the expression expression. Control equal expression.
Right.
If you type in wolfram alpha, you know, foo comma control equal expression, which doesn't complete because we never documented it.
Right.
This will give you.
A server transaction. It did that thing.
Yep. Well, it's one of two possible server transactions because control equals. First asks for. For the M parts and then as a fallback, also looks if there's an M input or m output that it can use as the interpretation, which is. Right. It's looking that the result pod here for foo has bar and I. Right. If you do double equals of foo, you'll see the bar in the result. And that's where it's getting this bar.
Okay, okay, okay, okay. So the question is what the name of this thing should be. And this thing probably should have an option and possibly there should be a dollar variable that allows you to set it globally. So this thing is being stored. If I say hold of equals bracket, blah blah, blah, I will see this thing. Yep.
Well, that's. There's a separate question about the typesetting of the full form and whether it should, you know, ha. Whether it should typeset using the operator or using full form. But. But certainly if you did hold and then slash, slash, full form, you would see this thing.
Yeah.
What you would never see is the unevaluated parse.
Right, right.
So Wolfram alpha of 2 +2 control equal expression.
The reason natural language isn't a particularly good name is because this can include math and things like that. Right.
And I wasn't suggesting that as a good name. I was just saying that's what they put in, in his prototype. And so that's what, what, what currently happens. You know, my original instinct was, well, maybe it should just parse to WolframAlpha. You know, string control equals expression. But then John, who is unfortunately on PTO today, made the sort of the counter argument. Right. We triple at used to be, you know, three argument apply. But then we created map apply so that.
I think we want some function here because I think, I think I can imagine people just using it. I can imagine people mapping it over lists of things. I think it's useful. What really is this? I mean, it does some computations. Go ahead. I mean, we've called it free form input. That's a common name that we've used.
I believe that is the menu item or it. Right. This is endless free form input. But is the menu item right down.
Here in the tongue?
No, no, no, no. In the insert in.
But it's also there in the tongue.
No, it's not. That's for a single equal. Single cell. The cell that you get by typing an equal at the beginning.
Which is.
Why this is the force equal.
Yes.
Okay. I do not think free form should be hyphenated. I would like to urge it not be hyphenated. Maybe we can ask DQA what they think. Okay. That's going to affect this.
So by, by not hyphenated, you mean mushed together as opposed to space?
Yeah.
I don't feel like I've seen free form.
Maybe I have Yeah, I think you have.
Okay.
All words smoosh. It is the nature of language.
Yes.
You've heard me claim this many times before.
Yes. Okay, there's. Okay, so while all of the results, at least on the first page of DuckDuckGo are TV channel called Freeform. So that.
Well, I'm seeing it in lots of other places.
Okay.
I'm seeing it in tons of places where it's not the television channel. Yeah. I'm seeing tons and tons of examples of free form as one word. Yeah, tons of.
Yeah.
Okay, let's assume it can be one word. Okay. Change those things. So, okay, but that means that it makes it possible. So what really is it? It's free form.
I mean, we could just do free form.
I'm thinking about that. See, it's kind of like what is. What kind of part of speech is that? Is that a descriptor of what's in there? Or is it, you know, free form evaluate? Is it free form interpret? What's an example? I mean, it's. It's a two expression, basically.
Right, right. I was going to say we could. I mean, I think in. In some sense it's the. It's from Freeform. Right. Which. Yes, it's the. The slightly odd palindromic nature.
Yeah. I mean, but what it is. And maybe we should support this as a thing. It's kind of weird that. Okay, so this. Right. I mean that if I'm not mistaken, that's what we would have. I mean, normally input form is a generator. Unless used in two expression. It's a generator.
Yep.
Fff. Fff. Bit weird. Yeah.
What about free form interpretation?
What? Doesn't interpretation have a. A different interpretation, so to speak?
Well, yes, interpretation on its own, but it's. Well, I suppose if we could. We could call it free form interpreter. Right, but we have this problem with interpreter versus interpretation.
Well, no, but I mean, this. It is not. Interpretation is a noun which says, I am giving you an interpretation. What we want is to say interpret this. But it's not interpreted as free form. It's interpreted the free form.
So are you saying interpret? Freeform is the name.
I don't like it very much. Okay.
Brett, Nick, do you have any ideas? You. You've interacted with reform stuff before.
Would it make sense to call this control equal?
No, I don't think so. I mean, it's an amusing idea. I think that's a wet wag tailing the dog, so to speak.
I was gonna say. So one question is, is this something that we feel needs to have a shorter name.
No, not really.
Yeah. So, you know, could it be, you know, is it free form, input or.
That doesn't seem like the right part of speech because input is this thing that interactively requests input, right.
Parse, freeform or this close to your interpret free form.
Is it interpreted?
No, because that would be that it has been done past tense, so to speak. I mean, it's a command.
So why isn't this freeform interpreter. I mean, right. Interpreter takes an input and gives you a, you know, an expression. So.
Because normally interpreter has an argument there that says how to make the interpretation happen. I mean, it would be normally something like interpreter of free form. Actually, it's interpreter of what you're going to. What you're going to.
It would be interpreter of fish comma, you know, whatever. And here we're saying we're replacing that second argument with the prefix freeform is what was my argument.
Yes, I understand. I think it's not terrible. Let me think.
So, so here's a question which is not directly related to the name. You know, if you do equal bracket Paris, you say, is there a way to go from that to the control equal version of it and. Or vice versa.
What is the control equal. I mean, I don't understand what you mean.
Right.
I mean, so like, for example, if you do equal bracket, okay. Equal bracket fish versus control equal fish does convert to standard form or input form. Go between these.
I see what you're saying. So in other words, if I've got. In my code here, I've got this, and I say command shift N. What does it do?
Right. And right now it'll just. Well, right it. There's only one thing it can do which is converted to, you know, natural language of string fish and. Right. Control.
Why can't it make it into an actual control equals blob?
Because a control equals blob doesn't have a parse. And I would. I would. Right. I mean, convert to standard form. Right. Parses the input and then typesets it in the new form. Right.
The.
The full form of equal bracket fish is, you know, know, natural language of the string fish.
Yeah. So whatever the. I mean, that could have a.
And. And if you do convert to standard form on. On that control equals there, it will disappear because control equals only exists in notebooks. And when you write send it to the kernel, it's replaced with its interpretation.
Okay, so if I do command shift N on this.
Yep. It's now the entity.
Yeah. Okay. So we'd Want the same behavior, wouldn't we?
Well, no, because. Because control equal already ran out to Wolfram Alpha and. And found. Right, right. There is an interpretation inside of the control equals, which is not inside of the equal bracket fish.
I see, I see. So you're saying.
Because equal bracket also works in a standalone kernel. Right?
Yeah, I guess I get it.
Right. The whole point was to be tweetable. Right.
That was a long time ago.
I mean, as far as Brett's comments, I think there's nothing wrong with having some gesture to go back and forth between equal bracket and control equal.
Right. It can't be convert to a raft. A raft or something.
And this might be especially useful for the last point in the agenda that you haven't gotten to yet, and that is that, you know, if you type equal bracket Paris, you might care which Paris you mean.
Sure.
Right.
I mean, and that's partially why I'm wondering is because, you know, if you're saying, you know, I'm interested in cities instead of people or something, then you're.
On a slippery slope and you shouldn't be using this.
Right.
This is for dead obvious stuff. Okay. If I'm typing, you know, 3 meters per second, well, that was a bad situation there. But, but let's say I type 3 meters per second. I feel pretty confident that's going to parse.
Yep, that definitely should. If it doesn't, I will. I will be extremely surprised and disappointed.
How do I get.
So you. You need to. To. To go to the, to the section called Control equal parse and evaluate the first cell in there. And then this will be live.
Where. Where is that section?
Right there. And then the first cell in that section. Yes. And now if you go and evaluate that, it will do what you expect it to.
Okay.
Now if you did now if you add a slash, slash, hold in there, right. You will not have the interpretation because you'll just have the expression that's ready to go out to the server.
Give me a precedent. If we just called this freeform, Give me a precedent. Is that the right way around? The wrong way around? Do we have any precedent for that? I mean, if we say regular, I feel like, you know, that that's saying this is a regular expression.
I mean, the closest thing I can think of, you know, in terms of being a little bit unusual in terms of part of speech is like placed. But I don't think this is, you know, that analogous.
Okay. What would the documentation say? Free form of string represents. A piece of input to be interpreted as in Free form to be interpreted as free form input.
It interprets it as freeform input not represents something to be interpreted.
Right.
Right. It evaluates right away. It's not sort of a thing. And sorry, I know you said you don't want the hyphen, but I'm just looking at various things and I'm seeing hyphens everywhere.
Well, I found two that I'm seeing lots of places that don't have hyphens, so.
Oh, interesting.
Okay, But I don't think we want free form like standard form, probably. See what I'm saying? If we said free form hyphenated, then it would be like standard form will be a form like standard form and it would, I think, be confusing because then people will do slash, slash, free form and it won't work. Put it.
Could we have a function freeform that would take an arbitrary expression and convert it to natural language?
We could have maybe. I mean, it's kind of like spoken form. Okay, so the options are three, form a new kind of form. But that doesn't really help us in terms of what, you know, then we have to have from freeform or. But we then could certainly have to expression.
Right.
Of string, comma, freeform. I wonder whether that's really going to work. I mean, we have, we, I guess we have free form, you know, things like tech form and so on. Right.
Although all those things are actual forms.
I know, but this could be a form too.
In principle, it's almost like free form form.
But I, I, I mean, it would.
Be useful for LLMs. It's what we know. We, we, we need something which is a kind of linguistic representation of just stuff we have. I don't know how linguistic we need it to be. I mean, the LLMs understand our language.
Yeah, sorry, I didn't mean to create a big diversion, but okay, I was just pointing out.
Okay, fair enough. I mean, free form has the advantage that I can imagine people using it, I think provisionally. We should try calling it free form with a string there and says, you know, takes string as free form input and interprets it and attempts to interpret it. I mean, I can imagine people want to do freeform, slash at and then a list of strings. I don't think that's completely crazy. I'm a little concerned about this. But let's try it and please, let's make sure, What am I saying? Let's make sure that we have the, you know, some appearance thing, some input ligature type thing to change the appearance as you're typing it. Makes sense, Lou.
I understand what you're saying. Yes, I'll convey that to John.
I mean, what we. I, I think that's a question we need to pass on to John.
Yeah, I know, but that's part of the user assistant story and so on. Yeah.
Right. And so then there's, so then, you know, what, what, what should the typeset form be? Right, so that free form of string there, if you convert that to standard form, should that stay as free form of string or should that convert to equal bracket of string?
I think it should convert to equal bracket.
Ok, what if you do? If what if you convert to input form, should we still use equal bracket?
I think so.
Okay.
Only full form would stay as free form. Okay, I think. Okay, next topic. Oh, my gosh, the binomial topic.
Yes.
Great. And we have no Professor Moriarty here. Right. Remember that.
Okay, so right now we have two versions of binomial in the prototype build. So we have binomial, which is Basically the version 1 through versus 6 guy, and symmetric binomial, which is mostly, you know, which is basically the newer guy. Right. So, you know, the thing we're currently calling binomial in prototype preserves the, I guess you call it the Pascal identity for all nnm, but violates the symmetry rule for negative integers. And, you know, that's the one that Knuth and some folk insist is right. Symmetric binomial sort of goes the other way. It preserves the symmetry rule for everything, but it violates the, the symmetry. The, the, sorry, the Pascal identity at M equals N equals zero. And you know, this is, you know, now that we've done more research, you know, I can, you know. Right. This goes back to Camille Jordan. This is not some, you know, rogue definition that we came up with. And, you know, other math software has.
Been, Look, I think this is what we should do. I do not think we should change. You know, I think a lot of other people have, based on their definitions on us, I don't think we should change what binomial does. Has been doing since version seven.
That's exactly where I was headed, that we should add an asymmetric binomial for the Knuths of the world and, well.
Maybe we can give it a better name than asymmetric, but why don't we say what's good about it, not what's not good about it, so to speak. Okay, but that's what I think we should do.
All right, so better name than, than asymmetric binomial. But.
Why do we Actually need this.
Other function because Knuth comes and complains and Bill Gospel come and complain.
Many people, you know, that is. That's a vocal, you know, look, special functions.
How many of the complainers are under the age of 75? You're gonna push a new function for this?
I think there's enough reason to think that that's a desirable. Look, special functions are matters of convention, and there is a convention that I think we should respect that people have had doing it the way Don Knuth thinks it should be done. It's all convention, right? We don't need any of these things. We could just say it's hypergeometric, you know, generalized hypergeometric, whatever.
It's all. It's all convention. But the one we're following is a better version of what's the.
We're not proposing to change the one we're following. We're proposing to leave the one that we're following right now and add a function to deal with the other convention. All right. Okay. That's what we're proposing to do.
Will it.
Will it at least be restricted to integer inputs?
That's a good question.
Easier to justify that way.
What's the advantage of that?
It's then very clear that we've put it in to satisfy.
No, no, that's not fair.
Okay?
That's not fair. That's irrelevant and not fair.
It won't be fair when I hit that age bracket. Until then, it's fair.
Okay, I, I don't believe in that logic, Okay? I think the issue is there's, you know, it's a valid, reasonable definition that a bunch of people support. It happens that, you know, I mean, I don't know what the full age distribution of everybody working on combinatorics is, but I believe there are lots of young people, in fact, I know some of them working on combinatorics. We don't, you know, they have not been pushy enough to voice themselves, you know, vociferously, so to speak with us. But I don't think we should assume anything about the age distribution of binomial coefficient users. I think it's kind of an amusing concept, but I think it's not, you know, not relevant.
I have a question related to this. I, I actually don't know the innards or what happens. What happens with multinomial in these edge cases?
I don't know. That's a good question.
I mean, does it even support non integers? I imagine it does.
It does. And it, I mean, it is following at the present. Time, it's following binomial. And we sort of made the conscious decision of we're not going to worry about. About those edge cases. Right. Where we're just. So. So in that sense, keeping binomial the same sort of solves the problem of. What about all the other functions? They'll just keep doing what they're doing.
Okay. And. And Gamma, I guess, has a singularity there anyway.
Yeah. Right. I mean, Right. The.
Right.
The pro. Right. I mean, there's no gamma to worry about. Right.
I mean.
Right. The point is that we have a cancellation of gammas in these points and.
Okay. Yeah. I guess I was misleading myself, thinking of what factorial would do. Okay, sure. So. All right.
I'm sorry, I can't help the. The. This is such a tangled mess. You know, I. I just remembered that the, you know, the villain of some Sherlock Holmes stories is certain Professor Moriarty.
Yeah.
He had written a treatise on the binomial theorem. Right.
Oh, I. I did not know or remember that.
Oh, no, I. I knew where that was from.
There we go. Yeah.
Well, with its own Wikipedia page.
Yes. Okay. Moriarty. What's that?
I said, please tell me we don't need a third one.
Moriarty. By no means. Who has anything new to say about the binomial theorem at this late date? And here we are, another 50 years on discussing the binomial theorem in effect yet. Okay. All right. So the question is, what special properties does the Knuth binomial have? You know, it would be an irony if we were to call it Knuth binomial, but I don't think that's historically correct.
Actually.
If you open the source.
Which one?
The. The Source. Rough. Page 4. Binomial. Then I've added some notes about. Some tentative notes about, you know. Right. So. Right. So it can be defined in terms of a limit. Right. It's. These are the main things I know about it and how it differs from the. From the. From the symmetric one.
Can I ask the history for a second? Is it in fact validly called the Knuth binomial, or did it appear in, you know, ancient Indian works or something?
No, there.
There's. Unfortunately, I can't remember the direction this goes. New himself wrote something, I believe, in the 90s, where he gave a name, and I think it was something like Roman binomial. But the thing is, I don't know which of the two flavors that is. And the name refers to a binomial.
The Roman binomial postdates the art of computer programming.
So what I Mean. But which one is.
Well, look.
Yeah.
The question is which one is that because Roman was a name.
Have this something completely different. Yeah.
Yeah, it's.
Are you sure it's different?
Yes.
Not just different in that edge case.
Right. Well, just look at that. You know, at equation two. Right. It for. On integers, it gives a fractional result which is not something either binomial.
Okay.
One over. What is this N plus one thingy? Roman factorial. Okay. It says the Roman coefficients are. Oh, sorry, I was reading.
Sorry, go ahead.
It says whenever the binomial coefficient is defined, the Roman coefficients agrees with it. That. That's what I was sort of remembering.
Right. I. But. But look at that definition. Right. It's all non. Negative. Oh, I see.
Oh, I see what you're saying.
Yeah. When.
When. When there's a negative, the binomial coefficient traditionally isn't defined or historically going back far enough. Okay, so Roman is not the right name here.
No.
Okay, can we do the history here? I mean, and blah, blah, blah. Okay. I think a lot of people are basing what they're doing on what we've done. So I mean, I think. Okay. In art of computer programming, when did Don first use the binomial defined in the way that he now says it should be defined? Anybody know or can also.
I mean, there's a good chance it goes back to the 60s or 70s. Early.
Well, I mean, I know it's the late 60s or early 70s. I don't know where specifically.
Who did this generalization, but it's in the original.
It is in the, you know, in the quote unquote original volumes in the pre lo.
Daniel Lo wrote about it. And if he didn't originate it, he'll credit whoever did. I think this is early. Yeah, 92 is what I thought.
Not that early. After we had binomial coefficients.
Yeah.
Yeah. That was a person at mit. Okay, well, what's all this stuff? This is. This thing is named after Steve Roman. Okay. So where can somebody. I'm not going to go through this in real time.
We. We don't have the liberty of renaming the current one the Roman binomial or lobe.
No, we're not going to.
Yeah, I. I know. I'm saying it might be unfortunate, but.
But, but it's all. I mean, just do. If this.
When this person is calling it Knuth coefficient. Is that the. Is that the thing that Don is arguing that our binomial b.
No, not at all.
Clear. Okay, so we got to clarify this. Okay.
We.
We've got more History to do here. If it is the case these guys.
Were at school together. Logan, Robert. If you look at the references.
Okay, not that important.
Oh, no, I'm sorry. 89. I thought I saw 69.
That says 79 there. Except it says to appear in 92 here. So clearly this person continued to work on this.
So they. Yeah, so Roman. I'm sorry, Loeb was 89. Romans 79.
All right.
But.
Right.
Basically, you know, both conventions have been, you know, sort of, I think, independently developed at various points.
Okay, well, we got two choices. Okay. One is let's try and figure out the history as best we can. If this convention was really introduced, seriously, by Don Knuth, then I think there's an argument we should just call it Knuth binomial. If it wasn't, but predates it by a hundred years and it was widely used before Don picked it up. In addition, if we find out that. That if we look at Don's own work, that he was not consistent in what he used, then that's again, a complication. Okay. How did he come to make this, you know, to make this choice? Did he make it on his own or did he make it based on some existing literature? Okay. And in terms of what. What is the identity that he is most concerned about preserving?
It's the middle one there, the Pascal identity.
Which one? This one here?
Yeah, yeah.
The other possibility will be call it Pascal binomial.
Yeah. I wonder if he's hiding an identity. Knuth, that he's hiding that he is actually Moriarty.
Hiding an identity. Yeah, very funny. The. So this identity here, I don't think this is totally ridiculous. Pascal binomial. I don't think that's ridiculous. If its main property is that it preserves the Pascal's triangle identity. Yeah, The.
The only issue I raise is that both of them seem to do that, and I think maybe eminent zero. Well, no, because there's no. I mean, look at what happens when eminence are zero. We have negatives in the couple of numerators.
No, look, it either is true for the symmetric binomial or it isn't. I'm thinking it's not true, this identity.
It's true, except M Bengals n equals 0, as I wrote in the agenda.
Wait, wait a sec.
Binomial page.
I wrote, you know, the symmetric binomial page.
You already opened it. It's not in. It's not committed to cvs. Right.
What is the Pascal identity of these that I'm looking at?
It's the one that says you can do it as the.
Right.
The.
The Pascal identity is the one that says. Right. You can decompose it into a sum of 2n minus 1. Binomial.
Yes. So each element in the Pascal triangle is the sum of the elements.
Yeah, yeah.
But my point is the Pascal triangle does not have negatives. Right.
But that. That's his point. That. Well, it. It ought. I mean, it could be extended.
Right.
It's just. We don't draw it.
But.
So.
Right. I mean, yes. Newth is very insistent that the fact that it's violated at m Equals n equals 0 is terrible.
And what is his rhetoric?
I'm starting to see your point. So. So if we call this general form the Pascal identity, say, then this preserves the one he wants. Preserves it. So calling it the Pascal binomial is plausible.
Yes.
Okay. I think it's kind of nice because it reminds her of Pascal's triangle, and it doesn't, you know, which is, after all, the point here somehow.
Yep. Right. It's extending to the zero and negative rows of Pascal's triangle, which are kind of hard to draw.
But I mean, it's a little weird that Pascal himself never thought about this. So let's do the history. Let's find out if this is a Don Knuth creation history. It is. Let's name it after him. Okay. If it isn't most likely, let's say Pascal binomial, and let's plan on having this separate function that, you know, has this identity. Seems reasonable. Seem reasonable.
So are we sure that we don't want to change binomial?
I mean, is that we are not going to change binomial because Story. We're not changing it.
Why?
It's off the table.
Yeah. Because last time when you met, that was a decision we made.
So that's what I know. It's wrong.
Okay, good. I kind of agree with that. Okay. I'm just making sure. So what we need is the asymmetric.
Or we're going to call it something other than asymmetric.
Yeah, sure.
Yeah.
Either Knut Knuth binomial or Pascal binomial, depending on the history.
And. Okay, so we should say it's relatively simple. So we should say aim to have it in 14.1.
We absolutely will have it in 14.1.
Okay, perfect. Got it.
But we really want a resolution of what's going to be called as soon as possible.
Yes.
And I'm. I'm going to, you know, history is hard, guys, in case you haven't noticed that. Who's going to Try and track this down. First place to look is in Don's own books because he had, does a very good job of history. So can we please. Did somebody already look that up?
I, I, I've looked it up in, in the, in the. What is it? It's Graham Newton Petashnik. I don't have a copy of the Art of Computer Programming.
Well, I certainly do.
It's in library.
I think it's in the library, yeah.
Other than it tell me what volume. I certainly have a copy.
So I don't, I don't know what volume it is specifically, although I'm free.
We can ask him.
Not one.
Which was written somewhat later, but doesn't matter. Let's find out what he says. Okay, let's. I think that's semi numerical algorithms. I don't know whether that's really the right place for that. Any case, let's find out. Please. Can we find this? And I will ask Don if we can't otherwise find it. All right, can we continue, please? I think we have a reasonable resolution here. I think it's either Pascal binomial or binomial. Okay. Personally, I wouldn't mind seeing us name something after K. I think he's invented a lot of stuff.
That's a fair point. That's a fair point.
And I do think that, you know, so long as it's not ahistorical, you know, if he's the one who promoted this definition, perhaps even introduced it, I think that's a reasonable thing. Now he might say Pascal introduced it and he's partly right, except Pascal never considered this case of beyond drawable triangles. So it's kind of, you know, it's moot. He might have introduced the identity, but without thinking about that case.
Yeah, I think analytic continuation may have come a little after him.
Just a little became a bit like Riemann. Right.
Well, Oiler too, I think, was doing similar.
Well defined the gamma function. So he must have had some notion of that. Yeah, It's a hundred years later, basically.
Okay, yeah. I was thinking 80, but yeah.
All right. Consistency and order functions. Oh my gosh, this sounds very painful.
I don't think the, I don't think the first one is particularly painful. The second one is certainly more fact intensive.
I have another meeting I'm supposed to go to very soon, so let's. What is this? Right. Decide what largest and smallest should apply to. Yeah, I mean like if we have elephant and mouse, should it apply to that? No.
So let's let, Stephen, let's not try to rush through this. We can do the first. I can. We can do the first one pretty quickly.
All right, let's look at the.
Just save this.
Okay.
Right. So. So sort of alphabetic order, you know, insists that its argument be strings.
You know what? We can't do this this fast. This is going to be complicated. And these things are both related, I think. So I think we should wrap up for today.
Okay.
All right.
Let's get this binomial thing really resolved. Okay. Let's go. Go look at the history. See if you can convince me about the history. And really start with Don's own rendering of the history. Okay. Look at anybody else who's. If there are other places where this history has been studied. Okay. All right, Good stuff. Thanks a lot, everybody. See you later.
Thank you.
Bye.
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






