Artifact edd91766032a0f9c232ef3c2ea01217feb77a98bd7413d3e51d2b106940be27b:
- Executable file
r38/packages/mathml/examples.om
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 45126) [annotate] [blame] [check-ins using] [more...]
% Description: This file contains a long list of examples demonstrating the abilities of % the translator. Most of these examples come straight from the CDs. They % were used during the development of the interface and should all be correctly % translated into MathML. % % Version 17 April 2000 % % Author: Luis Alvarez Sobreviela % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% om2mml(); <OMOBJ> <OMA> <OMS cd="arith1" name="plus"/> <OMV name=f/> <OMV name=d/> <OMA> <OMS cd="arith1" name="plus"/> <OMI>1</OMI> <OMF dec=1e10/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd=fns1 name=lambda/> <OMBVAR> <OMV name=x/> </OMBVAR> <OMA> <OMS cd="transc1" name=sin/> <OMV name=x/> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd=fns1 name=lambda/> <OMBVAR> <OMV name=x/> <OMV name=y/> </OMBVAR> <OMA> <OMS cd="arith1" name=plus/> <OMV name=x/> <OMA> <OMS cd="transc1" name=sin/> <OMV name=y/> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="arith1" name=plus/> <OMV name=x/> <OMA> <OMS cd="transc1" name=sin/> <OMV name=x/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="relation1" name="leq"/> <OMA> <OMS cd="arith1" name="abs"/> <OMA> <OMS cd="transc1" name="sin"/> <OMV name="x"/> </OMA> </OMA> <OMF dec="1.0"/> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="not"/> <OMBIND> <OMS cd="quant1" name="exists"/> <OMBVAR> <OMV name="x"/> <OMV name="y"/> <OMV name="z"/> <OMV name="n"/> </OMBVAR> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="relation1" name="gt"/> <OMV name="n"/> <OMI> 2 </OMI> </OMA> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="plus"/> <OMA> <OMS cd="arith1" name="power"/> <OMV name="x"/> <OMV name="n"/> </OMA> <OMA> <OMS cd="arith1" name="power"/> <OMV name="y"/> <OMV name="n"/> </OMA> </OMA> <OMA> <OMS cd="arith1" name="power"/> <OMV name="z"/> <OMV name="n"/> </OMA> </OMA> </OMA> </OMBIND> </OMA> </OMOBJ> % The following two examples show how the translator % can deal with matrices represented either in columns % or rows. The translator then converts matrices % represented in columns into ones represented in % rows. Mapping to MathML is then possible. om2mml(); <OMOBJ> <OMA> <OMS cd="linalg2" name="matrix"/> <OMA> <OMS cd="linalg2" name="matrixcolumn"/> <OMI> 1 </OMI> <OMI> 2 </OMI> </OMA> <OMA> <OMS cd="linalg2" name="matrixcolumn"/> <OMI> 3 </OMI> <OMI> 4 </OMI> </OMA> <OMA> <OMS cd="linalg2" name="matrixcolumn"/> <OMI> 5 </OMI> <OMI> 6 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="linalg2" name="matrix"/> <OMA> <OMS cd="linalg2" name="matrixrow"/> <OMI> 1 </OMI> <OMI> 0 </OMI> </OMA> <OMA> <OMS cd="linalg2" name="matrixrow"/> <OMI> 0 </OMI> <OMI> 1 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="M"/> </OMBVAR> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMA> <OMS cd="linalg3" name="identity"/> <OMA> <OMS cd="linalg3" name="rowcount"/> <OMV name="M"/> </OMA> </OMA> <OMV name="M"/> </OMA> <OMV name="M"/> </OMA> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMV name="M"/> <OMA> <OMS cd="linalg3" name="identity"/> <OMA> <OMS cd="linalg3" name="columncount"/> <OMV name="M"/> </OMA> </OMA> </OMA> <OMV name="M"/> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="limit1" name="limit"/> <OMF dec="0.0"/> <OMS cd="limit1" name="above"/> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="transc1" name="sin"/> <OMV name="x"/> </OMA> </OMBIND> </OMA> </OMOBJ> % This following example will show that the translator only % identifies the limit symbol of the limit1 CD om2mml(); <OMOBJ> <OMA> <OMS cd="fakeCD" name="limit"/> <OMF dec="0.0"/> <OMS cd="limit1" name="above"/> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="transc1" name="sin"/> <OMV name="x"/> </OMA> </OMBIND> </OMA> </OMOBJ> % The following two examples show how the translator % recognizes whether a symbol has a mathml equivalent % depending on the CD it comes from. % They both use symbol 'notsubset' but from different % CDs. Only one of them can be mapped to MathML % and the program distinguishes it by checking if % the CD given is the correct one on its table % om_mml!*. om2mml(); <OMOBJ> <OMA> <OMS cd="multiset1" name="notsubset"/> <OMA> <OMS cd="multiset1" name="set"/> <OMI> 2 </OMI> <OMI> 3 </OMI> <OMI> 3 </OMI> </OMA> <OMA> <OMS cd="multiset1" name="set"/> <OMI> 1 </OMI> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="set1" name="notsubset"/> <OMA> <OMS cd="multiset1" name="set"/> <OMI> 2 </OMI> <OMI> 3 </OMI> <OMI> 3 </OMI> </OMA> <OMA> <OMS cd="multiset1" name="set"/> <OMI> 1 </OMI> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="a"/> <OMV name="b"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="a"/> <OMV name="b"/> </OMA> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="b"/> <OMV name="a"/> </OMA> </OMA> </OMBIND> </OMOBJ> % Example of a symbol which has a MathML equivalent % but under another name. om2mml(); <OMOBJ> <OMA> <OMS cd="arith1" name="unary_minus"/> <OMI> 1 </OMI> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="logic1" name="not"/> <OMS cd="logic1" name="false"/> </OMA> <OMS cd="logic1" name="true"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMA> <OMS cd="fns1" name="identity"/> <OMA> <OMS cd="linalg3" name="rowcount"/> <OMV name="M"/> </OMA> </OMA> <OMV name="M"/> </OMA> <OMV name="M"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="linalg1" name="scalarproduct"/> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 3 </OMI> <OMI> 6 </OMI> <OMI> 9 </OMI> </OMA> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 3 </OMI> <OMI> 6 </OMI> <OMI> 9 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="linalg1" name="outerproduct"/> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 3 </OMI> <OMI> 6 </OMI> <OMI> 9 </OMI> </OMA> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 3 </OMI> <OMI> 6 </OMI> <OMI> 9 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="a"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="a"/> <OMS cd="alg1" name="zero"/> </OMA> <OMV name="a"/> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="a"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMS cd="alg1" name="one"/> <OMV name="a"/> </OMA> <OMV name="a"/> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="bigfloat1" name="bigfloat"/> <OMV name="m"/> <OMV name="r"/> <OMV name="e"/> </OMA> <OMA> <OMS cd="arith1" name="times"/> <OMV name="m"/> <OMA> <OMS cd="arith1" name="power"/> <OMV name="r"/> <OMV name="e"/> </OMA> </OMA> </OMA> </OMOBJ> % The integral symbols defint and int are ambigious as defined % in the CDs. They do not specify their variable of integration % explicitly. The following shows that when the function % to integrate is defined as a lambda expression, then the % bound variable is easily determined. However, in other % cases, it is not possible to determine the bound variable. om2mml(); <OMOBJ> <OMA> <OMS cd="calculus1" name="int"/> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="transc1" name="sin"/> <OMV name="x"/> </OMA> </OMBIND> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="calculus1" name="int"/> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="x"/> <OMV name="y"/> </OMA> </OMA> </OMOBJ> % Some calculus om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="calculus1" name="diff"/> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="x"/> <OMF dec="1.0"/> </OMA> </OMBIND> </OMA> <OMF dec="1.0"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="calculus1" name="partialdiff"/> <OMA> <OMS cd="list1" name="list"/> <OMI> 1 </OMI> <OMI> 3 </OMI> </OMA> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x"/> <OMV name="y"/> <OMV name="z"/> </OMBVAR> <OMA> <OMS cd="arith2" name="times"/> <OMV name="x"/> <OMV name="y"/> <OMV name="z"/> </OMA> </OMBIND> </OMA> <OMV name="y"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="integer1" name="factorial"/> <OMV name="n"/> </OMA> <OMA> <OMS cd="arith1" name="product"/> <OMA> <OMS cd="interval1" name="integer_interval"/> <OMI> 1 </OMI> <OMV name="n"/> </OMA> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="i"/> </OMBVAR> <OMV name="i"/> </OMBIND> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="not"/> <OMBIND> <OMS cd="quant1" name="exists"/> <OMBVAR> <OMV name="c"/> </OMBVAR> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="set1" name="in"/> <OMA> <OMS cd="arith1" name="divide"/> <OMV name="a"/> <OMV name="c"/> </OMA> <OMS cd="setname1" name="Z"/> </OMA> <OMA> <OMS cd="set1" name="in"/> <OMA> <OMS cd="arith1" name="divide"/> <OMV name="b"/> <OMV name="c"/> </OMA> <OMS cd="setname1" name="Z"/> </OMA> <OMA> <OMS cd="relation1" name="gt"/> <OMV name="c"/> <OMA> <OMS cd="integer1" name="gcd"/> <OMV name="a"/> <OMV name="b"/> </OMA> </OMA> </OMA> </OMBIND> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="logic1" name="implies"/> <OMS cd="logic1" name="false"/> <OMV name="x"/> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="minmax1" name="max"/> <OMI> 1 </OMI> <OMI> 9 </OMI> <OMI> 5 </OMI> </OMA> <OMI> 9 </OMI> </OMA> </OMOBJ> % The following examples belong to the multiset CD om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="implies"/> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="multiset1" name="in"/> <OMV name="a"/> <OMV name="A"/> </OMA> <OMA> <OMS cd="multiset1" name="in"/> <OMV name="a"/> <OMV name="B"/> </OMA> </OMA> <OMA> <OMS cd="multiset1" name="in"/> <OMV name="a"/> <OMA> <OMS cd="multiset1" name="intersect"/> <OMV name="A"/> <OMV name="B"/> </OMA> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 4 </OMI> <OMI> 1 </OMI> <OMI> 0 </OMI> <OMI> 1 </OMI> <OMI> 4 </OMI> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="multiset1" name="subset"/> <OMA> <OMS cd="multiset1" name="intersect"/> <OMV name="A"/> <OMV name="B"/> </OMA> <OMV name="A"/> </OMA> <OMA> <OMS cd="multiset1" name="subset"/> <OMA> <OMS cd="multiset1" name="intersect"/> <OMV name="A"/> <OMV name="B"/> </OMA> <OMV name="B"/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="multiset1" name="subset"/> <OMV name="A"/> <OMA> <OMS cd="multiset1" name="union"/> <OMV name="A"/> <OMV name="B"/> </OMA> </OMA> <OMA> <OMS cd="multiset1" name="subset"/> <OMV name="B"/> <OMA> <OMS cd="multiset1" name="union"/> <OMV name="A"/> <OMV name="B"/> </OMA> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="A"/> <OMV name="B"/> <OMV name="C"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="multiset1" name="union"/> <OMV name="A"/> <OMA> <OMS cd="multiset1" name="intersect"/> <OMV name="B"/> <OMV name="C"/> </OMA> </OMA> <OMA> <OMS cd="multiset1" name="intersect"/> <OMA> <OMS cd="multiset1" name="union"/> <OMV name="A"/> <OMV name="B"/> </OMA> <OMA> <OMS cd="multiset1" name="union"/> <OMV name="A"/> <OMV name="C"/> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="multiset1" name="subset"/> <OMA> <OMS cd="multiset1" name="setdiff"/> <OMV name="A"/> <OMV name="B"/> </OMA> <OMV name="A"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="implies"/> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="multiset1" name="subset"/> <OMV name="B"/> <OMV name="A"/> </OMA> <OMA> <OMS cd="multiset1" name="subset"/> <OMV name="C"/> <OMV name="B"/> </OMA> </OMA> <OMA> <OMS cd="multiset1" name="subset"/> <OMV name="C"/> <OMV name="A"/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="multiset1" name="notin"/> <OMI> 4 </OMI> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 1 </OMI> <OMI> 1 </OMI> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="multiset1" name="prsubset"/> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 2 </OMI> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="multiset1" name="notsubset"/> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 2 </OMI> <OMI> 3 </OMI> <OMI> 3 </OMI> </OMA> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 1 </OMI> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="multiset1" name="notprsubset"/> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 1 </OMI> <OMI> 2 </OMI> <OMI> 1 </OMI> </OMA> <OMA> <OMS cd="multiset1" name="multiset"/> <OMI> 1 </OMI> <OMI> 2 </OMI> <OMI> 1 </OMI> </OMA> </OMA> </OMOBJ> % Examples from CD nums1 om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMI> 8 </OMI> <OMA> <OMS cd="nums1" name="based_integer"/> <OMI> 8 </OMI> <OMSTR> 10 </OMSTR> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="nums1" name="rational"/> <OMI> 1 </OMI> <OMI> 2 </OMI> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> <OMV name="y"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="nums1" name="complex_cartesian"/> <OMV name="x"/> <OMV name="y"/> </OMA> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="x"/> <OMA> <OMS cd="arith1" name="times"/> <OMS cd="nums1" name="i"/> <OMV name="y"/> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> <OMV name="y"/> <OMV name="r"/> <OMV name="a"/> </OMBVAR> <OMA> <OMS cd="logic1" name="implies"/> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMV name="r"/> <OMA> <OMS cd="transc1" name="sin"/> <OMV name="a"/> </OMA> </OMA> <OMV name="y"/> </OMA> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMV name="r"/> <OMA> <OMS cd="transc1" name="cos"/> <OMV name="a"/> </OMA> </OMA> <OMV name="x"/> </OMA> </OMA> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="nums1" name="complex_polar"/> <OMV name="r"/> <OMV name="a"/> </OMA> <OMA> <OMS cd="nums1" name="complex_cartesian"/> <OMV name="x"/> <OMV name="y"/> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="logic1" name="implies"/> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="set1" name="in"/> <OMV name="a"/> <OMS cd="setname1" name="R"/> </OMA> <OMA> <OMS cd="set1" name="in"/> <OMV name="k"/> <OMS cd="setname1" name="Z"/> </OMA> </OMA> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="nums1" name="complex_polar"/> <OMV name="x"/> <OMV name="a"/> </OMA> <OMA> <OMS cd="nums1" name="complex_polar"/> <OMV name="x"/> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="a"/> <OMA> <OMS cd="arith1" name="times"/> <OMI> 2 </OMI> <OMS cd="nums1" name="pi"/> <OMV name="k"/> </OMA> </OMA> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMS cd="nums1" name="e"/> <OMA> <OMS cd="arith1" name="sum"/> <OMA> <OMS cd="interval1" name="integer_interval"/> <OMS cd="alg1" name="zero"/> <OMS cd="nums1" name="infinity"/> </OMA> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="j"/> </OMBVAR> <OMA> <OMS cd="arith1" name="divide"/> <OMS cd="alg1" name="one"/> <OMA> <OMS cd="integer1" name="factorial"/> <OMV name="j"/> </OMA> </OMA> </OMBIND> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="power"/> <OMS cd="nums1" name="i"/> <OMI> 2 </OMI> </OMA> <OMA> <OMS cd="arith1" name="minus"/> <OMS cd="alg1" name="one"/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> <OMV name="y"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMV name="y"/> <OMA> <OMS name="imaginary" cd="nums1"/> <OMA> <OMS name="complex_cartesian" cd="nums1"/> <OMV name="x"/> <OMV name="y"/> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> <OMV name="y"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMV name="x"/> <OMA> <OMS name="real" cd="nums1"/> <OMA> <OMS name="complex_cartesian" cd="nums1"/> <OMV name="x"/> <OMV name="y"/> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="implies"/> <OMA> <OMS cd="set1" name="in"/> <OMV name="a"/> <OMS cd="setname1" name="R"/> </OMA> <OMA> <OMS cd="relation1" name="lt"/> <OMV name="x"/> <OMS cd="nums1" name="infinity"/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="neq"/> <OMS cd="nums1" name="NaN"/> <OMS cd="nums1" name="NaN"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMS cd="nums1" name="pi"/> <OMA> <OMS cd="arith1" name="sum"/> <OMA> <OMS cd="interval1" name="integer_interval"/> <OMS cd="alg1" name="zero"/> <OMS cd="nums1" name="infinity"/> </OMA> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="j"/> </OMBVAR> <OMA> <OMS cd="arith1" name="minus"/> <OMA> <OMS cd="arith1" name="divide"/> <OMS cd="alg1" name="one"/> <OMA> <OMS cd="arith1" name="plus"/> <OMA> <OMS cd="arith1" name="times"/> <OMI> 4 </OMI> <OMV name="j"/> </OMA> <OMS cd="alg1" name="one"/> </OMA> </OMA> <OMA> <OMS cd="arith1" name="divide"/> <OMS cd="alg1" name="one"/> <OMA> <OMS cd="arith1" name="plus"/> <OMA> <OMS cd="arith1" name="times"/> <OMI> 4 </OMI> <OMV name="j"/> </OMA> <OMS cd="alg1" name="one"/> </OMA> </OMA> </OMA> </OMBIND> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="relation1" name="lt"/> <OMA> <OMS cd="arith1" name="minus"/> <OMA> <OMS cd="rounding1" name="ceiling"/> <OMV name="x"/> </OMA> <OMS cd="alg1" name="one"/> </OMA> <OMV name="x"/> </OMA> <OMA> <OMS cd="relation1" name="leq"/> <OMV name="x"/> <OMA> <OMS cd="rounding1" name="ceiling"/> <OMV name="x"/> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="stats1" name="mean"/> <OMI> 1 </OMI> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> <OMI> 3 </OMI> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="stats1" name="sdev"/> <OMF dec="3.1"/> <OMF dec="2.2"/> <OMF dec="1.8"/> <OMF dec="1.1"/> <OMF dec="3.3"/> <OMF dec="2.4"/> <OMF dec="5.5"/> <OMF dec="2.3"/> <OMF dec="1.7"/> <OMF dec="1.8"/> <OMF dec="3.4"/> <OMF dec="4.0"/> <OMF dec="3.3"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic1" name="implies"/> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="power"/> <OMV name="a"/> <OMV name="b"/> </OMA> <OMV name="c"/> </OMA> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="transc1" name="log"/> <OMV name="a"/> <OMV name="c"/> </OMA> <OMV name="b"/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS name="and" cd="logic1"/> <OMA> <OMS name="lt" cd="relation1"/> <OMA> <OMS name="unary_minus" cd="arith1"/> <OMS name="pi" cd="nums1"/> </OMA> <OMA> <OMS name="imaginary" cd="nums1"/> <OMA> <OMS name="ln" cd="transc1"/> <OMV name="x"/> </OMA> </OMA> </OMA> <OMA> <OMS name="leq" cd="relation1"/> <OMA> <OMS name="imaginary" cd="nums1"/> <OMA> <OMS name="ln" cd="transc1"/> <OMV name="x"/> </OMA> </OMA> <OMS name="pi" cd="nums1"/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="veccalc1" name="curl"/> <OMV name="F"/> </OMA> <OMA> <OMS cd="arith1" name="plus"/> <OMA> <OMS cd="linalg1" name="vectorproduct"/> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 1 </OMI> <OMI> 0 </OMI> <OMI> 0 </OMI> </OMA> <OMA> <OMS cd="calculus1" name="partialdiff"/> <OMA> <OMS cd="list1" name="list"/> <OMI> 1 </OMI> </OMA> <OMV name="F"/> </OMA> </OMA> <OMA> <OMS cd="linalg1" name="vectorproduct"/> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 0 </OMI> <OMI> 1 </OMI> <OMI> 0 </OMI> </OMA> <OMA> <OMS cd="calculus1" name="partialdiff"/> <OMA> <OMS cd="list1" name="list"/> <OMI> 2 </OMI> </OMA> <OMV name="F"/> </OMA> </OMA> <OMA> <OMS cd="linalg1" name="vectorproduct"/> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 0 </OMI> <OMI> 0 </OMI> <OMI> 1 </OMI> </OMA> <OMA> <OMS cd="calculus1" name="partialdiff"/> <OMA> <OMS cd="list1" name="list"/> <OMI> 3 </OMI> </OMA> <OMV name="F"/> </OMA> </OMA> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="x"/> </OMBVAR> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="relation1" name="lt"/> <OMA> <OMS name="unary_minus" cd="arith1"/> <OMS cd="nums1" name="pi"/> </OMA> <OMA> <OMS name="arg" cd="arith2"/> <OMV name="x"/> </OMA> </OMA> <OMA> <OMS cd="relation1" name="leq"/> <OMA> <OMS name="arg" cd="arith2"/> <OMV name="x"/> </OMA> <OMS cd="nums1" name="pi"/> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="a"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith2" name="inverse"/> <OMA> <OMS cd="arith2" name="inverse"/> <OMV name="a"/> </OMA> </OMA> <OMV name="a"/> </OMA> </OMBIND> </OMOBJ> % An example of elements which do not have a MathML % equivalent. This example comes from the fns1 CD om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="n"/> </OMBVAR> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="fns2" name="apply_to_list"/> <OMA> <OMS cd="arith1" name="plus"/> <OMA> <OMS cd="list1" name="make_list"/> <OMI> 1 </OMI> <OMV name="n"/> <OMS cd="fns1" name="identity"/> </OMA> </OMA> </OMA> <OMA> <OMS cd="arith1" name="divide"/> <OMA> <OMS cd="arith1" name="times"/> <OMV name="n"/> <OMA> <OMS cd="arith1" name="plus"/> <OMV name="n"/> <OMI> 1 </OMI> </OMA> </OMA> <OMI> 2 </OMI> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="linalg3" name="determinant"/> <OMA> <OMS cd="linalg3" name="identity"/> <OMV name="n"/> </OMA> </OMA> <OMS cd="alg1" name="one"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="linalg3" name="transpose"/> <OMA> <OMS cd="linalg1" name="matrix"/> <OMA> <OMS cd="linalg1" name="matrixrow"/> <OMI> 0 </OMI> <OMI> 1 </OMI> </OMA> <OMA> <OMS cd="linalg1" name="matrixrow"/> <OMI> 2 </OMI> <OMI> 3 </OMI> </OMA> </OMA> </OMA> <OMA> <OMS cd="linalg1" name="matrix"/> <OMA> <OMS cd="linalg1" name="matrixrow"/> <OMI> 0 </OMI> <OMI> 2 </OMI> </OMA> <OMA> <OMS cd="linalg1" name="matrixrow"/> <OMI> 1 </OMI> <OMI> 3 </OMI> </OMA> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="logic2" name="equivalent"/> <OMA> <OMS cd="logic2" name="equivalent"/> <OMV name="A"/> <OMV name="B"/> </OMA> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="logic1" name="implies"/> <OMV name="A"/> <OMV name="B"/> </OMA> <OMA> <OMS cd="logic1" name="implies"/> <OMV name="B"/> <OMV name="A"/> </OMA> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="complex_polar_type"/> </OMATP> <OMV name="z"/> </OMATTR> </OMOBJ> % Examples of assigning types to variables. om2mml(); <OMOBJ> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="integer_type"/> </OMATP> <OMV name="z"/> </OMATTR> </OMOBJ> om2mml(); <OMOBJ> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="real_type"/> </OMATP> <OMV name="z"/> </OMATTR> </OMOBJ> om2mml(); <OMOBJ> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="rational_type"/> </OMATP> <OMV name="z"/> </OMATTR> </OMOBJ> % These examples show the use of attributions within OpenMath % expressions. om2mml(); <OMOBJ> <OMA> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="fn_type"/> </OMATP> <OMV name="f"/> </OMATTR> <OMI>1</OMI> <OMI>2</OMI> <OMI>3</OMI> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="arith1" name=times/> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="matrix_type"/> </OMATP> <OMV name=A/> </OMATTR> <OMA> <OMS cd="transc1" name=sin/> <OMV name=x/> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="linalg3" name="vector_selector"/> <OMI>2</OMI> <OMA> <OMS cd="linalg1" name="vector"/> <OMI> 3 </OMI> <OMI> 6 </OMI> <OMI> 9 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="linalg3" name="vector_selector"/> <OMI>2</OMI> <OMA> <OMS cd="linalg1" name="matrixrow"/> <OMI> 0 </OMI> <OMI> 1 </OMI> <OMI> 0 </OMI> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMBIND> <OMS cd="quant1" name="forall"/> <OMBVAR> <OMV name="M"/> </OMBVAR> <OMA> <OMS cd="logic1" name="and"/> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMA> <OMS cd="linalg3" name="zero"/> <OMA> <OMS cd="linalg3" name="rowcount"/> <OMV name="M"/> </OMA> <OMA> <OMS cd="linalg3" name="rowcount"/> <OMV name="M"/> </OMA> </OMA> <OMV name="M"/> </OMA> <OMA> <OMS cd="linalg3" name="zero"/> <OMA> <OMS cd="linalg3" name="rowcount"/> <OMV name="M"/> </OMA> <OMA> <OMS cd="linalg3" name="columncount"/> <OMV name="M"/> </OMA> </OMA> </OMA> <OMA> <OMS cd="relation1" name="eq"/> <OMA> <OMS cd="arith1" name="times"/> <OMV name="M"/> <OMA> <OMS cd="linalg3" name="zero"/> <OMA> <OMS cd="linalg3" name="columncount"/> <OMV name="M"/> </OMA> <OMA> <OMS cd="linalg3" name="columncount"/> <OMV name="M"/> </OMA> </OMA> </OMA> <OMA> <OMS cd="linalg3" name="zero"/> <OMA> <OMS cd="linalg3" name="rowcount"/> <OMV name="M"/> </OMA> <OMA> <OMS cd="linalg3" name="columncount"/> <OMV name="M"/> </OMA> </OMA> </OMA> </OMA> </OMBIND> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="linalg3" name="vector_selector"/> <OMI> 1 </OMI> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="vector_type"/> </OMATP> <OMV name=A/> </OMATTR> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="linalg3" name="matrix_selector"/> <OMI> 1 </OMI> <OMI> 1 </OMI> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="matrix_type"/> </OMATP> <OMV name=A/> </OMATTR> </OMA> </OMOBJ> % The following two examples were produced by REDUCE in MathML with the % MathML interface, then translated to OpenMath. It is now possible to % translate them back to MathML. om2mml(); <OMOBJ> <OMA> <OMS cd="list1" name="list"/> <OMA> <OMS cd="list1" name="list"/> <OMA> <OMS cd="relation1" name="eq"> <OMV name="x"/> <OMA> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="fn_type"/> </OMATP> <OMV name="root_of"/> </OMATTR> <OMA> <OMS cd="arith1" name="plus"> <OMA> <OMS cd="arith1" name="minus"> <OMA> <OMS cd="arith1" name="power"> <OMV name="y"/> <OMV name="x_"/> </OMA> </OMA> <OMA> <OMS cd="arith1" name="minus"> <OMA> <OMS cd="arith1" name="times"> <OMA> <OMS cd="calculus1" name="int"/> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x_"/> </OMBVAR> <OMA> <OMS cd="arith1" name="power"> <OMV name="x_"/> <OMV name="x_"/> </OMA> </OMBIND> </OMA> <OMV name="y"/> </OMA> </OMA> <OMV name="x_"/> <OMV name="y"/> </OMA> <OMV name="x_"/> <OMV name="tag_1"/> </OMA> </OMA> <OMA> <OMS cd="relation1" name="eq"> <OMV name="a"/> <OMA> <OMS cd="arith1" name="plus"> <OMV name="x"/> <OMV name="y"/> </OMA> </OMA> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS cd="list1" name="list"/> <OMA> <OMS cd="list1" name="list"/> <OMA> <OMS cd="relation1" name="eq"> <OMV name="x"/> <OMA> <OMATTR> <OMATP> <OMS cd="typmml" name="type"/> <OMS cd="typmml" name="fn_type"/> </OMATP> <OMV name="root_of"/> </OMATTR> <OMA> <OMS cd="arith1" name="plus"> <OMA> <OMS cd="arith1" name="times"> <OMA> <OMS cd="transc1" name="exp"> <OMA> <OMS cd="arith1" name="plus"> <OMS cd="nums1" name="i"/> <OMV name="x_"/> </OMA> </OMA> <OMV name="y"/> </OMA> <OMA> <OMS cd="transc1" name="exp"> <OMA> <OMS cd="arith1" name="plus"> <OMS cd="nums1" name="i"/> <OMV name="x_"/> </OMA> </OMA> <OMA> <OMS cd="arith1" name="power"> <OMV name="x_"/> <OMA> <OMS cd="arith1" name="plus"> <OMV name="y"/> <OMI> 1 </OMI> </OMA> </OMA> <OMA> <OMS cd="arith1" name="times"> <OMA> <OMS cd="calculus1" name="int"/> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x_"/> </OMBVAR> <OMA> <OMS cd="arith1" name="power"> <OMV name="x_"/> <OMV name="x_"/> </OMA> </OMBIND> </OMA> <OMA> <OMS cd="arith1" name="power"> <OMV name="y"/> <OMI> 2 </OMI> </OMA> </OMA> <OMA> <OMS cd="arith1" name="times"> <OMA> <OMS cd="calculus1" name="int"/> <OMBIND> <OMS cd="fns1" name="lambda"/> <OMBVAR> <OMV name="x_"/> </OMBVAR> <OMA> <OMS cd="arith1" name="power"> <OMV name="x_"/> <OMV name="x_"/> </OMA> </OMBIND> </OMA> <OMV name="y"/> </OMA> </OMA> <OMV name="x_"/> <OMV name="tag_2"/> </OMA> </OMA> <OMA> <OMS cd="relation1" name="eq"> <OMV name="z"/> <OMV name="y"/> </OMA> </OMA> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMATTR> <OMATP> <OMS cd="cc" name="type"/> <OMS cd="omtypes" name="integer"/> </OMATP> <OMI> 0 </OMI> </OMATTR> </OMOBJ> om2mml(); <OMOBJ> <OMATTR> <OMATP> <OMS cd="cc" name="type"/> <OMS cd="omtypes" name="float"/> </OMATP> <OMF dec=1.0/> </OMATTR> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS name="complex_cartesian" cd="nums1"/> <OMV name="x"/> <OMV name="y"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS name="complex_polar" cd="nums1"/> <OMV name="x"/> <OMV name="y"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS name="rational" cd="nums1"/> <OMV name="x"/> <OMV name="y"/> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS name="complex_cartesian" cd="nums1"/> <OMI>4</OMI> <OMI>2</OMI> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS name="complex_polar" cd="nums1"/> <OMI>4</OMI> <OMI>2</OMI> </OMA> </OMOBJ> om2mml(); <OMOBJ> <OMA> <OMS name="rational" cd="nums1"/> <OMI>4</OMI> <OMI>2</OMI> </OMA> </OMOBJ> end;