Michael, James,although I still need to think about it, it appears acceptable to me. Three comments:
- I would prefer to have a single child that would encapsulate all conditions; it would feel muuuuch safer (I guess a logic1#and would be enough in most cases and that is the semantic that is meant).
- isn't there a systematic translation from the newer case to the older? I guess this is of interest for all.
- can you tell more about possible dangers of this extension? I don't see any thus far but there must be some.
- Do you really need extra symbols for that? (the new "allowed encodings" seem to be only invalid with the former encodings). I don't like arith7!
paul Le 23-mars-09 à 08:38, Michael Kohlhase a écrit :
Dear all, I promised to summarize the proposal I announced a couple of days ago (see http://kwarc.info/kohlhase/submit/mkm09-MMLOM3.pdf for a longer version). I will use the j-th Lagrange base polynomial of order k (see e.g. http://en.wikipedia.org/wiki/Lagrange_polynomial) as an example, as the integration examples we use in the paper are wrought with other complexities. The polynomial is represented as $Pi_{i=0,i\ne j}^k\frac{x-x_i}{x_j-x_i}$ where j and k are free in theexpression, and only i is bound. MathML2 would probably represent this as<apply> <product/> <bvar><ci type="nat">i</ci></bvar> <lowlimit><cn>0</cn></lowlimit> <uplimit><ci>k<ci></uplimit> <condition> <apply><ne/><ci>i</ci><ci>j</ci></apply> </condition> <apply><divide/>...</apply> </apply> In OpenMath we would have to represent this as <OMA> <OMS cd="arith1" name="product"/> <OMA> <!-- j, k (free), new dummy variable z (bound) --> <OMS cd="set1" name="suchthat"/> <OMA> <OMS cd="interval1" name="integer_interval"/> <OMI>0</OMI> <OMV name="k"/> </OMA> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR><OMV name="z"/></OMBVAR> <OMA> <OMS cd="relation1" name="ne"/> <OMV name="z"/> <OMV name="j"/> </OMA> </OMBIND> </OMA> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR><OMV name="i"/></OMBVAR> <OMA> <OMS cd="arith1" name="divide"/> ...expression in x, j (free) and i (bound) ... </OMA> </OMBIND> </OMA> James and I don't like that this has two binds and two unrelated dummyvariables, whereas the original mathematical representation on Wikipedia only had one. Of course, we could have used i in the first one insteadof z, in which case there would still be two binds with two different bound variables. To remedy this situations (and others) James and I propose to extendOpenMath binding objects by allowing more than one "argument": A bindingobject would have the form bind(O,v_1,...,v_n,A_1,...A_n) rather than the current. bind(O,v_1,...,v_n,A) Correspondingly the XML encoding would extend the content model of the OMBIND object to omel,OMBVAR,omel+ instead of the current omel,OMBVAR,omelSo we are proposing a liberalization of OpenMath objects: all OpenMath2 objects are extended Objects and retain their original meanings. But cannow define more mathematical symbols and represent more objects.In our example, we would propose to develop a new CD (e.g. arith7; I donot remember that is free) with a new symbol productcond. Which could have the following description <CDDefinition> <Name>productcond</Name> <Description> The productcond sysymbol is a ternary binding operator that takes a bound variable and three arguments. The first argument is a set, and the second one an expression in the bound variable. Together these determine the range of the bound variable: The binding object constructed via the productcond symbol is the product of all instances of the third arguments with all those members of the set in the first argument that satisfy the expression in the second argument. </Description> ... some examples ...... An FMP that defines this product, e.g. a recursive definition ...</CDDefinition>With this symbol, we can then represent the Lagrange Base Polynomical as<OMBIND> <OMS cd="arith7" name="productcond"/> <OMBVAR><OMV name="i"/><OMBVAR> <OMA> <OMS cd="interval1" name="integer_interval"/> <OMI>0</OMI> </OMA> <OMA> <OMS cd="relation1" name="ne"/> <OMV name="i"/> <OMV name="j"/> </OMA> <OMA> <OMS cd="arith1" name="divide"/> ...expression in x, j (free) and i (bound) ... </OMA> </OMBIND>Note that this is a very direct translation of the TeX representation ofWikipedia. In particular, we only have one bound variable. We argue that OpenMath should give authors the freedom to express the mathematical objects directly and succinctly and intuitively as possible. We argue that even though this is an extension of OpenMath binding objects, it is conservative (all OpenMath2 objects stay validand retain their meaning). Moreover, as the example above has shown, itis simple to define new symbols (probably in new CDs) that make the representation in OpenMath simpler and more intuitive.We should extend OpenMath to gain this freedom and extend the usabilityof OpenMath. Michael-----Original Message----- From: Michael Kohlhase [mailto:[email protected]] Sent: Wednesday, March 18, 2009 9:11 PM To: David Carlisle Cc: Robert Miner; [email protected] Subject: Re: Chapter 4, pragmatic2strict translation, condition David Carlisle wrote:Are you seriously suggesting that the example we use in the MathML3specto explain how to translate the condition element is malformed?yes, it's certainly a very bad example to use to illustrate mappingtostrict or OM, as it leaves much unspecified. Nowhere does it statethatit's over the reals or, as you say, the direction of integration. Now perhaps we want to say that integration defaults to the reals which would be a reasonable thing to say but obviously that would be specific to int and not something applicable to an arbitraryfunction.all of these are true, but irrelevant to the discussion at hand. I amall for changing the example, we have too many integral examples as itstands. Maybe to the Lagrange base polynomial one below?<bind> <apply><csymbol>productcond</csymbol><apply><csymbol>integer_interval</csymbol><ci>0</ci><infty/></apply></apply> <apply><ne/><ci>i</ci><ci>j</ci></apply> <apply><divide/>...</apply> </bind> this is on the face of it shorter, but structurally it's far more complicated, and frankly weird. using a constructed term as thebindingsymbol is hardly an intuitive or natural construct. Actually Istruggleto read it at all. You have a bind without a bvar, presumably you intended to bind i so there should be a <bvar><ci>k</ci></bvar>Sorry about the missing bvar, it should actually be <bvar><ci>i</ci></bvar> OK, I agree that the complex binding constructor takes a bit getting used to, therefore I had added the alternative form. which you do not quote (this time with the bvar) here to focus the discussion: <bind> <csymbol>altproductcond</csymbol> <bvar><ci>k</ci></bvar> <apply><csymbol>integer_interval</csymbol><ci>0</ci><infty/></apply> <apply><ne/><ci>i</ci><ci>j</ci></apply> <apply><divide/>...</apply> </bind>then you construct a complex binding operator by applying productcondto a set, then use bind to apply that to two children, a predicateandI am a bit frustrated here, did you even read the first e-mail and thean expression (something that isn't allowed in OM2's OMBind or the current draft of mathml's bind) This is structurally very obscure, hard to read and incompatible with OM2 isn't it?proposal we made there? Let me re-iterate the tail of the original e-mail: We propose to1. to adopt the generalization to n-ary binding constructions in OpenMath and strict MathML 2. to extend the MathML CD group with the necessary xxxcond symbols for the big operators 3. to elaborate the p2s translation in the MathML3 spec to make use of these.In essence this proposal is to recognize the first-orderrepresentationof MathML2 as valuable and give it a meaning rather than relegate itto"pragmatic MathML" and translate it away.Making the extension to binding objects (generalizing both current MathML3 and OM3) is at the center of the proposal, and that is what Iwould like to talk about in this series of e-mails. And once you think about it a bit, this is structurally not sooo weird. <apply> allows anoperator and an arbitrary list of arguments (unary, binary, ... operators), so <bind> could allow bvars and an arbitrary list of arguments (unary, binary, ... binding operators). It would in fact be more symmetric than the state we have now. And I think that the examples we have shown above show that this is quite natural --- but I agree a change from OM2, but one that is conservative, since all the OM2 objects stay the same.David has said in an earlier mail (quoting from memory) "I willopposeany p2s translation that does not go via domainofapplication". And I basically agree with this statement, since MathML2 said that all qualifiers are special cases of <domainofapplication>. But I thinkthatour the representational style James and I propose is not in contradiction to that. As the example above shows, and in all the examples James and I looked at, the "condition" argument to the new binary binding operators is just a domain of application expressedvia abound variable shared with the binding scope.James and I are currently working on the proposed CD extensions, butIwould have time to make the necessary changes in the spec in thecomingweek. Since I am stalled until we have resolved this issue, I wouldliketo come to a conclusion soon.Let me re-iterate, I would like to come to a (positive) conclusion about this soon, so that I can continue working on the spec. MichaelThat is not something I can accept in a specification, I think thatweshould have a definite set of rules that assign meaning to fullMathMLexpressions.If you have a set defined by restriction from some unspecifieduniversalset (which was the case here) then the expression has no meaningunlessyou supply a universal set from somewhere. For int it may bereasonableto assume the reals but in general this requires domain knowledgeaboutthe function being encoded that we can't put in the spec. Because ofthenature of mathml qualifiers it's pretty much impossible to make such constructs invalid mathml.If you agree in principle,No, this is just too weird. 3. translate all the qualifiers (except for condition) to domainofapplication; in particular uplimit/lowlimit pairs into intervals and apply the binding csymbol to it making a complex binding symbol using a complex binding operator makes the result incredibly hard to understand and quite unlike any normal mathematical presentation,alsospecial casing condition causes equivalent expressions to betranslateddifferently. Also It requires a new symbol in each case, which meansthatyou can't translate a general symbol without inventing new Cds on thefly to hold your xxxcond terms. min (x^2) as x ranges over |R is 0 and could be written as(abbreviated)<apply><min/> <bvar><ci>x</ci></bvar> <condition><apply><in/> x <reals/> </apply></condition> <apply> x^2</apply> </apply> or <apply><min/> <bvar><ci>x</ci></bvar> <domainofapplication> <reals/> </domainofapplication> <apply> x^2</apply> </apply> which are naturally (and explictly) equivalent formualtions. If I understand your 8 point plan, the first ends up as <bind><csymbol>mincond</csymbol> <bvar><ci>x</ci></bvar> <apply><csymbol>in</csymbol> <ci>x</ci><csymbol>reals</csymbol></apply><apply> x^2</apply> </bind> or perhaps you _have_ to construct a complex binding symbol byappyingmincond to some (inferred) domainofapplication? either way the resultdoesn't look like the translation of the second form which is, Ithink<bind> <apply><csymbol>mincond</csymbol><csymbol>reals</csymbol></apply> <bvar><ci>x</ci></bvar> <csymbol>true</csymbol> <apply> x^2</apply> </bind> (using a condtion of true, but perhaps you'd instead use a different symbol from mincond that constructed a binder that dodn't require a condition, but that just increases the proliferation of generatednames.David_______________________________________________________________________ _The Numerical Algorithms Group Ltd is a company registered in Englandand Wales with company number 1249803. The registered office is: Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom. This e-mail has been scanned for all viruses by Star. The service is powered by MessageLabs._______________________________________________________________________ _-- ---------------------------------------------------------------------- Prof. Dr. Michael Kohlhase, Office: Research 1, Room 62 Professor of Computer Science Campus Ring 12, School of Engineering & Science D-28759 Bremen, Germany Jacobs University Bremen* tel/fax: +49 421 200-3140/-493140 [email protected] http://kwarc.info/kohlhase skype: m.kohlhase * on Sabbatical in Auckland (NZ) until VII/2009 ----------------------------------------------------------------------_______________________________________________ Om3 mailing list [email protected] http://openmath.org/mailman/listinfo/om3
smime.p7s
Description: S/MIME cryptographic signature
_______________________________________________ Om3 mailing list [email protected] http://openmath.org/mailman/listinfo/om3
