% 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;