Sun Apr 18 17:56:49 2004 run on Linux
load mathmlom;
%in "$reduce/packages/mathml/examples.mml";
% Description: This file contains a long list of examples demonstrating the abilities of
% the translator. Most of these examples come straight from the MathML spec. They
% were used during the development of the interface and should all be correctly
% translated into OpenMath.
%
% Version 17 April 2000
%
% Author: Luis Alvarez Sobreviela
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
mml2om();
<math>
<apply><sin/>
<apply><plus/>
<apply><cos/>
<ci> x </ci>
</apply>
<apply><power/>
<ci> x </ci>
<cn> 3 </cn>
</apply>
</apply>
</apply>
</math>
Intermediate representation:
(sin nil (plus nil (cos nil x) (power nil x 3)))
<OMOBJ>
<OMA>
<OMS cd="transc1" name="sin">
<OMA>
<OMS cd="arith1" name="plus">
<OMA>
<OMS cd="transc1" name="cos">
<OMV name="x"/>
</OMA>
<OMA>
<OMS cd="arith1" name="power">
<OMV name="x"/>
<OMI> 3 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><sin/>
<apply><plus/>
<apply><cos/>
<ci> x </ci>
</apply>
<apply><power/>
<ci type="real"> x </ci>
<cn> 3 </cn>
</apply>
</apply>
</apply>
</math>
Intermediate representation:
(sin nil (plus nil (cos nil x) (power nil (ci ((type real)) x) 3)))
<OMOBJ>
<OMA>
<OMS cd="transc1" name="sin">
<OMA>
<OMS cd="arith1" name="plus">
<OMA>
<OMS cd="transc1" name="cos">
<OMV name="x"/>
</OMA>
<OMA>
<OMS cd="arith1" name="power">
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type">
<OMS cd="typmml" name="(real real_type)real_type">
</OMATP>
<OMV name="x"/>
</OMATTR>
<OMI> 3 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<set type=normal>
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</set>
</math>
Intermediate representation:
(set ((type normal)) b 2 c)
<OMOBJ>
<OMA>
<OMS cd="set1" name="set"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<set type="multiset">
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</set>
</math>
Intermediate representation:
(set ((type multiset)) b 2 c)
<OMOBJ>
<OMA>
<OMS cd="multiset1" name="set"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<vector>
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</vector>
</math>
Intermediate representation:
(vectorml nil b 2 c)
<OMOBJ>
<OMA>
<OMS cd="linalg1" name="vector"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<interval closure=closed>
<ci> b </ci>
<cn> 2 </cn>
</interval>
</math>
Intermediate representation:
(interval ((closure closed)) b 2)
<OMOBJ>
<OMA>
<OMS cd="interval1" name="interval_cc"/>
<OMV name="b"/>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<interval closure=open>
<ci> b </ci>
<cn> 2 </cn>
</interval>
</math>
Intermediate representation:
(interval ((closure open)) b 2)
<OMOBJ>
<OMA>
<OMS cd="interval1" name="interval_oo"/>
<OMV name="b"/>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<interval closure=open-closed>
<ci> b </ci>
<cn> 2 </cn>
</interval>
</math>
Intermediate representation:
(interval ((closure open!-closed)) b 2)
<OMOBJ>
<OMA>
<OMS cd="interval1" name="interval_oc"/>
<OMV name="b"/>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<interval closure=closed-open>
<ci> b </ci>
<cn> 2 </cn>
</interval>
</math>
Intermediate representation:
(interval ((closure closed!-open)) b 2)
<OMOBJ>
<OMA>
<OMS cd="interval1" name="interval_co"/>
<OMV name="b"/>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<cn type="complex-cartesian"> 6 <sep/> 3 </cn>
</math>
Intermediate representation:
(complex_cartesian nil 6 3)
<OMOBJ>
<OMA>
<OMS cd="nums1" name="complex_cartesian">
<OMI> 6 </OMI>
<OMI> 3 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<cn type="complex-polar"> 6 <sep/> 3 </cn>
</math>
Intermediate representation:
(complex_polar nil 6 3)
<OMOBJ>
<OMA>
<OMS cd="nums1" name="complex_polar">
<OMI> 6 </OMI>
<OMI> 3 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<cn type="integer" base="10"> 6 </cn>
</math>
Intermediate representation:
(based_integer nil 10 (string 6))
<OMOBJ>
<OMA>
<OMS cd="nums1" name="based_integer">
<OMI> 10 </OMI>
<OMSTR> 6 </OMSTR>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><sum/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<ci> a </ci>
</lowlimit>
<uplimit>
<ci> b </ci>
</uplimit>
<apply><plus/>
<ci> x </ci>
<apply><sin/>
<ci> y </ci>
</apply>
</apply>
</apply>
</math>
Intermediate representation:
(sum nil (bvar x 1) (lowupperlimit a b) (plus nil x (sin nil y)))
<OMOBJ>
<OMA>
<OMS cd="arith1" name="sum"/>
<OMA>
<OMS cd="interval1" name="integer_interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="arith1" name="plus">
<OMV name="x"/>
<OMA>
<OMS cd="transc1" name="sin">
<OMV name="y"/>
</OMA>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><int/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<ci> a </ci>
</lowlimit>
<uplimit>
<ci> b </ci>
</uplimit>
<apply><fn><ci> f </ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(int nil (bvar x 1) (lowupperlimit a b) (f nil x))
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="defint"/>
<OMA>
<OMS cd="interval1" name="integer_interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<lambda>
<bvar>
<ci> x </ci>
</bvar>
<apply><sin/>
<ci> x </ci>
</apply>
</lambda>
</math>
Intermediate representation:
(lambda nil (bvar x 1) (sin nil x))
<OMOBJ>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="transc1" name="sin">
<OMV name="x"/>
</OMA>
</OMBIND>
</OMOBJ>
mml2om();
<math>
<apply><limit/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<cn> 0 </cn>
</lowlimit>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(limit nil (bvar x 1) (lowlimit 0) (sin nil x))
<OMOBJ>
<OMA>
<OMS cd="limit1" name="limit"/>
<OMI> 0 </OMI>
<OMS cd="limit1" name="null"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="transc1" name="sin">
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><limit/>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<apply>
<tendsto type="above"/>
<ci> x </ci>
<ci> a </ci>
</apply>
</condition>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(limit nil (bvar x 1) (condition (tendsto ((type above)) x a)) (sin nil x))
<OMOBJ>
<OMA>
<OMS cd="limit1" name="limit"/>
<OMV name="a"/>
<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>
mml2om();
<math>
<apply><not/>
<apply><exists/>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<bvar>
<ci> z </ci>
</bvar>
<bvar>
<ci> n </ci>
</bvar>
<apply><and/>
<apply><gt/>
<ci> n </ci>
<cn type="integer"> 2 </cn>
</apply>
<apply><eq/>
<apply><plus/>
<apply><power/>
<ci> x </ci>
<ci> n </ci>
</apply>
<apply><power/>
<ci> y </ci>
<ci> n </ci>
</apply>
</apply>
<apply><power/>
<ci> z </ci>
<ci> n </ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
Intermediate representation:
(not nil (exists nil (bvar x 1) (bvar y 1) (bvar z 1) (bvar n 1) nil (and nil (
gt nil n 2) (eq nil (plus nil (power nil x n) (power nil y n)) (power nil z n)))
))
<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>
mml2om();
<math>
<matrix>
<matrixrow>
<cn> 0 </cn> <cn> 1 </cn> <cn> 0 </cn>
</matrixrow>
<matrixrow>
<cn> 0 </cn> <cn> 0 </cn> <cn> 1 </cn>
</matrixrow>
<matrixrow>
<cn> 1 </cn> <cn> 0 </cn> <cn> 0 </cn>
</matrixrow>
</matrix>
</math>
Intermediate representation:
(matrix nil matrixrow ((0 1 0) (0 0 1) (1 0 0)))
<OMOBJ>
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 0 </OMI>
<OMI> 1 </OMI>
<OMI> 0 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 0 </OMI>
<OMI> 0 </OMI>
<OMI> 1 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 0 </OMI>
<OMI> 0 </OMI>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><int/>
<bvar>
<ci>x</ci>
</bvar>
<apply><power/>
<ci>x</ci>
<cn type="integer">2</cn>
</apply>
</apply>
</math>
Intermediate representation:
(int nil (bvar x 1) nil (power nil x 2))
<OMOBJ>
<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"/>
<OMI> 2 </OMI>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><int/>
<bvar>
<ci> x </ci>
</bvar>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(int nil (bvar x 1) nil (sin nil x))
<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>
mml2om();
<math>
<apply><sum/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<ci> a </ci>
</lowlimit>
<uplimit>
<ci> b </ci>
</uplimit>
<apply><fn><ci> f </ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(sum nil (bvar x 1) (lowupperlimit a b) (f nil x))
<OMOBJ>
<OMA>
<OMS cd="arith1" name="sum"/>
<OMA>
<OMS cd="interval1" name="integer_interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><diff/>
<bvar>
<ci> x </ci>
</bvar>
<apply><fn><ci>f</ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(diff nil (bvar x 1) (f nil x))
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><diff/>
<bvar>
<ci> x </ci>
<degree>
<cn> 2 </cn>
</degree>
</bvar>
<apply><fn><ci>f</ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(diff nil (bvar x 1) (diff nil (bvar x 1) (f nil x)))
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><diff/>
<bvar>
<ci> x </ci>
<degree>
<cn> 3 </cn>
</degree>
</bvar>
<apply><fn><ci>f</ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(diff nil (bvar x 1) (diff nil (bvar x 1) (diff nil (bvar x 1) (f nil x))))
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMBIND>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<set type=normal>
<ci> b </ci>
<ci> a </ci>
<ci> c </ci>
</set>
</math>
Intermediate representation:
(set ((type normal)) b a c)
<OMOBJ>
<OMA>
<OMS cd="set1" name="set"/>
<OMV name="b"/>
<OMV name="a"/>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<list>
<ci> b </ci>
<ci> a </ci>
<ci> c </ci>
</list>
</math>
Intermediate representation:
(list nil b a c)
<OMOBJ>
<OMA>
<OMS cd="list1" name="list"/>
<OMV name="b"/>
<OMV name="a"/>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<list order="lexicographic">
<ci> b </ci>
<ci> a </ci>
<ci> c </ci>
</list>
</math>
Intermediate representation:
(list ((order lexicographic)) b a c)
<OMOBJ>
<OMA>
<OMS cd="list1" name="list"/>
<OMV name="b"/>
<OMV name="a"/>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><union definitionurl="www.nag.co.uk"/>
<ci type="set"> A </ci>
<ci type="set"> B </ci>
</apply>
</math>
Intermediate representation:
(union ((definitionurl (w w w !. n a g !. c o !. u k))) (ci ((type set)) a) (ci
((type set)) b))
<OMOBJ>
<OMA>
<OMS cd="set1" name="union">
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type">
<OMS cd="typmml" name="(set set_type)set_type">
</OMATP>
<OMV name="a"/>
</OMATTR>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type">
<OMS cd="typmml" name="(set set_type)set_type">
</OMATP>
<OMV name="b"/>
</OMATTR>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><union/>
<set type="normal">
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</set>
<set>
<ci> b </ci>
<ci> r </ci>
<cn> 2 </cn>
<cn> 4 </cn>
<ci> c </ci>
</set>
</apply>
</math>
Intermediate representation:
(union nil (set ((type normal)) b 2 c) (set nil b r 2 4 c))
<OMOBJ>
<OMA>
<OMS cd="set1" name="union">
<OMA>
<OMS cd="set1" name="set"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
<OMA>
<OMS cd="set1" name="set"/>
<OMV name="b"/>
<OMV name="r"/>
<OMI> 2 </OMI>
<OMI> 4 </OMI>
<OMV name="c"/>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><intersect definitionurl="www.mit.edu"/>
<ci type="set"> A </ci>
<ci type="set"> B </ci>
</apply>
</math>
Intermediate representation:
(intersect ((definitionurl (w w w !. m i t !. e d u))) (ci ((type set)) a) (ci (
(type set)) b))
<OMOBJ>
<OMA>
<OMS cd="set1" name="intersect">
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type">
<OMS cd="typmml" name="(set set_type)set_type">
</OMATP>
<OMV name="a"/>
</OMATTR>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type">
<OMS cd="typmml" name="(set set_type)set_type">
</OMATP>
<OMV name="b"/>
</OMATTR>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><intersect/>
<set>
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</set>
<set>
<ci> b </ci>
<ci> r </ci>
<cn> 2 </cn>
<cn> 4 </cn>
<ci> c </ci>
</set>
</apply>
</math>
Intermediate representation:
(intersect nil (set nil b 2 c) (set nil b r 2 4 c))
<OMOBJ>
<OMA>
<OMS cd="set1" name="intersect">
<OMA>
<OMS cd="set1" name="set"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
<OMA>
<OMS cd="set1" name="set"/>
<OMV name="b"/>
<OMV name="r"/>
<OMI> 2 </OMI>
<OMI> 4 </OMI>
<OMV name="c"/>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><in definitionurl="www.www.www"/>
<ci> a </ci>
<ci type="set"> A </ci>
</reln>
</math>
Intermediate representation:
(in ((definitionurl (w w w !. w w w !. w w w))) a (ci ((type set)) a))
<OMOBJ>
<OMA>
<OMS cd="set1" name="in">
<OMV name="a"/>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type">
<OMS cd="typmml" name="(set set_type)set_type">
</OMATP>
<OMV name="a"/>
</OMATTR>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><notin definitionurl="www.www.www"/>
<ci> a </ci>
<ci> A </ci>
</reln>
</math>
Intermediate representation:
(notin ((definitionurl (w w w !. w w w !. w w w))) a a)
<OMOBJ>
<OMA>
<OMS cd="set1" name="notin">
<OMV name="a"/>
<OMV name="a"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><prsubset definitionurl="www.www.www"/>
<ci> A </ci>
<ci> B </ci>
</reln>
</math>
Intermediate representation:
(prsubset ((definitionurl (w w w !. w w w !. w w w))) a b)
<OMOBJ>
<OMA>
<OMS cd="set1" name="prsubset">
<OMV name="a"/>
<OMV name="b"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><notsubset definitionurl="www.www.www"/>
<ci> A </ci>
<ci> B </ci>
</reln>
</math>
Intermediate representation:
(notsubset ((definitionurl (w w w !. w w w !. w w w))) a b)
<OMOBJ>
<OMA>
<OMS cd="set1" name="notsubset">
<OMV name="a"/>
<OMV name="b"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><notprsubset definitionurl="www.www.www"/>
<ci> A </ci>
<ci> B </ci>
</reln>
</math>
Intermediate representation:
(notprsubset ((definitionurl (w w w !. w w w !. w w w))) a b)
<OMOBJ>
<OMA>
<OMS cd="set1" name="notprsubset">
<OMV name="a"/>
<OMV name="b"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><setdiff definitionurl="www.www.www"/>
<ci> A </ci>
<ci> B </ci>
</apply>
</math>
Intermediate representation:
(setdiff ((definitionurl (w w w !. w w w !. w w w))) a b)
<OMOBJ>
<OMA>
<OMS cd="set1" name="setdiff">
<OMV name="a"/>
<OMV name="b"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><sum/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<ci> a </ci>
</lowlimit>
<uplimit>
<ci> b </ci>
</uplimit>
<apply><fn><ci> f </ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(sum nil (bvar x 1) (lowupperlimit a b) (f nil x))
<OMOBJ>
<OMA>
<OMS cd="arith1" name="sum"/>
<OMA>
<OMS cd="interval1" name="integer_interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><product/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<ci> a </ci>
</lowlimit>
<uplimit>
<ci> b </ci>
</uplimit>
<apply><fn><ci> f </ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(product nil (bvar x 1) (lowupperlimit a b) (f nil x))
<OMOBJ>
<OMA>
<OMS cd="arith1" name="product"/>
<OMA>
<OMS cd="interval1" name="integer_interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><limit/>
<bvar>
<ci> V </ci>
</bvar>
<condition>
<apply>
<tendsto type=above/>
<ci> V </ci>
<cn> 0 </cn>
</apply>
</condition>
<apply><divide/>
<apply><int/>
<bvar>
<ci> S</ci>
</bvar>
<ci> a </ci>
</apply>
<ci> V </ci>
</apply>
</apply>
</math>
Intermediate representation:
(limit nil (bvar v 1) (condition (tendsto ((type above)) v 0)) (divide nil (int
nil (bvar s 1) nil a) v))
<OMOBJ>
<OMA>
<OMS cd="limit1" name="limit"/>
<OMI> 0 </OMI>
<OMS cd="limit1" name="above"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="v"/>
</OMBVAR>
<OMA>
<OMS cd="arith1" name="divide">
<OMA>
<OMS cd="calculus1" name="int"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="s"/>
</OMBVAR>
<OMV name="a"/>
</OMBIND>
</OMA>
<OMV name="v"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><limit/>
<bvar>
<ci> x </ci>
</bvar>
<lowlimit>
<cn> 0 </cn>
</lowlimit>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(limit nil (bvar x 1) (lowlimit 0) (sin nil x))
<OMOBJ>
<OMA>
<OMS cd="limit1" name="limit"/>
<OMI> 0 </OMI>
<OMS cd="limit1" name="null"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="transc1" name="sin">
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><limit/>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<reln>
<tendsto type="above"/>
<ci> x </ci>
<ci> a </ci>
</reln>
</condition>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(limit nil (bvar x 1) (condition (tendsto ((type above)) x a)) (sin nil x))
<OMOBJ>
<OMA>
<OMS cd="limit1" name="limit"/>
<OMV name="a"/>
<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>
mml2om();
<math>
<apply><sin/>
<apply><plus/>
<apply><cos/>
<ci> x </ci>
</apply>
<apply><power/>
<ci> x </ci>
<cn> 3 </cn>
</apply>
</apply>
</apply>
</math>
Intermediate representation:
(sin nil (plus nil (cos nil x) (power nil x 3)))
<OMOBJ>
<OMA>
<OMS cd="transc1" name="sin">
<OMA>
<OMS cd="arith1" name="plus">
<OMA>
<OMS cd="transc1" name="cos">
<OMV name="x"/>
</OMA>
<OMA>
<OMS cd="arith1" name="power">
<OMV name="x"/>
<OMI> 3 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><mean/>
<ci> b </ci>
<ci> r </ci>
<cn> 2 </cn>
<cn> 4 </cn>
<ci> c </ci>
</apply>
</math>
Intermediate representation:
(mean nil b r 2 4 c)
<OMOBJ>
<OMA>
<OMS cd="stats1" name="mean">
<OMV name="b"/>
<OMV name="r"/>
<OMI> 2 </OMI>
<OMI> 4 </OMI>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><sdev/>
<ci> b </ci>
<ci> r </ci>
<cn> 2 </cn>
<cn> 4 </cn>
<ci> c </ci>
</apply>
</math>
Intermediate representation:
(sdev nil b r 2 4 c)
<OMOBJ>
<OMA>
<OMS cd="stats1" name="sdev">
<OMV name="b"/>
<OMV name="r"/>
<OMI> 2 </OMI>
<OMI> 4 </OMI>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><var/>
<ci> b </ci>
<ci> r </ci>
<cn> 2 </cn>
<cn> 4 </cn>
<ci> c </ci>
</apply>
</math>
Intermediate representation:
(variance nil b r 2 4 c)
<OMOBJ>
<OMA>
<OMS cd="stats1" name="variance">
<OMV name="b"/>
<OMV name="r"/>
<OMI> 2 </OMI>
<OMI> 4 </OMI>
<OMV name="c"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<vector>
<cn> 1 </cn>
<cn> 2 </cn>
<cn> 3 </cn>
<ci> x </ci>
</vector>
</math>
Intermediate representation:
(vectorml nil 1 2 3 x)
<OMOBJ>
<OMA>
<OMS cd="linalg1" name="vector"/>
<OMI> 1 </OMI>
<OMI> 2 </OMI>
<OMI> 3 </OMI>
<OMV name="x"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<matrix>
<matrixrow>
<cn> 0 </cn> <cn> 1 </cn> <cn> 0 </cn>
</matrixrow>
<matrixrow>
<cn> 0 </cn> <cn> 0 </cn> <cn> 1 </cn>
</matrixrow>
<matrixrow>
<cn> 1 </cn> <cn> 0 </cn> <cn> 0 </cn>
</matrixrow>
</matrix>
</math>
Intermediate representation:
(matrix nil matrixrow ((0 1 0) (0 0 1) (1 0 0)))
<OMOBJ>
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 0 </OMI>
<OMI> 1 </OMI>
<OMI> 0 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 0 </OMI>
<OMI> 0 </OMI>
<OMI> 1 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 0 </OMI>
<OMI> 0 </OMI>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><determinant/>
<matrix>
<matrixrow>
<cn> 3 </cn> <cn> 1 </cn> <cn> 5 </cn>
</matrixrow>
<matrixrow>
<cn> 7 </cn> <cn> 0 </cn> <cn> 2 </cn>
</matrixrow>
<matrixrow>
<cn> 1 </cn> <cn> 7 </cn> <cn> 8 </cn>
</matrixrow>
</matrix>
</apply>
</math>
Intermediate representation:
(determinant nil (matrix nil matrixrow ((3 1 5) (7 0 2) (1 7 8))))
<OMOBJ>
<OMA>
<OMS cd="linalg3" name="determinant">
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 3 </OMI>
<OMI> 1 </OMI>
<OMI> 5 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 7 </OMI>
<OMI> 0 </OMI>
<OMI> 2 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 7 </OMI>
<OMI> 8 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><transpose/>
<matrix>
<matrixrow>
<cn> 3 </cn> <cn> 1 </cn> <cn> 5 </cn>
</matrixrow>
<matrixrow>
<cn> 7 </cn> <cn> 0 </cn> <cn> 2 </cn>
</matrixrow>
<matrixrow>
<cn> 1 </cn> <cn> 7 </cn> <cn> 8 </cn>
</matrixrow>
</matrix>
</apply>
</math>
Intermediate representation:
(transpose nil (matrix nil matrixrow ((3 1 5) (7 0 2) (1 7 8))))
<OMOBJ>
<OMA>
<OMS cd="linalg3" name="transpose">
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 3 </OMI>
<OMI> 1 </OMI>
<OMI> 5 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 7 </OMI>
<OMI> 0 </OMI>
<OMI> 2 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 7 </OMI>
<OMI> 8 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><selector/>
<matrix>
<matrixrow>
<cn> 1 </cn> <cn> 2 </cn>
</matrixrow>
<matrixrow>
<cn> 3 </cn> <cn> 4 </cn>
</matrixrow>
</matrix>
<cn> 1 </cn>
</apply>
</math>
Intermediate representation:
(selector nil (matrix nil matrixrow ((1 2) (3 4))) 1 nil)
<OMOBJ>
<OMA>
<OMS cd="linalg3" name="matrix_selector"/>
<OMI> 1 </OMI>
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 2 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 3 </OMI>
<OMI> 4 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><select/>
<matrix>
<matrixrow>
<cn> 1 </cn> <cn> 2 </cn>
</matrixrow>
<matrixrow>
<cn> 3 </cn> <cn> 4 </cn>
</matrixrow>
</matrix>
<cn> 2 </cn>
<cn> 2 </cn>
</apply>
</math>
Intermediate representation:
(selector nil (matrix nil matrixrow ((1 2) (3 4))) 2 2)
<OMOBJ>
<OMA>
<OMS cd="linalg3" name="matrix_selector"/>
<OMI> 2 </OMI>
<OMI> 2 </OMI>
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 2 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 3 </OMI>
<OMI> 4 </OMI>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><determinant/>
<matrix>
<matrixrow>
<ci>a</ci>
<cn type="integer">1</cn>
</matrixrow>
<matrixrow>
<cn type="integer">2</cn>
<ci>s</ci>
</matrixrow>
</matrix>
</apply>
</math>
Intermediate representation:
(determinant nil (matrix nil matrixrow ((a 1) (2 s))))
<OMOBJ>
<OMA>
<OMS cd="linalg3" name="determinant">
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMV name="a"/>
<OMI> 1 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 2 </OMI>
<OMV name="s"/>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><determinant/>
<apply><transpose/>
<matrix>
<matrixrow>
<cn type="integer">1</cn>
<cn type="integer">2</cn>
<cn type="integer">3</cn>
<cn type="integer">4</cn>
</matrixrow>
<matrixrow>
<cn type="integer">1</cn>
<cn type="integer">2</cn>
<cn type="integer">1</cn>
<cn type="integer">2</cn>
</matrixrow>
<matrixrow>
<cn type="integer">2</cn>
<cn type="integer">3</cn>
<cn type="integer">2</cn>
<cn type="integer">1</cn>
</matrixrow>
<matrixrow>
<cn type="integer">2</cn>
<cn type="integer">1</cn>
<cn type="integer">1</cn>
<cn type="integer">1</cn>
</matrixrow>
</matrix>
</apply>
</apply>
</math>
Intermediate representation:
(determinant nil (transpose nil (matrix nil matrixrow ((1 2 3 4) (1 2 1 2) (2 3
2 1) (2 1 1 1)))))
<OMOBJ>
<OMA>
<OMS cd="linalg3" name="determinant">
<OMA>
<OMS cd="linalg3" name="transpose">
<OMA>
<OMS cd="linalg1" name="matrix"/>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 2 </OMI>
<OMI> 3 </OMI>
<OMI> 4 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 1 </OMI>
<OMI> 2 </OMI>
<OMI> 1 </OMI>
<OMI> 2 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 2 </OMI>
<OMI> 3 </OMI>
<OMI> 2 </OMI>
<OMI> 1 </OMI>
</OMA>
<OMA>
<OMS cd="linalg1" name="matrixrow"/>
<OMI> 2 </OMI>
<OMI> 1 </OMI>
<OMI> 1 </OMI>
<OMI> 1 </OMI>
</OMA>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><plus/>
<apply><times/>
<cn type="integer">2</cn>
<apply><cos/>
<ci>x</ci>
</apply>
<ci>x</ci>
</apply>
<apply><minus/>
<apply><times/>
<apply><sin/>
<ci>x</ci>
</apply>
<apply><power/>
<ci>x</ci>
<cn type="integer">2</cn>
</apply>
</apply>
</apply>
</apply>
</math>
Intermediate representation:
(plus nil (times nil 2 (cos nil x) x) (minus nil (times nil (sin nil x) (power
nil x 2))))
<OMOBJ>
<OMA>
<OMS cd="arith1" name="plus">
<OMA>
<OMS cd="arith1" name="times">
<OMI> 2 </OMI>
<OMA>
<OMS cd="transc1" name="cos">
<OMV name="x"/>
</OMA>
<OMV name="x"/>
</OMA>
<OMA>
<OMS cd="arith1" name="minus">
<OMA>
<OMS cd="arith1" name="times">
<OMA>
<OMS cd="transc1" name="sin">
<OMV name="x"/>
</OMA>
<OMA>
<OMS cd="arith1" name="power">
<OMV name="x"/>
<OMI> 2 </OMI>
</OMA>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<list>
<reln><eq/>
<ci>x</ci>
<apply><plus/>
<cn type="constant">ⅈ</cn>
<apply><minus/>
<cn type="integer">1</cn>
</apply>
</apply>
</reln>
<reln><eq/>
<ci>x</ci>
<apply><plus/>
<apply><minus/>
<cn type="constant">ⅈ</cn>
</apply>
<apply><minus/>
<cn type="integer">1</cn>
</apply>
</apply>
</reln>
</list>
</math>
Intermediate representation:
(list nil (eq nil x (plus nil !&imaginaryi!; (minus nil 1))) (eq nil x (plus nil
(minus nil !&imaginaryi!;) (minus nil 1))))
<OMOBJ>
<OMA>
<OMS cd="list1" name="list"/>
<OMA>
<OMS cd="relation1" name="eq">
<OMV name="x"/>
<OMA>
<OMS cd="arith1" name="plus">
<OMS cd="nums1" name="i"/>
<OMA>
<OMS cd="arith1" name="minus">
<OMI> 1 </OMI>
</OMA>
</OMA>
</OMA>
<OMA>
<OMS cd="relation1" name="eq">
<OMV name="x"/>
<OMA>
<OMS cd="arith1" name="plus">
<OMA>
<OMS cd="arith1" name="minus">
<OMS cd="nums1" name="i"/>
</OMA>
<OMA>
<OMS cd="arith1" name="minus">
<OMI> 1 </OMI>
</OMA>
</OMA>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><plus/>
<apply><minus/>
<apply><times/>
<apply><cos/>
<apply><times/>
<ci>x</ci>
<ci>y</ci>
</apply>
</apply>
<ci>x</ci>
<ci>y</ci>
</apply>
</apply>
<apply><times/>
<apply><power/>
<cn type="integer">2</cn>
<apply><times/>
<ci>x</ci>
<ci>y</ci>
</apply>
</apply>
<apply><power/>
<apply><log/>
<cn type="integer">2</cn>
</apply>
<cn type="integer">2</cn>
</apply>
<ci>x</ci>
<ci>y</ci>
</apply>
<apply><times/>
<apply><power/>
<cn type="integer">2</cn>
<apply><times/>
<ci>x</ci>
<ci>y</ci>
</apply>
</apply>
<apply><log/>
<cn type="integer">2</cn>
</apply>
</apply>
<apply><minus/>
<apply><sin/>
<apply><times/>
<ci>x</ci>
<ci>y</ci>
</apply>
</apply>
</apply>
<cn type="integer">1</cn>
</apply>
</math>
Intermediate representation:
(plus nil (minus nil (times nil (cos nil (times nil x y)) x y)) (times nil (
power nil 2 (times nil x y)) (power nil (log nil nil 2) 2) x y) (times nil (
power nil 2 (times nil x y)) (log nil nil 2)) (minus nil (sin nil (times nil x y
))) 1)
<OMOBJ>
<OMA>
<OMS cd="arith1" name="plus">
<OMA>
<OMS cd="arith1" name="minus">
<OMA>
<OMS cd="arith1" name="times">
<OMA>
<OMS cd="transc1" name="cos">
<OMA>
<OMS cd="arith1" name="times">
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMA>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMA>
<OMA>
<OMS cd="arith1" name="times">
<OMA>
<OMS cd="arith1" name="power">
<OMI> 2 </OMI>
<OMA>
<OMS cd="arith1" name="times">
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMA>
<OMA>
<OMS cd="arith1" name="power">
<OMA>
<OMS cd="transc1" name="log">
<OMI> 2 </OMI>
</OMA>
<OMI> 2 </OMI>
</OMA>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
<OMA>
<OMS cd="arith1" name="times">
<OMA>
<OMS cd="arith1" name="power">
<OMI> 2 </OMI>
<OMA>
<OMS cd="arith1" name="times">
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMA>
<OMA>
<OMS cd="transc1" name="log">
<OMI> 2 </OMI>
</OMA>
</OMA>
<OMA>
<OMS cd="arith1" name="minus">
<OMA>
<OMS cd="transc1" name="sin">
<OMA>
<OMS cd="arith1" name="times">
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMA>
</OMA>
<OMI> 1 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><eq/>
<cn>2</cn>
<cn>2</cn>
<cn>2</cn>
</reln>
</math>
Intermediate representation:
(eq nil 2 2 2)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="eq">
<OMI> 2 </OMI>
<OMI> 2 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><eq/>
<cn>2</cn>
<ci>A</ci>
<ci>u</ci>
</reln>
</math>
Intermediate representation:
(eq nil 2 a u)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="eq">
<OMI> 2 </OMI>
<OMV name="a"/>
<OMV name="u"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><neq/>
<cn>2</cn>
<cn>2</cn>
</reln>
</math>
Intermediate representation:
(neq nil 2 2)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="neq">
<OMI> 2 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><neq/>
<cn>2</cn>
<ci>A</ci>
</reln>
</math>
Intermediate representation:
(neq nil 2 a)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="neq">
<OMI> 2 </OMI>
<OMV name="a"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><lt/>
<cn>2</cn>
<cn>2</cn>
<cn>2</cn>
</reln>
</math>
Intermediate representation:
(lt nil 2 2 2)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="lt">
<OMI> 2 </OMI>
<OMI> 2 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><lt/>
<cn>2</cn>
<ci>A</ci>
<ci>u</ci>
</reln>
</math>
Intermediate representation:
(lt nil 2 a u)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="lt">
<OMI> 2 </OMI>
<OMV name="a"/>
<OMV name="u"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><gt/>
<cn>2</cn>
<cn>2</cn>
<cn>2</cn>
</reln>
</math>
Intermediate representation:
(gt nil 2 2 2)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="gt">
<OMI> 2 </OMI>
<OMI> 2 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><gt/>
<cn>2</cn>
<ci>A</ci>
<ci>u</ci>
</reln>
</math>
Intermediate representation:
(gt nil 2 a u)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="gt">
<OMI> 2 </OMI>
<OMV name="a"/>
<OMV name="u"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><geq/>
<cn>2</cn>
<cn>2</cn>
<cn>2</cn>
</reln>
</math>
Intermediate representation:
(geq nil 2 2 2)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="geq">
<OMI> 2 </OMI>
<OMI> 2 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><geq/>
<cn>2</cn>
<ci>A</ci>
<ci>u</ci>
</reln>
</math>
Intermediate representation:
(geq nil 2 a u)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="geq">
<OMI> 2 </OMI>
<OMV name="a"/>
<OMV name="u"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><leq/>
<cn>2</cn>
<cn>2</cn>
<cn>2</cn>
</reln>
</math>
Intermediate representation:
(leq nil 2 2 2)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="leq">
<OMI> 2 </OMI>
<OMI> 2 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<reln><leq/>
<cn>2</cn>
<ci>A</ci>
<ci>u</ci>
</reln>
</math>
Intermediate representation:
(leq nil 2 a u)
<OMOBJ>
<OMA>
<OMS cd="relation1" name="leq">
<OMI> 2 </OMI>
<OMV name="a"/>
<OMV name="u"/>
</OMA>
</OMOBJ>
%The following examples work perfectly when read
%in by mml2om() and prove that the tags employed
%work correctly. The ir output can then be used
%to see if the mathml produced works:
mml2om();
<math>
<apply><int/>
<bvar>
<ci>x</ci>
</bvar>
<lowlimit>
<cn type="integer">0</cn>
</lowlimit>
<uplimit>
<cn type="integer">1</cn>
</uplimit>
<apply><power/>
<ci>x</ci>
<cn type="integer">2</cn>
</apply>
</apply>
</math>
Intermediate representation:
(int nil (bvar x 1) (lowupperlimit 0 1) (power nil x 2))
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="defint"/>
<OMA>
<OMS cd="interval1" name="integer_interval"/>
<OMI> 0 </OMI>
<OMI> 1 </OMI>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="arith1" name="power">
<OMV name="x"/>
<OMI> 2 </OMI>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><int/>
<bvar>
<ci>x</ci>
</bvar>
<lowlimit>
<cn type="integer">1</cn>
</lowlimit>
<uplimit>
<cn type="constant">∞</cn>
</uplimit>
<ci>x</ci>
</apply>
</math>
Intermediate representation:
(int nil (bvar x 1) (lowupperlimit 1 !&infin!;) x)
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="defint"/>
<OMA>
<OMS cd="interval1" name="integer_interval"/>
<OMI> 1 </OMI>
<OMS cd="nums1" name="infinity"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMV name="x"/>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><int/>
<bvar>
<ci> x </ci>
</bvar>
<interval>
<ci> a </ci>
<ci> b </ci>
</interval>
<apply><cos/>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(int nil (bvar x 1) (interval nil a b) (cos nil x))
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="defint"/>
<OMA>
<OMS cd="interval1" name="interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="transc1" name="cos">
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
%this example is MathML1.0 and when passed
%through function mml2om() it translates it to
%MathML2.0
mml2om();
<math>
<apply><diff/>
<bvar>
<ci> x </ci>
<degree>
<cn> 2 </cn>
</degree>
</bvar>
<apply><fn><ci>f</ci></fn>
<ci> x </ci>
</apply>
</apply>
</math>
Intermediate representation:
(diff nil (bvar x 1) (diff nil (bvar x 1) (f nil x)))
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMS cd="calculus1" name="diff"/>
<OMBIND>
<OMS cd="fns1" name="lambda"/>
<OMBVAR>
<OMV name="x"/>
</OMBVAR>
<OMA>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="fn_type"/>
</OMATP>
<OMV name="f"/>
</OMATTR>
<OMV name="x"/>
</OMA>
</OMBIND>
</OMA>
</OMBIND>
</OMA>
</OMOBJ>
mml2om();
<math>
<list>
<apply><plus/>
<ci> x </ci>
<ci> y </ci>
</apply>
<cn> 3 </cn>
<cn> 7 </cn>
</list>
</math>
Intermediate representation:
(list nil (plus nil x y) 3 7)
<OMOBJ>
<OMA>
<OMS cd="list1" name="list"/>
<OMA>
<OMS cd="arith1" name="plus">
<OMV name="x"/>
<OMV name="y"/>
</OMA>
<OMI> 3 </OMI>
<OMI> 7 </OMI>
</OMA>
</OMOBJ>
mml2om();
<math>
<interval closure="open-closed">
<ci> a </ci>
<ci> b </ci>
</interval>
</math>
Intermediate representation:
(interval ((closure open!-closed)) a b)
<OMOBJ>
<OMA>
<OMS cd="interval1" name="interval_oc"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<interval>
<ci> a </ci>
<ci> b </ci>
</interval>
</math>
Intermediate representation:
(interval nil a b)
<OMOBJ>
<OMA>
<OMS cd="interval1" name="interval"/>
<OMV name="a"/>
<OMV name="b"/>
</OMA>
</OMOBJ>
mml2om();
<math>
<list>
<list>
<reln><eq/>
<ci>x</ci>
<apply>
<csymbol definitionURL="..." encoding="...">
<ci>root_of</ci>
</csymbol>
<apply><plus/>
<apply><minus/>
<apply><power/>
<ci>y</ci>
<ci>x_</ci>
</apply>
</apply>
<apply><minus/>
<apply><times/>
<apply><int/>
<bvar>
<ci>x_</ci>
</bvar>
<apply><power/>
<ci>x_</ci>
<ci>x_</ci>
</apply>
</apply>
<ci>y</ci>
</apply>
</apply>
<ci>x_</ci>
<ci>y</ci>
</apply>
<ci>x_</ci>
<ci>tag_1</ci>
</apply>
</reln>
<reln><eq/>
<ci>a</ci>
<apply><plus/>
<ci>x</ci>
<ci>y</ci>
</apply>
</reln>
</list>
</list>
</math>
Intermediate representation:
(list nil (list nil (eq nil x (root_of nil (plus nil (minus nil (power nil y x_)
) (minus nil (times nil (int nil (bvar x_ 1) nil (power nil x_ x_)) y)) x_ y) x_
tag_1)) (eq nil a (plus nil x y))))
<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>
mml2om();
<math>
<list>
<list>
<reln><eq/>
<ci>x</ci>
<apply>
<csymbol definitionURL="..." encoding="...">
<ci>root_of</ci>
</csymbol>
<apply><plus/>
<apply><times/>
<apply><exp/>
<apply><plus/>
<cn type="constant">ⅈ</cn>
<ci>x_</ci>
</apply>
</apply>
<ci>y</ci>
</apply>
<apply><exp/>
<apply><plus/>
<cn type="constant">ⅈ</cn>
<ci>x_</ci>
</apply>
</apply>
<apply><power/>
<ci>x_</ci>
<apply><plus/>
<ci>y</ci>
<cn type="integer">1</cn>
</apply>
</apply>
<apply><times/>
<apply><int/>
<bvar>
<ci>x_</ci>
</bvar>
<apply><power/>
<ci>x_</ci>
<ci>x_</ci>
</apply>
</apply>
<apply><power/>
<ci>y</ci>
<cn type="integer">2</cn>
</apply>
</apply>
<apply><times/>
<apply><int/>
<bvar>
<ci>x_</ci>
</bvar>
<apply><power/>
<ci>x_</ci>
<ci>x_</ci>
</apply>
</apply>
<ci>y</ci>
</apply>
</apply>
<ci>x_</ci>
<ci>tag_2</ci>
</apply>
</reln>
<reln><eq/>
<ci>z</ci>
<ci>y</ci>
</reln>
</list>
</list>
</math>
Intermediate representation:
(list nil (list nil (eq nil x (root_of nil (plus nil (times nil (exp nil (plus
nil !&imaginaryi!; x_)) y) (exp nil (plus nil !&imaginaryi!; x_)) (power nil x_
(plus nil y 1)) (times nil (int nil (bvar x_ 1) nil (power nil x_ x_)) (power
nil y 2)) (times nil (int nil (bvar x_ 1) nil (power nil x_ x_)) y)) x_ tag_2))
(eq nil z y)))
<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>
mml2om();
<math>
<apply><curl/>
<vector>
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</vector>
</apply>
</math>
Intermediate representation:
(curl nil (vectorml nil b 2 c))
<OMOBJ>
<OMA>
<OMS cd="veccalc1" name="curl">
<OMA>
<OMS cd="linalg1" name="vector"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><divergence/>
<vector>
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</vector>
</apply>
</math>
Intermediate representation:
(divergence nil (vectorml nil b 2 c))
<OMOBJ>
<OMA>
<OMS cd="veccalc1" name="divergence">
<OMA>
<OMS cd="linalg1" name="vector"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><laplacian/>
<vector>
<ci> b </ci>
<cn> 2 </cn>
<ci> c </ci>
</vector>
</apply>
</math>
Intermediate representation:
(laplacian nil (vectorml nil b 2 c))
<OMOBJ>
<OMA>
<OMS cd="veccalc1" name="laplacian">
<OMA>
<OMS cd="linalg1" name="vector"/>
<OMV name="b"/>
<OMI> 2 </OMI>
<OMV name="c"/>
</OMA>
</OMA>
</OMOBJ>
mml2om();
<math>
<apply><forall/>
<bvar>
<ci> a </ci>
</bvar>
<apply><eq/>
<apply><inverse/>
<apply><inverse/>
<ci> a </ci>
</apply>
</apply>
<ci> a </ci>
</apply>
</apply>
</math>
Intermediate representation:
(forall nil (bvar a 1) nil (eq nil (inverse nil (inverse nil a)) a))
<OMOBJ>
<OMBIND>
<OMS cd="quant1" name="forall"/>
<OMBVAR>
<OMV name="a"/>
</OMBVAR>
<OMA>
<OMS cd="relation1" name="eq">
<OMA>
<OMS cd="fns1" name="inverse">
<OMA>
<OMS cd="fns1" name="inverse">
<OMV name="a"/>
</OMA>
</OMA>
<OMV name="a"/>
</OMA>
</OMBIND>
</OMOBJ>
%end;
%in "$reduce/packages/mathml/examples.om";
% 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>
Intermediate representation:
(plus nil f d (plus nil 1 10000000000.0))
<math>
<apply><plus/>
<ci> f </ci>
<ci> d </ci>
<apply><plus/>
<cn type="integer"> 1 </cn>
<cn type="real"> 10000000000.0 </cn>
</apply>
</apply>
</math>
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>
Intermediate representation:
(lambda nil (bvar x 1) (sin nil x))
<math>
<lambda>
<bvar>
<ci> x </ci>
</bvar>
<apply><sin/>
<ci> x </ci>
</apply>
</lambda>
</math>
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>
Intermediate representation:
(lambda nil (bvar x 1) (bvar y 1) (plus nil x (sin nil y)))
<math>
<lambda>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<apply><plus/>
<ci> x </ci>
<apply><sin/>
<ci> y </ci>
</apply>
</apply>
</lambda>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS cd="arith1" name=plus/>
<OMV name=x/>
<OMA>
<OMS cd="transc1" name=sin/>
<OMV name=x/>
</OMA>
</OMA>
</OMOBJ>
Intermediate representation:
(plus nil x (sin nil x))
<math>
<apply><plus/>
<ci> x </ci>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (leq nil (abs nil (sin nil x)) 1.0))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<apply><leq/>
<apply><abs/>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
<cn type="real"> 1.0 </cn>
</apply>
</apply>
</math>
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>
Intermediate representation:
(not nil (exists nil (bvar x 1) (bvar y 1) (bvar z 1) (bvar n 1) (and nil (gt
nil n 2) (eq nil (plus nil (power nil x n) (power nil y n)) (power nil z n)))))
<math>
<apply><not/>
<apply><exists/>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<bvar>
<ci> z </ci>
</bvar>
<bvar>
<ci> n </ci>
</bvar>
<apply><and/>
<apply><gt/>
<ci> n </ci>
<cn type="integer"> 2 </cn>
</apply>
<apply><eq/>
<apply><plus/>
<apply><power/>
<ci> x </ci>
<ci> n </ci>
</apply>
<apply><power/>
<ci> y </ci>
<ci> n </ci>
</apply>
</apply>
<apply><power/>
<ci> z </ci>
<ci> n </ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
% 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>
Intermediate representation:
(matrix nil matrixcolumn ((1 2) (3 4) (5 6)))
<math>
<matrix>
<matrixrow>
<cn type="integer"> 1 </cn>
<cn type="integer"> 3 </cn>
<cn type="integer"> 5 </cn>
</matrixrow>
<matrixrow>
<cn type="integer"> 2 </cn>
<cn type="integer"> 4 </cn>
<cn type="integer"> 6 </cn>
</matrixrow>
</matrix>
</math>
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>
Intermediate representation:
(matrix nil matrixrow ((1 0) (0 1)))
<math>
<matrix>
<matrixrow>
<cn type="integer"> 1 </cn>
<cn type="integer"> 0 </cn>
</matrixrow>
<matrixrow>
<cn type="integer"> 0 </cn>
<cn type="integer"> 1 </cn>
</matrixrow>
</matrix>
</math>
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>
Intermediate representation:
(forall nil (bvar m 1) (and nil (eq nil (times nil (semantic (identity (o m s
c d = " l i n a l g 3 " n a m e = " i d e n t i t y " /)) (semantic (rowcount
(o m s c d = " l i n a l g 3 " n a m e = " r o w c o u n t " /)) m)) m) m) (
eq nil (times nil m (semantic (identity (o m s c d = " l i n a l g 3 " n a m
e = " i d e n t i t y " /)) (semantic (columncount (o m s c d = " l i n a l g
3 " n a m e = " c o l u m n c o u n t " /)) m))) m)))
<math>
<apply><forall/>
<bvar>
<ci> m </ci>
</bvar>
<apply><and/>
<apply><eq/>
<apply><times/>
<apply>
<fn>
<semantic>
<ci><mo>identity</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="identity"/>
</annotation-xml>
</semantic>
</fn>
<apply>
<fn>
<semantic>
<ci><mo>rowcount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="rowcount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
</apply>
<ci> m </ci>
</apply>
<ci> m </ci>
</apply>
<apply><eq/>
<apply><times/>
<ci> m </ci>
<apply>
<fn>
<semantic>
<ci><mo>identity</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="identity"/>
</annotation-xml>
</semantic>
</fn>
<apply>
<fn>
<semantic>
<ci><mo>columncount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="columncount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
</apply>
</apply>
<ci> m </ci>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(limit nil (bvar x 1) (condition (tendsto ((type above)) x 0.0)) (sin nil x))
<math>
<apply><limit/>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<apply><tendsto type="above"/>
<ci> x </ci>
<cn type="real"> 0.0 </cn>
</apply>
</condition>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
% 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>
Intermediate representation:
(semantic (limit (o m s c d = " f a k e c d " n a m e = " l i m i t " /))
nil (bvar x 1) (condition (tendsto ((type above)) x 0.0)) (sin nil x))
<math>
<apply>
<fn>
<semantic>
<ci><mo>limit</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="fakecd" name="limit"/>
</annotation-xml>
</semantic>
</fn>
<bvar>
<ci> x </ci>
</bvar>
<condition>
<apply><tendsto type="above"/>
<ci> x </ci>
<cn type="real"> 0.0 </cn>
</apply>
</condition>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
% 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>
Intermediate representation:
(notsubset nil (set nil 2 3 3) (set nil 1 2 3))
<math>
<apply><notsubset/>
<set>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
<cn type="integer"> 3 </cn>
</set>
<set>
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</set>
</apply>
</math>
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>
Intermediate representation:
(notsubset nil (set nil 2 3 3) (set nil 1 2 3))
<math>
<apply><notsubset/>
<set>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
<cn type="integer"> 3 </cn>
</set>
<set>
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</set>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar a 1) (bvar b 1) (eq nil (plus nil a b) (plus nil b a)))
<math>
<apply><forall/>
<bvar>
<ci> a </ci>
</bvar>
<bvar>
<ci> b </ci>
</bvar>
<apply><eq/>
<apply><plus/>
<ci> a </ci>
<ci> b </ci>
</apply>
<apply><plus/>
<ci> b </ci>
<ci> a </ci>
</apply>
</apply>
</apply>
</math>
% 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>
Intermediate representation:
(minus nil 1)
<math>
<apply><minus/>
<cn type="integer"> 1 </cn>
</apply>
</math>
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>
Intermediate representation:
(eq nil (not nil &false;) &true;)
<math>
<apply><eq/>
<apply><not/>
<cn type="constant"> &false; </cn>
</apply>
<cn type="constant"> &true; </cn>
</apply>
</math>
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>
Intermediate representation:
(eq nil (times nil (semantic (identity (o m s c d = " f n s 1 " n a m e = "
i d e n t i t y " /)) (semantic (rowcount (o m s c d = " l i n a l g 3 " n a
m e = " r o w c o u n t " /)) m)) m) m)
<math>
<apply><eq/>
<apply><times/>
<apply>
<fn>
<semantic>
<ci><mo>identity</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="fns1" name="identity"/>
</annotation-xml>
</semantic>
</fn>
<apply>
<fn>
<semantic>
<ci><mo>rowcount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="rowcount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
</apply>
<ci> m </ci>
</apply>
<ci> m </ci>
</apply>
</math>
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>
Intermediate representation:
(scalarproduct nil (vectorml nil 3 6 9) (vectorml nil 3 6 9))
<math>
<apply><scalarproduct/>
<vector>
<cn type="integer"> 3 </cn>
<cn type="integer"> 6 </cn>
<cn type="integer"> 9 </cn>
</vector>
<vector>
<cn type="integer"> 3 </cn>
<cn type="integer"> 6 </cn>
<cn type="integer"> 9 </cn>
</vector>
</apply>
</math>
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>
Intermediate representation:
(outerproduct nil (vectorml nil 3 6 9) (vectorml nil 3 6 9))
<math>
<apply><outerproduct/>
<vector>
<cn type="integer"> 3 </cn>
<cn type="integer"> 6 </cn>
<cn type="integer"> 9 </cn>
</vector>
<vector>
<cn type="integer"> 3 </cn>
<cn type="integer"> 6 </cn>
<cn type="integer"> 9 </cn>
</vector>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar a 1) (eq nil (plus nil a 0) a))
<math>
<apply><forall/>
<bvar>
<ci> a </ci>
</bvar>
<apply><eq/>
<apply><plus/>
<ci> a </ci>
<cn type="integer"> 0 </cn>
</apply>
<ci> a </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar a 1) (eq nil (times nil 1 a) a))
<math>
<apply><forall/>
<bvar>
<ci> a </ci>
</bvar>
<apply><eq/>
<apply><times/>
<cn type="integer"> 1 </cn>
<ci> a </ci>
</apply>
<ci> a </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(eq nil (semantic (bigfloat (o m s c d = " b i g f l o a t 1 " n a m e = " b
i g f l o a t " /)) m r e) (times nil m (power nil r e)))
<math>
<apply><eq/>
<apply>
<fn>
<semantic>
<ci><mo>bigfloat</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="bigfloat1" name="bigfloat"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
<ci> r </ci>
<ci> e </ci>
</apply>
<apply><times/>
<ci> m </ci>
<apply><power/>
<ci> r </ci>
<ci> e </ci>
</apply>
</apply>
</apply>
</math>
% 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>
Intermediate representation:
(int nil (bvar x 1) (sin nil x))
<math>
<apply><int/>
<bvar>
<ci> x </ci>
</bvar>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS cd="calculus1" name="int"/>
<OMA>
<OMS cd="arith1" name="plus"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMA>
</OMOBJ>
Intermediate representation:
(int nil (bvar x 1) (plus nil x y))
<math>
<apply><int/>
<bvar>
<ci> x </ci>
</bvar>
<apply><plus/>
<ci> x </ci>
<ci> y </ci>
</apply>
</apply>
</math>
% 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>
Intermediate representation:
(eq nil (diff nil (bvar x 1) (plus nil x 1.0)) 1.0)
<math>
<apply><eq/>
<apply><diff/>
<bvar>
<ci> x </ci>
</bvar>
<apply><plus/>
<ci> x </ci>
<cn type="real"> 1.0 </cn>
</apply>
</apply>
<cn type="real"> 1.0 </cn>
</apply>
</math>
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>
Intermediate representation:
(eq nil (partialdiff nil (bvar z 1) (bvar x 1) (times nil x y z)) y)
<math>
<apply><eq/>
<apply><partialdiff/>
<bvar>
<ci> z </ci>
</bvar>
<bvar>
<ci> x </ci>
</bvar>
<apply><times/>
<ci> x </ci>
<ci> y </ci>
<ci> z </ci>
</apply>
</apply>
<ci> y </ci>
</apply>
</math>
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>
Intermediate representation:
(eq nil (factorial nil n) (product nil (bvar i 1) (lowupperlimit nil 1 n) i))
<math>
<apply><eq/>
<apply><factorial/>
<ci> n </ci>
</apply>
<apply><product/>
<bvar>
<ci> i </ci>
</bvar>
<lowlimit>
<cn type="integer"> 1 </cn>
</lowlimit>
<uplimit>
<ci> n </ci>
</uplimit>
<ci> i </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(not nil (exists nil (bvar c 1) (and nil (in nil (divide nil a c) (semantic (z (
o m s c d = " s e t n a m e 1 " n a m e = " z " /)))) (in nil (divide nil b
c) (semantic (z (o m s c d = " s e t n a m e 1 " n a m e = " z " /)))) (gt
nil c (gcd nil a b)))))
<math>
<apply><not/>
<apply><exists/>
<bvar>
<ci> c </ci>
</bvar>
<apply><and/>
<apply><in/>
<apply><divide/>
<ci> a </ci>
<ci> c </ci>
</apply>
<semantic>
<ci><mo>z</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="setname1" name="z"/>
</annotation-xml>
</semantic>
</apply>
<apply><in/>
<apply><divide/>
<ci> b </ci>
<ci> c </ci>
</apply>
<semantic>
<ci><mo>z</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="setname1" name="z"/>
</annotation-xml>
</semantic>
</apply>
<apply><gt/>
<ci> c </ci>
<apply><gcd/>
<ci> a </ci>
<ci> b </ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (implies nil &false; x))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<apply><implies/>
<cn type="constant"> &false; </cn>
<ci> x </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(eq nil (max nil 1 9 5) 9)
<math>
<apply><eq/>
<apply><max/>
<cn type="integer"> 1 </cn>
<cn type="integer"> 9 </cn>
<cn type="integer"> 5 </cn>
</apply>
<cn type="integer"> 9 </cn>
</apply>
</math>
% 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>
Intermediate representation:
(implies nil (and nil (in nil a a) (in nil a b)) (in nil a (intersect nil a b)))
<math>
<apply><implies/>
<apply><and/>
<apply><in/>
<ci> a </ci>
<ci> a </ci>
</apply>
<apply><in/>
<ci> a </ci>
<ci> b </ci>
</apply>
</apply>
<apply><in/>
<ci> a </ci>
<apply><intersect/>
<ci> a </ci>
<ci> b </ci>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(set ((type multiset)) 4 1 0 1 4)
<math>
<set type="multiset">
<cn type="integer"> 4 </cn>
<cn type="integer"> 1 </cn>
<cn type="integer"> 0 </cn>
<cn type="integer"> 1 </cn>
<cn type="integer"> 4 </cn>
</set>
</math>
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>
Intermediate representation:
(and nil (subset nil (intersect nil a b) a) (subset nil (intersect nil a b) b))
<math>
<apply><and/>
<apply><subset/>
<apply><intersect/>
<ci> a </ci>
<ci> b </ci>
</apply>
<ci> a </ci>
</apply>
<apply><subset/>
<apply><intersect/>
<ci> a </ci>
<ci> b </ci>
</apply>
<ci> b </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(and nil (subset nil a (union nil a b)) (subset nil b (union nil a b)))
<math>
<apply><and/>
<apply><subset/>
<ci> a </ci>
<apply><union/>
<ci> a </ci>
<ci> b </ci>
</apply>
</apply>
<apply><subset/>
<ci> b </ci>
<apply><union/>
<ci> a </ci>
<ci> b </ci>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar a 1) (bvar b 1) (bvar c 1) (eq nil (union nil a (intersect nil
b c)) (intersect nil (union nil a b) (union nil a c))))
<math>
<apply><forall/>
<bvar>
<ci> a </ci>
</bvar>
<bvar>
<ci> b </ci>
</bvar>
<bvar>
<ci> c </ci>
</bvar>
<apply><eq/>
<apply><union/>
<ci> a </ci>
<apply><intersect/>
<ci> b </ci>
<ci> c </ci>
</apply>
</apply>
<apply><intersect/>
<apply><union/>
<ci> a </ci>
<ci> b </ci>
</apply>
<apply><union/>
<ci> a </ci>
<ci> c </ci>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(subset nil (setdiff nil a b) a)
<math>
<apply><subset/>
<apply><setdiff/>
<ci> a </ci>
<ci> b </ci>
</apply>
<ci> a </ci>
</apply>
</math>
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>
Intermediate representation:
(implies nil (and nil (subset nil b a) (subset nil c b)) (subset nil c a))
<math>
<apply><implies/>
<apply><and/>
<apply><subset/>
<ci> b </ci>
<ci> a </ci>
</apply>
<apply><subset/>
<ci> c </ci>
<ci> b </ci>
</apply>
</apply>
<apply><subset/>
<ci> c </ci>
<ci> a </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(notin nil 4 (set ((type multiset)) 1 1 2 3))
<math>
<apply><notin/>
<cn type="integer"> 4 </cn>
<set type="multiset">
<cn type="integer"> 1 </cn>
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</set>
</apply>
</math>
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>
Intermediate representation:
(prsubset nil (set ((type multiset)) 2 3) (set ((type multiset)) 2 2 3))
<math>
<apply><prsubset/>
<set type="multiset">
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</set>
<set type="multiset">
<cn type="integer"> 2 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</set>
</apply>
</math>
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>
Intermediate representation:
(notsubset nil (set ((type multiset)) 2 3 3) (set ((type multiset)) 1 2 3))
<math>
<apply><notsubset/>
<set type="multiset">
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
<cn type="integer"> 3 </cn>
</set>
<set type="multiset">
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</set>
</apply>
</math>
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>
Intermediate representation:
(notprsubset nil (set ((type multiset)) 1 2 1) (set ((type multiset)) 1 2 1))
<math>
<apply><notprsubset/>
<set type="multiset">
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 1 </cn>
</set>
<set type="multiset">
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 1 </cn>
</set>
</apply>
</math>
% 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>
Intermediate representation:
(eq nil 8 (based_integer nil 8 (string 10)))
<math>
<apply><eq/>
<cn type="integer"> 8 </cn>
<cn type="integer" base="8"> 10 </cn>
</apply>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS cd="nums1" name="rational"/>
<OMI> 1 </OMI>
<OMI> 2 </OMI>
</OMA>
</OMOBJ>
Intermediate representation:
(rational nil 1 2)
<math>
<cn type="rational">1<sep/>2</cn>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (bvar y 1) (eq nil (plus nil x (times nil y &imaginaryi;)
) (plus nil x (times nil &imaginaryi; y))))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<apply><eq/>
<apply><plus/>
<ci> x </ci>
<apply><times/>
<ci> y </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
<apply><plus/>
<ci> x </ci>
<apply><times/>
<cn type="constant"> &imaginaryi; </cn>
<ci> y </ci>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (bvar y 1) (bvar r 1) (bvar a 1) (implies nil (and nil (
eq nil (times nil r (sin nil a)) y) (eq nil (times nil r (cos nil a)) x)) (eq
nil (times nil r (exp nil (times nil a &imaginaryi;))) (plus nil x (times nil y
&imaginaryi;)))))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<bvar>
<ci> r </ci>
</bvar>
<bvar>
<ci> a </ci>
</bvar>
<apply><implies/>
<apply><and/>
<apply><eq/>
<apply><times/>
<ci> r </ci>
<apply><sin/>
<ci> a </ci>
</apply>
</apply>
<ci> y </ci>
</apply>
<apply><eq/>
<apply><times/>
<ci> r </ci>
<apply><cos/>
<ci> a </ci>
</apply>
</apply>
<ci> x </ci>
</apply>
</apply>
<apply><eq/>
<apply><times/>
<ci> r </ci>
<apply><exp/>
<apply><times/>
<ci> a </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</apply>
<apply><plus/>
<ci> x </ci>
<apply><times/>
<ci> y </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (implies nil (and nil (in nil a (semantic (r (o m s c d
= " s e t n a m e 1 " n a m e = " r " /)))) (in nil k (semantic (z (o m s c
d = " s e t n a m e 1 " n a m e = " z " /))))) (eq nil (times nil x (exp nil (
times nil a &imaginaryi;))) (times nil x (exp nil (times nil (plus nil a (times
nil 2 π k)) &imaginaryi;))))))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<apply><implies/>
<apply><and/>
<apply><in/>
<ci> a </ci>
<semantic>
<ci><mo>r</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="setname1" name="r"/>
</annotation-xml>
</semantic>
</apply>
<apply><in/>
<ci> k </ci>
<semantic>
<ci><mo>z</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="setname1" name="z"/>
</annotation-xml>
</semantic>
</apply>
</apply>
<apply><eq/>
<apply><times/>
<ci> x </ci>
<apply><exp/>
<apply><times/>
<ci> a </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</apply>
<apply><times/>
<ci> x </ci>
<apply><exp/>
<apply><times/>
<apply><plus/>
<ci> a </ci>
<apply><times/>
<cn type="integer"> 2 </cn>
<cn type="constant"> π </cn>
<ci> k </ci>
</apply>
</apply>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(eq nil ⅇ (sum nil (bvar j 1) (lowupperlimit nil 0 ∞) (divide
nil 1 (factorial nil j))))
<math>
<apply><eq/>
<cn type="constant"> ⅇ </cn>
<apply><sum/>
<bvar>
<ci> j </ci>
</bvar>
<lowlimit>
<cn type="integer"> 0 </cn>
</lowlimit>
<uplimit>
<cn type="constant"> ∞ </cn>
</uplimit>
<apply><divide/>
<cn type="integer"> 1 </cn>
<apply><factorial/>
<ci> j </ci>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(eq nil (power nil &imaginaryi; 2) (minus nil 1))
<math>
<apply><eq/>
<apply><power/>
<cn type="constant"> &imaginaryi; </cn>
<cn type="integer"> 2 </cn>
</apply>
<apply><minus/>
<cn type="integer"> 1 </cn>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (bvar y 1) (eq nil y (imaginary nil (plus nil x (times
nil y &imaginaryi;)))))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<apply><eq/>
<ci> y </ci>
<apply><imaginary/>
<apply><plus/>
<ci> x </ci>
<apply><times/>
<ci> y </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (bvar y 1) (eq nil x (real nil (plus nil x (times nil y
&imaginaryi;)))))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<bvar>
<ci> y </ci>
</bvar>
<apply><eq/>
<ci> x </ci>
<apply><real/>
<apply><plus/>
<ci> x </ci>
<apply><times/>
<ci> y </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(implies nil (in nil a (semantic (r (o m s c d = " s e t n a m e 1 " n a m e
= " r " /)))) (lt nil x ∞))
<math>
<apply><implies/>
<apply><in/>
<ci> a </ci>
<semantic>
<ci><mo>r</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="setname1" name="r"/>
</annotation-xml>
</semantic>
</apply>
<apply><lt/>
<ci> x </ci>
<cn type="constant"> ∞ </cn>
</apply>
</apply>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS cd="relation1" name="neq"/>
<OMS cd="nums1" name="NaN"/>
<OMS cd="nums1" name="NaN"/>
</OMA>
</OMOBJ>
Intermediate representation:
(neq nil ¬anumber; ¬anumber;)
<math>
<apply><neq/>
<ci> ¬anumber; </ci>
<ci> ¬anumber; </ci>
</apply>
</math>
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>
Intermediate representation:
(eq nil π (sum nil (bvar j 1) (lowupperlimit nil 0 ∞) (minus nil (
divide nil 1 (plus nil (times nil 4 j) 1)) (divide nil 1 (plus nil (times nil 4
j) 1)))))
<math>
<apply><eq/>
<cn type="constant"> π </cn>
<apply><sum/>
<bvar>
<ci> j </ci>
</bvar>
<lowlimit>
<cn type="integer"> 0 </cn>
</lowlimit>
<uplimit>
<cn type="constant"> ∞ </cn>
</uplimit>
<apply><minus/>
<apply><divide/>
<cn type="integer"> 1 </cn>
<apply><plus/>
<apply><times/>
<cn type="integer"> 4 </cn>
<ci> j </ci>
</apply>
<cn type="integer"> 1 </cn>
</apply>
</apply>
<apply><divide/>
<cn type="integer"> 1 </cn>
<apply><plus/>
<apply><times/>
<cn type="integer"> 4 </cn>
<ci> j </ci>
</apply>
<cn type="integer"> 1 </cn>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (and nil (lt nil (minus nil (semantic (ceiling (o m s c
d = " r o u n d i n g 1 " n a m e = " c e i l i n g " /)) x) 1) x) (leq nil x
(semantic (ceiling (o m s c d = " r o u n d i n g 1 " n a m e = " c e i l i
n g " /)) x))))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<apply><and/>
<apply><lt/>
<apply><minus/>
<apply>
<fn>
<semantic>
<ci><mo>ceiling</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="rounding1" name="ceiling"/>
</annotation-xml>
</semantic>
</fn>
<ci> x </ci>
</apply>
<cn type="integer"> 1 </cn>
</apply>
<ci> x </ci>
</apply>
<apply><leq/>
<ci> x </ci>
<apply>
<fn>
<semantic>
<ci><mo>ceiling</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="rounding1" name="ceiling"/>
</annotation-xml>
</semantic>
</fn>
<ci> x </ci>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(eq nil (mean nil 1 2 3) 3)
<math>
<apply><eq/>
<apply><mean/>
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</apply>
<cn type="integer"> 3 </cn>
</apply>
</math>
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>
Intermediate representation:
(sdev nil 3.1 2.2 1.8 1.1 3.3 2.4 5.5 2.3 1.7 1.8 3.4 4.0 3.3)
<math>
<apply><sdev/>
<cn type="real"> 3.1 </cn>
<cn type="real"> 2.2 </cn>
<cn type="real"> 1.8 </cn>
<cn type="real"> 1.1 </cn>
<cn type="real"> 3.3 </cn>
<cn type="real"> 2.4 </cn>
<cn type="real"> 5.5 </cn>
<cn type="real"> 2.3 </cn>
<cn type="real"> 1.7 </cn>
<cn type="real"> 1.8 </cn>
<cn type="real"> 3.4 </cn>
<cn type="real"> 4.0 </cn>
<cn type="real"> 3.3 </cn>
</apply>
</math>
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>
Intermediate representation:
(implies nil (eq nil (power nil a b) c) (eq nil (log nil a c) b))
<math>
<apply><implies/>
<apply><eq/>
<apply><power/>
<ci> a </ci>
<ci> b </ci>
</apply>
<ci> c </ci>
</apply>
<apply><eq/>
<apply><log/>
<logbase>
<ci> a </ci>
</logbase>
<ci> c </ci>
<apply>
<ci> b </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(and nil (lt nil (minus nil π) (imaginary nil (ln nil x))) (leq nil (
imaginary nil (ln nil x)) π))
<math>
<apply><and/>
<apply><lt/>
<apply><minus/>
<cn type="constant"> π </cn>
</apply>
<apply><imaginary/>
<apply><ln/>
<ci> x </ci>
</apply>
</apply>
</apply>
<apply><leq/>
<apply><imaginary/>
<apply><ln/>
<ci> x </ci>
</apply>
</apply>
<cn type="constant"> π </cn>
</apply>
</apply>
</math>
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>
Intermediate representation:
(eq nil (curl nil f) (plus nil (vectorproduct nil (vectorml nil 1 0 0) (
partialdiff nil f)) (vectorproduct nil (vectorml nil 0 1 0) (partialdiff nil f))
(vectorproduct nil (vectorml nil 0 0 1) (partialdiff nil f))))
<math>
<apply><eq/>
<apply><curl/>
<ci> f </ci>
</apply>
<apply><plus/>
<apply><vectorproduct/>
<vector>
<cn type="integer"> 1 </cn>
<cn type="integer"> 0 </cn>
<cn type="integer"> 0 </cn>
</vector>
<apply><partialdiff/>
<ci> f </ci>
</apply>
</apply>
<apply><vectorproduct/>
<vector>
<cn type="integer"> 0 </cn>
<cn type="integer"> 1 </cn>
<cn type="integer"> 0 </cn>
</vector>
<apply><partialdiff/>
<ci> f </ci>
</apply>
</apply>
<apply><vectorproduct/>
<vector>
<cn type="integer"> 0 </cn>
<cn type="integer"> 0 </cn>
<cn type="integer"> 1 </cn>
</vector>
<apply><partialdiff/>
<ci> f </ci>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar x 1) (and nil (lt nil (minus nil π) (arg nil x)) (leq nil (
arg nil x) π)))
<math>
<apply><forall/>
<bvar>
<ci> x </ci>
</bvar>
<apply><and/>
<apply><lt/>
<apply><minus/>
<cn type="constant"> π </cn>
</apply>
<apply><arg/>
<ci> x </ci>
</apply>
</apply>
<apply><leq/>
<apply><arg/>
<ci> x </ci>
</apply>
<cn type="constant"> π </cn>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar a 1) (eq nil (inverse nil (inverse nil a)) a))
<math>
<apply><forall/>
<bvar>
<ci> a </ci>
</bvar>
<apply><eq/>
<apply><inverse/>
<apply><inverse/>
<ci> a </ci>
</apply>
</apply>
<ci> a </ci>
</apply>
</apply>
</math>
% 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>
Intermediate representation:
(forall nil (bvar n 1) (eq nil (semantic (apply_to_list (o m s c d = " f n s 2
" n a m e = " a p p l y _ t o _ l i s t " /)) (plus nil (semantic (make_list (
o m s c d = " l i s t 1 " n a m e = " m a k e _ l i s t " /)) 1 n (semantic
(identity (o m s c d = " f n s 1 " n a m e = " i d e n t i t y " /)))))) (
divide nil (times nil n (plus nil n 1)) 2)))
<math>
<apply><forall/>
<bvar>
<ci> n </ci>
</bvar>
<apply><eq/>
<apply>
<fn>
<semantic>
<ci><mo>apply_to_list</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="fns2" name="apply_to_list"/>
</annotation-xml>
</semantic>
</fn>
<apply><plus/>
<apply>
<fn>
<semantic>
<ci><mo>make_list</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="list1" name="make_list"/>
</annotation-xml>
</semantic>
</fn>
<cn type="integer"> 1 </cn>
<ci> n </ci>
<semantic>
<ci><mo>identity</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="fns1" name="identity"/>
</annotation-xml>
</semantic>
</apply>
</apply>
</apply>
<apply><divide/>
<apply><times/>
<ci> n </ci>
<apply><plus/>
<ci> n </ci>
<cn type="integer"> 1 </cn>
</apply>
</apply>
<cn type="integer"> 2 </cn>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(eq nil (determinant nil (semantic (identity (o m s c d = " l i n a l g 3 "
n a m e = " i d e n t i t y " /)) n)) 1)
<math>
<apply><eq/>
<apply><determinant/>
<apply>
<fn>
<semantic>
<ci><mo>identity</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="identity"/>
</annotation-xml>
</semantic>
</fn>
<ci> n </ci>
</apply>
</apply>
<cn type="integer"> 1 </cn>
</apply>
</math>
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>
Intermediate representation:
(eq nil (transpose nil (matrix nil matrixrow ((0 1) (2 3)))) (matrix nil
matrixrow ((0 2) (1 3))))
<math>
<apply><eq/>
<apply><transpose/>
<matrix>
<matrixrow>
<cn type="integer"> 0 </cn>
<cn type="integer"> 1 </cn>
</matrixrow>
<matrixrow>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</matrixrow>
</matrix>
</apply>
<matrix>
<matrixrow>
<cn type="integer"> 0 </cn>
<cn type="integer"> 2 </cn>
</matrixrow>
<matrixrow>
<cn type="integer"> 1 </cn>
<cn type="integer"> 3 </cn>
</matrixrow>
</matrix>
</apply>
</math>
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>
Intermediate representation:
(equivalent nil (equivalent nil a b) (and nil (implies nil a b) (implies nil b a
)))
<math>
<apply><equivalent/>
<apply><equivalent/>
<ci> a </ci>
<ci> b </ci>
</apply>
<apply><and/>
<apply><implies/>
<ci> a </ci>
<ci> b </ci>
</apply>
<apply><implies/>
<ci> b </ci>
<ci> a </ci>
</apply>
</apply>
</apply>
</math>
om2mml();
<OMOBJ>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="complex_polar_type"/>
</OMATP>
<OMV name="z"/>
</OMATTR>
</OMOBJ>
Intermediate representation:
(ci ((type complex_polar)) z)
<math>
<ci type="complex_polar">z</ci>
</math>
% 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>
Intermediate representation:
(ci ((type integer)) z)
<math>
<ci type="integer">z</ci>
</math>
om2mml();
<OMOBJ>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="real_type"/>
</OMATP>
<OMV name="z"/>
</OMATTR>
</OMOBJ>
Intermediate representation:
(ci ((type real)) z)
<math>
<ci type="real">z</ci>
</math>
om2mml();
<OMOBJ>
<OMATTR>
<OMATP>
<OMS cd="typmml" name="type"/>
<OMS cd="typmml" name="rational_type"/>
</OMATP>
<OMV name="z"/>
</OMATTR>
</OMOBJ>
Intermediate representation:
(ci ((type rational)) z)
<math>
<ci type="rational">z</ci>
</math>
% 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>
Intermediate representation:
(f nil 1 2 3)
<math>
<apply>
<csymbol>
<ci>f</ci>
</csymbol>
<cn type="integer"> 1 </cn>
<cn type="integer"> 2 </cn>
<cn type="integer"> 3 </cn>
</apply>
</math>
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>
Intermediate representation:
(times nil (ci ((type matrix)) a) (sin nil x))
<math>
<apply><times/>
<ci type="matrix">a</ci>
<apply><sin/>
<ci> x </ci>
</apply>
</apply>
</math>
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>
Intermediate representation:
(selector nil (vectorml nil 3 6 9) 2)
<math>
<apply><selector/>
<vector>
<cn type="integer"> 3 </cn>
<cn type="integer"> 6 </cn>
<cn type="integer"> 9 </cn>
</vector>
<cn type="integer"> 2 </cn>
</apply>
</math>
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>
Intermediate representation:
(selector nil (semantic (matrixrow (o m s c d = " l i n a l g 1 " n a m e =
" m a t r i x r o w " /)) 0 1 0) 2)
<math>
<apply><selector/>
<apply>
<fn>
<semantic>
<ci><mo>matrixrow</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg1" name="matrixrow"/>
</annotation-xml>
</semantic>
</fn>
<cn type="integer"> 0 </cn>
<cn type="integer"> 1 </cn>
<cn type="integer"> 0 </cn>
</apply>
<cn type="integer"> 2 </cn>
</apply>
</math>
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>
Intermediate representation:
(forall nil (bvar m 1) (and nil (eq nil (times nil (semantic (zero (o m s c d
= " l i n a l g 3 " n a m e = " z e r o " /)) (semantic (rowcount (o m s c d
= " l i n a l g 3 " n a m e = " r o w c o u n t " /)) m) (semantic (rowcount (
o m s c d = " l i n a l g 3 " n a m e = " r o w c o u n t " /)) m)) m) (
semantic (zero (o m s c d = " l i n a l g 3 " n a m e = " z e r o " /)) (
semantic (rowcount (o m s c d = " l i n a l g 3 " n a m e = " r o w c o u n
t " /)) m) (semantic (columncount (o m s c d = " l i n a l g 3 " n a m e = "
c o l u m n c o u n t " /)) m))) (eq nil (times nil m (semantic (zero (o m s c
d = " l i n a l g 3 " n a m e = " z e r o " /)) (semantic (columncount (o m s
c d = " l i n a l g 3 " n a m e = " c o l u m n c o u n t " /)) m) (semantic
(columncount (o m s c d = " l i n a l g 3 " n a m e = " c o l u m n c o u n
t " /)) m))) (semantic (zero (o m s c d = " l i n a l g 3 " n a m e = " z e
r o " /)) (semantic (rowcount (o m s c d = " l i n a l g 3 " n a m e = " r o
w c o u n t " /)) m) (semantic (columncount (o m s c d = " l i n a l g 3 " n
a m e = " c o l u m n c o u n t " /)) m)))))
<math>
<apply><forall/>
<bvar>
<ci> m </ci>
</bvar>
<apply><and/>
<apply><eq/>
<apply><times/>
<apply>
<fn>
<semantic>
<ci><mo>zero</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="zero"/>
</annotation-xml>
</semantic>
</fn>
<apply>
<fn>
<semantic>
<ci><mo>rowcount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="rowcount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
<apply>
<fn>
<semantic>
<ci><mo>rowcount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="rowcount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
</apply>
<ci> m </ci>
</apply>
<apply>
<fn>
<semantic>
<ci><mo>zero</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="zero"/>
</annotation-xml>
</semantic>
</fn>
<apply>
<fn>
<semantic>
<ci><mo>rowcount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="rowcount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
<apply>
<fn>
<semantic>
<ci><mo>columncount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="columncount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
</apply>
</apply>
<apply><eq/>
<apply><times/>
<ci> m </ci>
<apply>
<fn>
<semantic>
<ci><mo>zero</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="zero"/>
</annotation-xml>
</semantic>
</fn>
<apply>
<fn>
<semantic>
<ci><mo>columncount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="columncount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
<apply>
<fn>
<semantic>
<ci><mo>columncount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="columncount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
</apply>
</apply>
<apply>
<fn>
<semantic>
<ci><mo>zero</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="zero"/>
</annotation-xml>
</semantic>
</fn>
<apply>
<fn>
<semantic>
<ci><mo>rowcount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="rowcount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
<apply>
<fn>
<semantic>
<ci><mo>columncount</mo></ci>
<annotation-xml encoding="OpenMath">
<oms cd="linalg3" name="columncount"/>
</annotation-xml>
</semantic>
</fn>
<ci> m </ci>
</apply>
</apply>
</apply>
</apply>
</apply>
</math>
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>
Intermediate representation:
(selector nil (ci ((type vectorml)) a) 1)
<math>
<apply><selector/>
<ci type="vector">a</ci>
<cn type="integer"> 1 </cn>
</apply>
</math>
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>
Intermediate representation:
(selector nil (ci ((type matrix)) a) 1 1)
<math>
<apply><selector/>
<ci type="matrix">a</ci>
<cn type="integer"> 1 </cn>
<cn type="integer"> 1 </cn>
</apply>
</math>
% 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>
Intermediate representation:
(list nil (list nil (eq nil x (root_of nil (plus nil (minus nil (power nil y x_)
) (minus nil (times nil (int nil (bvar x_ 1) (power nil x_ x_)) y)) x_ y) x_
tag_1)) (eq nil a (plus nil x y))))
<math>
<list>
<list>
<apply><eq/>
<ci> x </ci>
<apply>
<csymbol>
<ci>root_of</ci>
</csymbol>
<apply><plus/>
<apply><minus/>
<apply><power/>
<ci> y </ci>
<ci> x_ </ci>
</apply>
</apply>
<apply><minus/>
<apply><times/>
<apply><int/>
<bvar>
<ci> x_ </ci>
</bvar>
<apply><power/>
<ci> x_ </ci>
<ci> x_ </ci>
</apply>
</apply>
<ci> y </ci>
</apply>
</apply>
<ci> x_ </ci>
<ci> y </ci>
</apply>
<ci> x_ </ci>
<ci> tag_1 </ci>
</apply>
</apply>
<apply><eq/>
<ci> a </ci>
<apply><plus/>
<ci> x </ci>
<ci> y </ci>
</apply>
</apply>
</list>
</list>
</math>
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>
Intermediate representation:
(list nil (list nil (eq nil x (root_of nil (plus nil (times nil (exp nil (plus
nil &imaginaryi; x_)) y) (exp nil (plus nil &imaginaryi; x_)) (power nil x_ (
plus nil y 1)) (times nil (int nil (bvar x_ 1) (power nil x_ x_)) (power nil y 2
)) (times nil (int nil (bvar x_ 1) (power nil x_ x_)) y)) x_ tag_2)) (eq nil z y
)))
<math>
<list>
<list>
<apply><eq/>
<ci> x </ci>
<apply>
<csymbol>
<ci>root_of</ci>
</csymbol>
<apply><plus/>
<apply><times/>
<apply><exp/>
<apply><plus/>
<cn type="constant"> &imaginaryi; </cn>
<ci> x_ </ci>
</apply>
</apply>
<ci> y </ci>
</apply>
<apply><exp/>
<apply><plus/>
<cn type="constant"> &imaginaryi; </cn>
<ci> x_ </ci>
</apply>
</apply>
<apply><power/>
<ci> x_ </ci>
<apply><plus/>
<ci> y </ci>
<cn type="integer"> 1 </cn>
</apply>
</apply>
<apply><times/>
<apply><int/>
<bvar>
<ci> x_ </ci>
</bvar>
<apply><power/>
<ci> x_ </ci>
<ci> x_ </ci>
</apply>
</apply>
<apply><power/>
<ci> y </ci>
<cn type="integer"> 2 </cn>
</apply>
</apply>
<apply><times/>
<apply><int/>
<bvar>
<ci> x_ </ci>
</bvar>
<apply><power/>
<ci> x_ </ci>
<ci> x_ </ci>
</apply>
</apply>
<ci> y </ci>
</apply>
</apply>
<ci> x_ </ci>
<ci> tag_2 </ci>
</apply>
</apply>
<apply><eq/>
<ci> z </ci>
<ci> y </ci>
</apply>
</list>
</list>
</math>
om2mml();
<OMOBJ>
<OMATTR>
<OMATP>
<OMS cd="cc" name="type"/>
<OMS cd="omtypes" name="integer"/>
</OMATP>
<OMI> 0 </OMI>
</OMATTR>
</OMOBJ>
Intermediate representation:
(cn ((type integer)) 0)
<math>
<cn type="integer">0</cn>
</math>
om2mml();
<OMOBJ>
<OMATTR>
<OMATP>
<OMS cd="cc" name="type"/>
<OMS cd="omtypes" name="float"/>
</OMATP>
<OMF dec=1.0/>
</OMATTR>
</OMOBJ>
Intermediate representation:
(cn ((type semantic)) 1.0)
<math>
<cn type="semantic">1.0</cn>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS name="complex_cartesian" cd="nums1"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMOBJ>
Intermediate representation:
(plus nil x (times nil y &imaginaryi;))
<math>
<apply><plus/>
<ci> x </ci>
<apply><times/>
<ci> y </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS name="complex_polar" cd="nums1"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMOBJ>
Intermediate representation:
(times nil x (exp nil (times nil y &imaginaryi;)))
<math>
<apply><times/>
<ci> x </ci>
<apply><exp/>
<apply><times/>
<ci> y </ci>
<cn type="constant"> &imaginaryi; </cn>
</apply>
</apply>
</apply>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS name="rational" cd="nums1"/>
<OMV name="x"/>
<OMV name="y"/>
</OMA>
</OMOBJ>
Intermediate representation:
(divide nil x y)
<math>
<apply><divide/>
<ci> x </ci>
<ci> y </ci>
</apply>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS name="complex_cartesian" cd="nums1"/>
<OMI>4</OMI>
<OMI>2</OMI>
</OMA>
</OMOBJ>
Intermediate representation:
(complex_cartesian nil 4 2)
<math>
<cn type="complex-cartesian"> 4 <sep/> 2 </cn>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS name="complex_polar" cd="nums1"/>
<OMI>4</OMI>
<OMI>2</OMI>
</OMA>
</OMOBJ>
Intermediate representation:
(complex_polar nil 4 2)
<math>
<cn type="complex-polar"> 4 <sep/> 2 </cn>
</math>
om2mml();
<OMOBJ>
<OMA>
<OMS name="rational" cd="nums1"/>
<OMI>4</OMI>
<OMI>2</OMI>
</OMA>
</OMOBJ>
Intermediate representation:
(rational nil 4 2)
<math>
<cn type="rational">4<sep/>2</cn>
</math>
% end;
end;
Time for test: 90 ms