File r38/log/mathmlom.rlg artifact 251885e97c part of check-in f2fda60abd


Tue Apr 15 00:35:11 2008 run on win32
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">&ImaginaryI;</cn>
            <apply><minus/>
               <cn type="integer">1</cn>
            </apply>
         </apply>
      </reln>
      <reln><eq/>
         <ci>x</ci>
         <apply><plus/>
            <apply><minus/>
               <cn type="constant">&ImaginaryI;</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">&infin;</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">&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>
         </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 &pi; 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"> &pi; </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 &exponentiale; (sum nil (bvar j 1) (lowupperlimit nil 0 &infin;) (divide
nil 1 (factorial nil j))))

<math>
   <apply><eq/>
      <cn type="constant"> &exponentiale; </cn>
      <apply><sum/>
         <bvar>
            <ci> j </ci>
         </bvar>
         <lowlimit>
            <cn type="integer"> 0 </cn>
         </lowlimit>
         <uplimit>
            <cn type="constant"> &infin; </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 &infin;))

<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"> &infin; </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 &notanumber; &notanumber;)

<math>
   <apply><neq/>
      <ci> &notanumber; </ci>
      <ci> &notanumber; </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 &pi; (sum nil (bvar j 1) (lowupperlimit nil 0 &infin;) (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"> &pi; </cn>
      <apply><sum/>
         <bvar>
            <ci> j </ci>
         </bvar>
         <lowlimit>
            <cn type="integer"> 0 </cn>
         </lowlimit>
         <uplimit>
            <cn type="constant"> &infin; </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 &pi;) (imaginary nil (ln nil x))) (leq nil (
imaginary nil (ln nil x)) &pi;))

<math>
   <apply><and/>
      <apply><lt/>
         <apply><minus/>
            <cn type="constant"> &pi; </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"> &pi; </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 &pi;) (arg nil x)) (leq nil (
arg nil x) &pi;)))

<math>
   <apply><forall/>
      <bvar>
         <ci> x </ci>
      </bvar>
      <apply><and/>
         <apply><lt/>
            <apply><minus/>
               <cn type="constant"> &pi; </cn>
            </apply>
            <apply><arg/>
               <ci> x </ci>
            </apply>
         </apply>
         <apply><leq/>
            <apply><arg/>
               <ci> x </ci>
            </apply>
            <cn type="constant"> &pi; </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: 82 ms, plus GC time: 2 ms


REDUCE Historical
REDUCE Sourceforge Project | Historical SVN Repository | GitHub Mirror | SourceHut Mirror | NotABug Mirror | Chisel Mirror | Chisel RSS ]