- From: Je'ro^me Euzenat <Jerome.Euzenat@inrialpes.fr>
- Date: Wed, 26 Apr 2000 14:50:38 +0200
- To: www-math@w3.org
Hi all, I have one suggestion about the opportunity to qualify apply in MathML. Remark 1: First note that these qualifiers are used for different things: - iterating an operation on an intentionaly defined set of objects (bvar, lowlimit, uplimit, condition and interval; - defining the context of the operation (for degree -- only appliable for moment, and not to be misused for diff and partialdiff, -- or logbase -- only applyable to log -- as I understand them). Maybe, distinguishing them could be useful. Remark 2: Meanwhile, there is a need for a general "iterate" primitive (maybe not the best name). Which iterate any operation on variables, like in the way apply does it with qualifiers (4.2.3.2). Such an operator would have the advantage of caring of the iteration in place of the operator itself. As an example, it is perfectly legitimate to apply an iteration to: - boolean and/or; - arithmetic plus/times. There is a special sum/product couple just for this. But if you start refining plus/times for a particular structure (say quaternions), will you be allowed to use it with the apply+qualifiers or will you have to refine ALSO the sum/product couple? This is not making extendibility easier. - set union/intersection (OK: any boolean algebra operator); - statistic mean; - some kind of declared function; - some kind of fn; - vectorproduct; - even set/vector/list/matrix construction can be defined that way; but none of these is stated in 4.2.3.2. Moreover, appart from a few of them that should be taken as particular cases instead of the rule (viz. int, limit and diff), all these operations can be rendered the same way(s). Remark 3: In general, when it is possible to iterate on a set of values, it is possible to use any qualifier. For instance, the examples given for the forall could be defined with a uplimit: <apply> <!-- the second forall example of 4.2.3.2 --> <forall/> <bvar><ci>x</ci></bvar> <uplimit><cn>9</cn></uplimit> <apply><lt/><ci>x</ci><cn>10</cn></apply> </apply> <apply> <!-- a tautology --> <forall/> <bvar><ci>x</ci></bvar> <interval closure="closed-open"><cn>0</cn><cn>10</cn></uplimit> <apply> <forall/> <bvar><ci>y</ci></bvar> <uplimit><ci>x</ci></uplimit> <condition><apply><neq/><ci>x</ci><ci>x</ci></condition> <apply> <neq/> <apply><minus/><ci>x</ci><ci>y</ci></apply> <cn>0</cn> </apply> </apply> </apply> (\forall x\in\[0 10\[, \forall y\lt x, s.t. x\neq y, x-y\neq 0) The opportunity to use one of these qualifiers depend only on the structure of the underlying value set (ordered for up/low limit and interval). Why restricting them to this. Remark 4: It is a pitty that the begining of 4.2.3.2, evokes the presence of an interval (just before the second example) and that this interval is not specified with the interval construction (but with lowlimit/uplimit). Appendix: some example of iteration <lambda> <!-- define the powerset of E (by iterating union) --> <bvar><ci type="set">E</ci></bvar> <iterate> <union/> <bvar><ci>e</ci></bvar> <condition> <apply> <subset/> <ci>e</ci> <ci>E</ci> </apply> <condition> <set><ci>e</ci></set> </iterate> </lambda> <lambda> <!-- define the powerset of E (by iterating set) --> <bvar><ci type="set">E</ci></bvar> <iterate> <set/> <bvar><ci>x</ci></bvar> <condition> <apply><in/><ci>x</ci><ci>E</ci></apply> </condition> <ci>x</ci> </iterate> </lambda> I hope this can help. Best regards, -- __ Jérôme Euzenat / /\ _/ _ _ _ _ _ INRIA Rhône-Alpes, /_) | ` / ) | \ \ /_) (___/___(_/_/ / /_(_________________ 655, avenue de l'Europe / 38330 Montbonnot St Martin,/ Jerome.Euzenat@inrialpes.fr France____________________/ http://www.inrialpes.fr/exmo
Received on Wednesday, 26 April 2000 09:00:26 UTC