OpenMath 2 Table of Contents

Previous: 5 OpenMath Compliance
This: A CD Files
    A.1 The meta Content Dictionary
    A.2 The arith1 Content Dictionary File
    A.3 The arith1 STS Signature File
    A.4 The MathML CDGroup
    A.5 The error Content Dictionary
Next: B OpenMath Schema in Relax NG XML Syntax (Normative)

Appendix A
CD Files

A.1 The meta Content Dictionary

<CD
 xmlns="http://www.openmath.org/OpenMathCD">

<CDComment>

     This document is distributed in the hope that it will be useful, 
     but WITHOUT ANY WARRANTY; without even the implied warranty of 
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

     The copyright holder grants you permission to redistribute this 
     document freely as a verbatim copy. Furthermore, the copyright
     holder permits you to develop any derived work from this document
     provided that the following conditions are met.
       a) The derived work acknowledges the fact that it is derived from
          this document, and maintains a prominent reference in the 
          work to the original source.
       b) The fact that the derived work is not the original OpenMath 
          document is stated prominently in the derived work.  Moreover if
          both this document and the derived work are Content Dictionaries
          then the derived work must include a different CDName element,
          chosen so that it cannot be confused with any works adopted by
          the OpenMath Society.  In particular, if there is a Content 
          Dictionary Group whose name is, for example, `math' containing
          Content Dictionaries named `math1', `math2' etc., then you should 
          not name a derived Content Dictionary `mathN' where N is an integer.
          However you are free to name it `private_mathN' or some such.  This
          is because the names `mathN' may be used by the OpenMath Society
          for future extensions.
       c) The derived work is distributed under terms that allow the
          compilation of derived works, but keep paragraphs a) and b)
          intact.  The simplest way to do this is to distribute the derived
          work under the OpenMath license, but this is not a requirement.
     If you have questions about this license please contact the OpenMath
     society at http://www.openmath.org.
</CDComment>


<CDName> meta </CDName>
<CDReviewDate>2006-03-30</CDReviewDate>
<CDDate>2004-03-30</CDDate>
<CDVersion>3</CDVersion>
<CDRevision>0</CDRevision>
<CDStatus> official </CDStatus>
<CDURL> http://www.openmath.org/cd/meta.ocd </CDURL>
<CDBase>http://www.openmath.org/cd</CDBase>

<Description> 
This is a content dictionary to represent content dictionaries, so
that they may be passed between OpenMath compliant application in a
similar way to mathematical objects.

The information written here is taken from chapter 4 of the current
draft of the "OpenMath Standard".
</Description>

<CDDefinition>
<Name> CD </Name>
<Role>application</Role>
<Description>
The top level element for the Content Dictionary. It just acts
as a container for the elements described below.
</Description>
</CDDefinition>


<CDDefinition>
<Name> CDDefinition </Name>
<Role>application</Role>
<Description>
This symbol is used to represent the element which contains the
definition of each symbol in a content dictionary. That is: it must
contain a 'Name' element and a 'Description' element, and it may contain
an arbitrary number of 'Example', 'FMP' or 'CMP' elements. 
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDName </Name>
<Role>application</Role>
<Description>
An element which contains the string corresponding to the name of the CD.
The string  must match the syntax for CD names given in the OpenMath
Standard. Here and elsewhere white space occurring at the beginning or
end of the string will be ignored.
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDURL </Name>
<Role>application</Role>
<Description>
An optional element.
If it is used it contains a string representing the URL where the
canonical reference copy of this CD is stored.
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDBase </Name>
<Role>application</Role>
<Description>
An optional element.
If it is used it contains a string representing the URI
to be used as the base for generated canonical URI references
for symbols in the CD.
</Description>
</CDDefinition>

<CDDefinition>
<Name> Example </Name>
<Role>application</Role>
<Description>
An element which contains an arbitrary number of children,
each of which is either a string or an OpenMath Object.

These children give examples in natural language, or in OpenMath, of the
enclosing symbol definition.
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDDate </Name>
<Role>application</Role>
<Description>
An element which contains a date as a string in the ISO-8601
YYYY-MM-DD format. This gives the date at which the Content Dictionary
was last edited.
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDVersion </Name>
<Role>application</Role>
<Description>
An element which contains a version number for the CD.
This should be a non negative integer. Any change to the CD
that affects existing OpenMath applications that support this CD
should result in an increase in the version number.
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDRevision </Name>
<Role>application</Role>
<Description>
An element which contains a revision number (or minor version number)
This should be a non-negative integer starting from zero for each
new version. Additional examples  would be typical changes
to a CD requiring a new revision number.
</Description>
</CDDefinition>


<CDDefinition>
<Name> CDReviewDate </Name>
<Role>application</Role>
<Description>
An element which contains a date as a string in the ISO-8601
YYYY-MM-DD format. This gives the date at which the Content Dictionary
is next scheduled for review. It should be expected to be stable
until at least this date.
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDStatus </Name>
<Role>application</Role>
<Description>
An element giving information on the status of the CD.
The content of the element must be one of the following strings.

official (approved by the OpenMath Society),

experimental (currently being tested),

private (used by a private group of OpenMath users), or

obsolete (an obsolete CD kept only for archival purposes).
</Description>
</CDDefinition>

<CDDefinition>
<Name> CDComment </Name>
<Role>application</Role>
<Description>
This symbol is used to represent the element of a content dictionary which
explains some aspect of that content dictionary. It should have one string
argument which makes that explanation.
</Description>
</CDDefinition>



<CDDefinition>
<Name> CDUses </Name>
<Role>application</Role>
<Description>
An element which contains zero or more CDNames which correspond
to the CDs that this CD depends on, i.e. uses in examples and FMPs. If
the CD is dependent on any other CDs they may be present here. 
</Description>
</CDDefinition>

<CDDefinition>
<Name> Description </Name>
<Role>application</Role>
<Description>
An element which contains a string corresponding to the
description of either the CD or the symbol
(depending on which is the enclosing element).
</Description>
</CDDefinition>

<CDDefinition>
<Name> Name </Name>
<Role>application</Role>
<Description>
An element containing the string  corresponding to the name of
the symbol being defined. This must match the syntax for
symbol names given in the OpenMath Standard. Here and elsewhere white
space occurring at the begining or end of the string will be ignored.
</Description>
</CDDefinition>

<CDDefinition>
<Name> Role </Name>
<Role>application</Role>
<Description>
An element containing the string  corresponding to the role of
the symbol being defined.
</Description>
</CDDefinition>

<CDDefinition>
<Name> CMP </Name>
<Role>application</Role>
<Description>
An optional element (which may be repeated many times) which contains
a string corresponding to a property of the symbol being
defined.
</Description>
</CDDefinition>

<CDDefinition>
<Name> FMP </Name>
<Role>application</Role>
<Description>
An optional element which contains an OpenMath Object.
This corresponds to a property of the symbol being defined.
</Description>
</CDDefinition>

</CD>

A.2 The arith1 Content Dictionary File

<CD
 xmlns="http://www.openmath.org/OpenMathCD">

<CDComment>

     This document is distributed in the hope that it will be useful, 
     but WITHOUT ANY WARRANTY; without even the implied warranty of 
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

     The copyright holder grants you permission to redistribute this 
     document freely as a verbatim copy. Furthermore, the copyright
     holder permits you to develop any derived work from this document
     provided that the following conditions are met.
       a) The derived work acknowledges the fact that it is derived from
          this document, and maintains a prominent reference in the 
          work to the original source.
       b) The fact that the derived work is not the original OpenMath 
          document is stated prominently in the derived work.  Moreover if
          both this document and the derived work are Content Dictionaries
          then the derived work must include a different CDName element,
          chosen so that it cannot be confused with any works adopted by
          the OpenMath Society.  In particular, if there is a Content 
          Dictionary Group whose name is, for example, `math' containing
          Content Dictionaries named `math1', `math2' etc., then you should 
          not name a derived Content Dictionary `mathN' where N is an integer.
          However you are free to name it `private_mathN' or some such.  This
          is because the names `mathN' may be used by the OpenMath Society
          for future extensions.
       c) The derived work is distributed under terms that allow the
          compilation of derived works, but keep paragraphs a) and b)
          intact.  The simplest way to do this is to distribute the derived
          work under the OpenMath license, but this is not a requirement.
     If you have questions about this license please contact the OpenMath
     society at http://www.openmath.org.
</CDComment>

<CDName> arith1 </CDName>
<CDBase>http://www.openmath.org/cd</CDBase>
<CDURL> http://www.openmath.org/cd/arith1.ocd </CDURL>
<CDReviewDate>2006-03-30</CDReviewDate>
<CDStatus> official </CDStatus>
<CDDate>2004-03-30</CDDate>
<CDVersion>3</CDVersion>
<CDRevision>0</CDRevision>

<Description> 
This CD defines symbols for common arithmetic functions.
</Description>

<CDDefinition>
<Name> lcm </Name>
<Role>application</Role>
<Description> 
The symbol to represent the n-ary function to return the least common
multiple of its arguments.
</Description>

<CMP> lcm(a,b) = a*b/gcd(a,b) </CMP>

<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OMA>
    <OMS cd="relation1" name="eq"/>
    <OMA>
      <OMS cd="arith1" name="lcm"/>
      <OMV name="a"/>
      <OMV name="b"/>
    </OMA>
    <OMA>
      <OMS cd="arith1" name="divide"/>
      <OMA>
        <OMS cd="arith1" name="times"/>
	<OMV name="a"/>
	<OMV name="b"/>
      </OMA>
      <OMA>
        <OMS cd="arith1" name="gcd"/>
        <OMV name="a"/>
        <OMV name="b"/>
      </OMA>
    </OMA>
  </OMA>
</OMOBJ>
</FMP>
<CMP>
for all integers a,b |
There does not exist a c&gt;0 such that c/a is an Integer and c/b is an
Integer and lcm(a,b) &gt; c.
</CMP>

<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMBIND>
  <OMS cd="quant1" name="forall"/>
  <OMBVAR>
    <OMV name="a"/>
    <OMV name="b"/>
  </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="Z"/>
      </OMA>
      <OMA>
        <OMS cd="set1" name="in"/>
	<OMV name="b"/>
	<OMS cd="setname1" name="Z"/>
      </OMA>
    </OMA>
    <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="relation1" name="gt"/>
              <OMV name="c"/>
              <OMI>0</OMI>
          </OMA>
          <OMA>
            <OMS cd="integer1" name="factorof"/>
              <OMV name="a"/>
              <OMV name="c"/>
          </OMA>
          <OMA>
            <OMS cd="integer1" name="factorof"/>
              <OMV name="b"/>
              <OMV name="c"/>
          </OMA>
          <OMA>
            <OMS cd="relation1" name="lt"/>
            <OMV name="c"/>
            <OMA>
              <OMS cd="arith1" name="lcm"/>
              <OMV name="a"/>
              <OMV name="b"/>
            </OMA>
          </OMA>
        </OMA>
      </OMBIND>
    </OMA>
  </OMA>
</OMBIND>
</OMOBJ>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> gcd </Name>
<Role>application</Role>
<Description> 
The symbol to represent the n-ary function to return the gcd (greatest
common divisor) of its arguments.
</Description>

<CMP>
for all integers a,b |
There does not exist a c such that a/c is an Integer and b/c is an
Integer and c &gt; gcd(a,b).

Note that this implies that gcd(a,b) &gt; 0
</CMP>

<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMBIND>
  <OMS cd="quant1" name="forall"/>
  <OMBVAR>
    <OMV name="a"/>
    <OMV name="b"/>
  </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="Z"/>
      </OMA>
      <OMA>
        <OMS cd="set1" name="in"/>
	<OMV name="b"/>
	<OMS cd="setname1" name="Z"/>
      </OMA>
    </OMA>
    <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="arith1" name="gcd"/>
              <OMV name="a"/>
              <OMV name="b"/>
            </OMA>
          </OMA>
        </OMA>
      </OMBIND>
    </OMA>
  </OMA>
</OMBIND>
</OMOBJ>
</FMP>

<Example>
gcd(6,9) = 3
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OMA>
    <OMS cd="relation1" name="eq"/>
    <OMA>
      <OMS cd="arith1" name="gcd"/>
      <OMI> 6 </OMI>
      <OMI> 9 </OMI>
    </OMA>
    <OMI> 3 </OMI>
  </OMA>
</OMOBJ>
</Example>
</CDDefinition>

<CDDefinition>
<Name> plus </Name>
<Role>application</Role>
<Description>
The symbol representing an n-ary commutative function plus.
</Description>
<CMP> for all a,b | a + b = b + a </CMP>
<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <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>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> unary_minus </Name>
<Role>application</Role>
<Description> 
This symbol denotes unary minus, i.e. the additive inverse.
</Description>
<CMP> for all a | a + (-a) = 0 </CMP>
<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <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"/>
        <OMA>
           <OMS cd="arith1" name="unary_minus"/>
           <OMV name="a"/>
        </OMA>
      </OMA>
      <OMS cd="alg1" name="zero"/>
    </OMA>
  </OMBIND>
</OMOBJ>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> minus </Name>
<Role>application</Role>
<Description> 
The symbol representing a binary minus function. This is equivalent to
adding the additive inverse.
</Description>
<CMP> for all a,b | a - b = a + (-b) </CMP>
<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <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="minus"/>
        <OMV name="a"/>
        <OMV name="b"/>
      </OMA>
      <OMA>
        <OMS cd="arith1" name="plus"/>
        <OMV name="a"/>
        <OMA>
          <OMS cd="arith1" name="unary_minus"/>
          <OMV name="b"/>
        </OMA>
      </OMA>
    </OMA>
  </OMBIND>
</OMOBJ>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> times </Name>
<Role>application</Role>
<Description> 
The symbol representing an n-ary multiplication function.
</Description>
<Example>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
  <OMS cd="relation1" name="eq"/>
  <OMA>
    <OMS cd="arith1" name="times"/>
    <OMA>
      <OMS cd="linalg2" name="matrix"/>
      <OMA>
        <OMS cd="linalg2" name="matrixrow"/>
        <OMI> 1 </OMI>
        <OMI> 2 </OMI>
      </OMA>
      <OMA>
        <OMS cd="linalg2" name="matrixrow"/>
        <OMI> 3 </OMI>
        <OMI> 4 </OMI>
      </OMA>
    </OMA>
    <OMA>
      <OMS cd="linalg2" name="matrix"/>
      <OMA>
        <OMS cd="linalg2" name="matrixrow"/>
        <OMI> 5 </OMI>
        <OMI> 6 </OMI>
      </OMA>
      <OMA>
        <OMS cd="linalg2" name="matrixrow"/>
        <OMI> 7 </OMI>
        <OMI> 8 </OMI>
      </OMA>
    </OMA>
  </OMA>
  <OMA>
    <OMS cd="linalg2" name="matrix"/>
    <OMA>
      <OMS cd="linalg2" name="matrixrow"/>
      <OMI> 19 </OMI>
      <OMI> 22 </OMI>
    </OMA>
    <OMA>
      <OMS cd="linalg2" name="matrixrow"/>
      <OMI> 43 </OMI>
      <OMI> 50 </OMI>
    </OMA>
  </OMA>
</OMA>
</OMOBJ>
</Example>
<CMP> for all a,b | a * 0 = 0 and a * b = a * (b - 1) + a </CMP>

<FMP><OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMBIND>
  <OMS cd="quant1" name="forall"/>
  <OMBVAR>
    <OMV name="a"/>
    <OMV name="b"/>
  </OMBVAR>
  <OMA>
    <OMS cd="logic1" name="and"/>
    <OMA>
      <OMS cd="relation1" name="eq"/>
      <OMA>
        <OMS cd="arith1" name="times"/>
        <OMV name="a"/>
        <OMS cd="alg1" name="zero"/>
      </OMA>
      <OMS cd="alg1" name="zero"/>
    </OMA>
    <OMA>
      <OMS cd="relation1" name="eq"/>
      <OMA>
        <OMS cd="arith1" name="times"/>
	<OMV name="a"/>
	<OMV name="b"/>
      </OMA>
      <OMA>
        <OMS cd="arith1" name="plus"/>
	<OMA>
	  <OMS cd="arith1" name="times"/>
	  <OMV name="a"/>
	  <OMA>
	    <OMS cd="arith1" name="minus"/>
	    <OMV name="b"/>
	    <OMS cd="alg1" name="one"/>
	  </OMA>
	</OMA>
	<OMV name="a"/>
      </OMA>
    </OMA>
  </OMA>
</OMBIND>
</OMOBJ></FMP>

<CMP> for all a,b,c | a*(b+c) = a*b + a*c </CMP>
<FMP><OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<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="arith1" name="times"/>
      <OMV name="a"/>
      <OMA>
        <OMS cd="arith1" name="plus"/>
	<OMV name="b"/>
	<OMV name="c"/>
      </OMA>
    </OMA>
    <OMA>
      <OMS cd="arith1" name="plus"/>
      <OMA>
        <OMS cd="arith1" name="times"/>
	<OMV name="a"/>
	<OMV name="b"/>
      </OMA>
      <OMA>
        <OMS cd="arith1" name="times"/>
	<OMV name="a"/>
	<OMV name="c"/>
      </OMA>
    </OMA>
  </OMA>
</OMBIND>
</OMOBJ></FMP>
</CDDefinition>

<CDDefinition>
<Name> divide </Name>
<Role>application</Role>
<Description>
This symbol represents a (binary) division function denoting the first argument
right-divided by the second, i.e. divide(a,b)=a*inverse(b). It is the
inverse of the multiplication function defined by the symbol times in this CD.
</Description>
<CMP> whenever not(a=0) then a/a = 1 </CMP>
<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OMBIND>
    <OMS cd="quant1" name="forall"/>
    <OMBVAR>
       <OMV name="a"/>
    </OMBVAR>
    <OMA>
      <OMS cd="logic1" name="implies"/>
      <OMA>
        <OMS cd="relation1" name="neq"/>
        <OMV name="a"/>
        <OMS cd="alg1" name="zero"/>
      </OMA>
      <OMA>
        <OMS cd="relation1" name="eq"/>
        <OMA>
          <OMS cd="arith1" name="divide"/>
          <OMV name="a"/>
          <OMV name="a"/>
        </OMA>
        <OMS cd="alg1" name="one"/>
      </OMA>
    </OMA>
  </OMBIND>
</OMOBJ>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> power </Name>
<Role>application</Role>
<Description>
This symbol represents a power function. The first argument is raised
to the power of the second argument. When the second argument is not
an integer, powering is defined in terms of exponentials and 
logarithms for the complex and real numbers.
This operator can represent general powering.
</Description>

<CMP>
x\in C implies x^a = exp(a ln x)
</CMP>

<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OMA>
    <OMS cd="logic1" name="implies"/>
    <OMA>
      <OMS cd="set1" name="in"/>
      <OMV name="x"/>
      <OMS cd="setname1" name="C"/>
    </OMA>
    <OMA>
      <OMS cd="relation1" name="eq"/>
      <OMA>
        <OMS name="power" cd="arith1"/>
        <OMV name="x"/>
        <OMV name="a"/>
      </OMA>
      <OMA>
        <OMS name="exp" cd="transc1"/>
        <OMA>
          <OMS name="times" cd="arith1"/>
          <OMV name="a"/>
          <OMA>
            <OMS name="ln" cd="transc1"/>
            <OMV name="x"/>
          </OMA>
        </OMA>
      </OMA>
    </OMA>
  </OMA>
</OMOBJ>
</FMP>

<CMP>
  if n is an integer then
  x^0 = 1,
  x^n = x * x^(n-1)
</CMP>
<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OMA>
    <OMS cd="logic1" name="implies"/>
    <OMA>
      <OMS cd="set1" name="in"/>
      <OMV name="n"/>
      <OMS cd="setname1" name="Z"/>
    </OMA>
    <OMA>
      <OMS cd="logic1" name="and"/>
      <OMA>
        <OMS cd="relation1" name="eq"/>
        <OMA>
          <OMS cd="arith1" name="power"/>
          <OMV name="x"/>
          <OMI>0</OMI>
        </OMA>
        <OMS cd="alg1" name="one"/>
      </OMA>
      <OMA>
        <OMS cd="relation1" name="eq"/>
        <OMA>
          <OMS cd="arith1" name="power"/>
          <OMV name="x"/>
          <OMV name="n"/>
        </OMA>
        <OMA>
          <OMS cd="arith1" name="times"/>
          <OMV name="x"/>
          <OMA>
            <OMS cd="arith1" name="power"/>
            <OMV name="x"/>
            <OMA>
              <OMS cd="arith1" name="minus"/>
              <OMV name="n"/>
              <OMI>1</OMI>
            </OMA>
          </OMA>
        </OMA>
      </OMA>
    </OMA>
  </OMA>
</OMOBJ>
</FMP>
<Example>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
  <OMS cd="relation1" name="eq"/>
  <OMA>
    <OMS cd="arith1" name="power"/>
    <OMA>
      <OMS cd="linalg2" name="matrix"/>
      <OMA>
        <OMS cd="linalg2" name="matrixrow"/>
        <OMI> 1 </OMI>
        <OMI> 2 </OMI>
      </OMA>
      <OMA>
        <OMS cd="linalg2" name="matrixrow"/>
        <OMI> 3 </OMI>
        <OMI> 4 </OMI>
      </OMA>
    </OMA>
    <OMI>3</OMI>
  </OMA>
  <OMA>
    <OMS cd="linalg2" name="matrix"/>
    <OMA>
      <OMS cd="linalg2" name="matrixrow"/>
      <OMI> 37 </OMI>
      <OMI> 54 </OMI>
    </OMA>
    <OMA>
      <OMS cd="linalg2" name="matrixrow"/>
      <OMI> 81 </OMI>
      <OMI> 118 </OMI>
    </OMA>
  </OMA>
</OMA>
</OMOBJ>
</Example>
<Example>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
<OMA>
  <OMS cd="relation1" name="eq"/>
  <OMA>
    <OMS cd="arith1" name="power"/>
    <OMS cd="nums1" name="e"/>
    <OMA>
      <OMS cd="arith1" name="times"/>
      <OMS cd="nums1" name="i"/>
      <OMS cd="nums1" name="pi"/>
    </OMA>
  </OMA>
  <OMA>
    <OMS cd="arith1" name="unary_minus"/>
    <OMS cd="alg1" name="one"/>
  </OMA>
</OMA>
</OMOBJ>
</Example>
</CDDefinition>

<CDDefinition>
<Name> abs </Name>
<Role>application</Role>
<Description> 
A unary operator which represents the absolute value of its
argument. The argument should be numerically valued.
In the complex case this is often referred to as the modulus.
</Description>
<CMP> for all x,y | abs(x) + abs(y) &gt;= abs(x+y) </CMP>
<FMP>
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OMBIND>
    <OMS cd="quant1" name="forall"/>
    <OMBVAR>
      <OMV name="x"/>
      <OMV name="y"/>
    </OMBVAR>
    <OMA>
      <OMS cd="relation1" name="geq"/>
      <OMA>
        <OMS cd="arith1" name="plus"/>
        <OMA>
          <OMS cd="arith1" name="abs"/>
            <OMV name="x"/>
        </OMA>
        <OMA>
          <OMS cd="arith1" name="abs"/>
            <OMV name="y"/>
        </OMA>
      </OMA>
      <OMA>
        <OMS cd="arith1" name="abs"/>
        <OMA>
          <OMS cd="arith1" name="plus"/>
          <OMV name="x"/>
          <OMV name="y"/>
        </OMA>
      </OMA>
    </OMA>
  </OMBIND>
</OMOBJ>
</FMP>
</CDDefinition>

<CDDefinition>
<Name> root </Name>
<Role>application</Role>
<Description> 
A binary operator which represents its first argument "lowered" to its
n'th root where n is the second argument. This is the inverse of the operation
represented by the power symbol defined in this CD.

Care should be taken as to the precise meaning of this operator, in
particular which root is represented, however it is here to represent
the general notion of taking n'th roots. As inferred by the signature
relevant to this symbol, the function represented by this symbol is
the single valued function, the specific root returned is the one
indicated by the first CMP. Note also that the converse of the second
CMP is not valid in general.
</Description>

<CMP> x\in C implies root(x,n) = exp(ln(x)/n) </CMP>
<FMP>
  <OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
    <OMA>
      <OMS cd="logic1" name="implies"/>
      <OMA>
        <OMS cd="set1" name="in"/>
        <OMV name="x"/>
        <OMS cd="setname1" name="C"/>
      </OMA>
      <OMA>
        <OMS cd="relation1" name="eq"/>
        <OMA>
          <OMS cd="arith1" name="root"/>
          <OMV name="x"/>
          <OMV name="n"/>          
        </OMA>
        <OMA>
          <OMS name="exp" cd="transc1"/>
          <OMA>
            <OMS name="divide" cd="arith1"/>
            <OMA>
              <OMS name="ln" cd="transc1"/>
              <OMV name="x"/>
            </OMA>
            <OMV name="n"/>          
          </OMA>
        </OMA>
      </OMA>
    </OMA>
  </OMOBJ>
</FMP>

<CMP> for all a,n | power(root(a,n),n) = a (if the root exists!) </CMP>
<FMP>
  <OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
    <OMBIND>
      <OMS cd="quant1" name="forall"/>
      <OMBVAR>
         <OMV name="a"/>
         <OMV name="n"/>
      </OMBVAR>
      <OMA>
        <OMS cd="relation1" name="eq"/>
        <OMA>
          <OMS cd="arith1" name="power"/>
          <OMA>
            <OMS cd="arith1" name="root"/>
            <OMV name="a"/>
            <OMV name="n"/>
          </OMA>
          <OMV name="n"/>
        </OMA>
        <OMV name="a"/>
      </OMA>
    </OMBIND>
  </OMOBJ>
</FMP>
</CDDefinition>




<CDDefinition>
<Name> sum </Name>
<Role>application</Role>
<Description>
An operator taking two arguments, the first being the range of summation,
e.g. an integral interval, the second being the function to be
summed. Note that the sum may be over an infinite interval.
</Description>
<Example>
  This represents the summation of the reciprocals of all the integers between
  1 and 10 inclusive.
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OMA>
    <OMS cd="arith1" name="sum"/>
      <OMA>
        <OMS cd="interval1" name="integer_interval"/>
        <OMI> 1 </OMI>
        <OMI> 10 </OMI>
      </OMA>
    <OMBIND>
      <OMS cd="fns1" name="lambda"/>
        <OMBVAR>
          <OMV name="x"/>
        </OMBVAR>
        <OMA>
          <OMS cd="arith1" name="divide"/>
          <OMI> 1 </OMI>
          <OMV name="x"/>
        </OMA>
    </OMBIND>
  </OMA>
</OMOBJ>
</Example>
</CDDefinition>

<CDDefinition>
<Name> product </Name>
<Role>application</Role>
<Description>
An operator taking two arguments, the first being the range of multiplication
e.g. an integral interval, the second being the function to
be multiplied. Note that the product may be over an infinite interval. 
</Description>
<Example>
This represents the statement that the factorial of n is equal to the product
of all the integers between 1 and n inclusive.
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <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>
</Example>
</CDDefinition>

</CD>

A.3 The arith1 STS Signature File

<CDSignatures
 xmlns="http://www.openmath.org/OpenMathCDS" type="sts" cd="arith1">

  <CDSComment>
    Date:  1999-11-26
    Author: David Carlisle
  </CDSComment>
  
  <Signature name="lcm">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMA>
          <OMS name="nassoc" cd="sts"/>
          <OMV name="SemiGroup"/>
        </OMA>
        <OMV name="SemiGroup"/>
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="gcd">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMA>
          <OMS name="nassoc" cd="sts"/>
          <OMV name="SemiGroup"/>
        </OMA>
        <OMV name="SemiGroup"/>
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="plus">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMA>
          <OMS name="nassoc" cd="sts"/> 
          <OMV name="AbelianSemiGroup"/>
        </OMA>
        <OMV name="AbelianSemiGroup"/>
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="unary_minus">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMV name="AbelianGroup"/> 
        <OMV name="AbelianGroup"/> 
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="minus">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMV name="AbelianGroup"/> 
        <OMV name="AbelianGroup"/> 
        <OMV name="AbelianGroup"/> 
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="times">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMA>
          <OMS name="nassoc" cd="sts"/> 
          <OMV name="SemiGroup"/>
        </OMA>
        <OMV name="SemiGroup"/>
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="divide">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMV name="AbelianGroup"/> 
        <OMV name="AbelianGroup"/> 
        <OMV name="AbelianGroup"/> 
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="power">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMS name="NumericalValue" cd="sts"/> 
        <OMS name="NumericalValue" cd="sts"/> 
        <OMS name="NumericalValue" cd="sts"/> 
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="abs">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMS name="C" cd="setname1"/> 
        <OMS name="R" cd="setname1"/> 
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="root">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMS name="NumericalValue" cd="sts"/> 
        <OMS name="NumericalValue" cd="sts"/> 
        <OMS name="NumericalValue" cd="sts"/> 
      </OMA>
    </OMOBJ>
  </Signature>
  
  
  <Signature name="sum">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMV name="IntegerRange"/>
        <OMA>
          <OMS name="mapsto" cd="sts"/>
          <OMS name="Z" cd="setname1"/>
          <OMV name="AbelianMonoid"/>
        </OMA>
        <OMV name="AbelianMonoid"/>
      </OMA>
    </OMOBJ>
  </Signature>
  
  <Signature name="product">
    <OMOBJ
 xmlns="http://www.openmath.org/OpenMath">
      <OMA>
        <OMS name="mapsto" cd="sts"/>
        <OMV name="IntegerRange"/>
        <OMA>
          <OMS name="mapsto" cd="sts"/>
          <OMS name="Z" cd="setname1"/>
          <OMV name="AbelianMonoid"/>
        </OMA>
        <OMV name="AbelianMonoid"/>
      </OMA>
    </OMOBJ>
  </Signature>
  
</CDSignatures>
				   

A.4 The MathML CDGroup

<CDGroup
 xmlns="http://www.openmath.org/OpenMathCDG">
<CDGroupName>mathml</CDGroupName>
  <CDGroupVersion> 2 </CDGroupVersion>
  <CDGroupRevision> 0 </CDGroupRevision>
  <CDGroupURL>
    http://www.openmath.org/cdfiles/cdgroups/mathml.cdg</CDGroupURL>
  <CDGroupDescription> MathML compatibility CD Group </CDGroupDescription>
  <CDComment>Algebra</CDComment>
  <CDGroupMember>
    <CDName>alg1</CDName>
    <CDURL>http://www.openmath.org/cd/alg1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Arithmetic</CDComment>
  <CDGroupMember>
    <CDName>arith1</CDName>
    <CDURL>http://www.openmath.org/cd/arith1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Constructor for Floating Point Numbers</CDComment>
  <CDGroupMember>
    <CDName>bigfloat1</CDName>
    <CDURL>http://www.openmath.org/cd/bigfloat1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Calculus</CDComment>
  <CDGroupMember>
    <CDName>calculus1</CDName>
    <CDURL>http://www.openmath.org/cd/calculus1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Operations on and constructors for complex numbers</CDComment>
  <CDGroupMember>
    <CDName>complex1</CDName>
    <CDURL>http://www.openmath.org/cd/complex1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Functions on functions</CDComment>
  <CDGroupMember>
    <CDName>fns1</CDName>
    <CDURL>http://www.openmath.org/cd/fns1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Integer arithmetic</CDComment>
  <CDGroupMember>
    <CDName>integer1</CDName>
    <CDURL>http://www.openmath.org/cd/integer1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Intervals</CDComment>
  <CDGroupMember>
    <CDName>interval1</CDName>
    <CDURL>http://www.openmath.org/cd/interval1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Linear Algebra - vector &amp; matrix constructors,
             those symbols which are independent of orientation,
             but in MathML</CDComment>
  <CDGroupMember>
    <CDName>linalg1</CDName>
    <CDURL>http://www.openmath.org/cd/linalg1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Linear Algebra - vector &amp; matrix constructors,
             those symbols which are dependent of orientation,
             and in MathML</CDComment>
  <CDGroupMember>
    <CDName>linalg2</CDName>
    <CDURL>http://www.openmath.org/cd/linalg2.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Limits of unary functions</CDComment>
  <CDGroupMember>
    <CDName>limit1</CDName>
    <CDURL>http://www.openmath.org/cd/limit1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>List constructors</CDComment>
  <CDGroupMember>
    <CDName>list1</CDName>
    <CDURL>http://www.openmath.org/cd/list1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Basic logical operators</CDComment>
  <CDGroupMember>
    <CDName>logic1</CDName>
    <CDURL>http://www.openmath.org/cd/logic1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>
    MathML Numerical Types
  </CDComment>
  <CDGroupMember>
    <CDName>mathmltypes</CDName>
    <CDURL>http://www.openmath.org/cd/mathmltypes.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Minima and maxima</CDComment>
  <CDGroupMember>
    <CDName>minmax1</CDName>
    <CDURL>http://www.openmath.org/cd/minmax1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Multset-theoretic operators and constructors</CDComment>
  <CDGroupMember>
    <CDName>multiset1</CDName>
    <CDURL>http://www.openmath.org/cd/multiset1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Symbols for creating numbers, including some defined constants
    (which can be seen as nullary constructors)</CDComment>
  <CDGroupMember>
    <CDName>nums1</CDName>
    <CDURL>http://www.openmath.org/cd/nums1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Symbols for creating piecewise definitions</CDComment>
  <CDGroupMember>
    <CDName>piece1</CDName>
    <CDURL>http://www.openmath.org/cd/piece1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>The basic quantifiers forall and exists.</CDComment>
  <CDGroupMember>
    <CDName>quant1</CDName>
    <CDURL>http://www.openmath.org/cd/quant1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Common arithmetic relations</CDComment>
  <CDGroupMember>
    <CDName>relation1</CDName>
    <CDURL>http://www.openmath.org/cd/relation1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Number sets</CDComment>
  <CDGroupMember>
    <CDName>setname1</CDName>
    <CDURL>http://www.openmath.org/cd/setname1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Rounding</CDComment>
  <CDGroupMember>
    <CDName>rounding1</CDName>
    <CDURL>http://www.openmath.org/cd/rounding1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Set-theoretic operators and constructors</CDComment>
  <CDGroupMember>
    <CDName>set1</CDName>
    <CDURL>http://www.openmath.org/cd/set1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Basic data orientated statistical operators</CDComment>
  <CDGroupMember>
    <CDName>s_data1</CDName>
    <CDURL>http://www.openmath.org/cd/s_data1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Basic random variable orientated statistical operators</CDComment>
  <CDGroupMember>
    <CDName>s_dist1</CDName>
    <CDURL>http://www.openmath.org/cd/s_dist1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Basic transcendental functions</CDComment>
  <CDGroupMember>
    <CDName>transc1</CDName>
    <CDURL>http://www.openmath.org/cd/transc1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Vector calculus functions</CDComment>
  <CDGroupMember>
    <CDName>veccalc1</CDName>
    <CDURL>http://www.openmath.org/cd/veccalc1.ocd</CDURL>
  </CDGroupMember>
  <CDComment>Alternative encoding symbols for compatibility with the MathML
    Semantic mapping constructs.</CDComment>
  <CDGroupMember>
    <CDName>altenc</CDName>
    <CDURL>http://www.openmath.org/cd/altenc.ocd</CDURL>
  </CDGroupMember>
</CDGroup>

A.5 The error Content Dictionary

<CD
 xmlns="http://www.openmath.org/OpenMathCD">

<CDComment>

     This document is distributed in the hope that it will be useful, 
     but WITHOUT ANY WARRANTY; without even the implied warranty of 
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

     The copyright holder grants you permission to redistribute this 
     document freely as a verbatim copy. Furthermore, the copyright
     holder permits you to develop any derived work from this document
     provided that the following conditions are met.
       a) The derived work acknowledges the fact that it is derived from
          this document, and maintains a prominent reference in the 
          work to the original source.
       b) The fact that the derived work is not the original OpenMath 
          document is stated prominently in the derived work.  Moreover if
          both this document and the derived work are Content Dictionaries
          then the derived work must include a different CDName element,
          chosen so that it cannot be confused with any works adopted by
          the OpenMath Society.  In particular, if there is a Content 
          Dictionary Group whose name is, for example, `math' containing
          Content Dictionaries named `math1', `math2' etc., then you should 
          not name a derived Content Dictionary `mathN' where N is an integer.
          However you are free to name it `private_mathN' or some such.  This
          is because the names `mathN' may be used by the OpenMath Society
          for future extensions.
       c) The derived work is distributed under terms that allow the
          compilation of derived works, but keep paragraphs a) and b)
          intact.  The simplest way to do this is to distribute the derived
          work under the OpenMath license, but this is not a requirement.
     If you have questions about this license please contact the OpenMath
     society at http://www.openmath.org.
</CDComment>

<CDName> error </CDName>
<CDBase>http://www.openmath.org/cd</CDBase>
<CDURL> http://www.openmath.org/cd/error.ocd </CDURL>
<CDReviewDate>2006-03-30</CDReviewDate>
<CDStatus> official </CDStatus>
<CDDate>2004-03-30</CDDate>
<CDVersion>3</CDVersion>
<CDRevision>0</CDRevision>

<CDDefinition>
<Name> unhandled_symbol </Name>
<Role>error</Role>
<Description>
This symbol represents the error which is raised when an application
reads a symbol which is present in the mentioned content
dictionary, but which it has not implemented.

When receiving such a symbol, the application should act as if it had
received the OpenMath error object constructed from unhandled_symbol
and the unhandled symbol as in the example below.
</Description>

<Example>
The application does not implement the Complex numbers:
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OME>
    <OMS cd="error" name="unhandled_symbol"/>
    <OMS cd="setname1" name="C"/>
  </OME>
</OMOBJ>
</Example>
</CDDefinition>

<CDDefinition>
<Name> unexpected_symbol </Name>
<Role>error</Role>
<Description>
This symbol represents the error which is raised when an application
reads a symbol which is not present in the mentioned content dictionary.

When receiving such a symbol, the application should act as if it had
received the OpenMath error object constructed from unexpected_symbol
and the unexpected symbol as in the example below.
</Description>
<Example>
The application received a mistyped symbol
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OME>
    <OMS cd="error" name="unexpected_symbol"/>
    <OMS cd="arith1" name="plurse"/>
  </OME>
</OMOBJ>
</Example>
</CDDefinition>

<CDDefinition>
<Name> unsupported_CD </Name>
<Role>error</Role>
<Description>
This symbol represents the error which is raised when an application
reads a symbol where the mentioned content dictionary is not
present.

When receiving such a symbol, the application should act as if it had
received the OpenMath error object constructed from unsupported_CD and
the symbol from the unsupported Content Dictionary as in the example
below.
</Description>
<Example>
The application does not know about the CD specfun1
<OMOBJ
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd">
  <OME>
    <OMS cd="error" name="unsupported_CD"/>
    <OMS cd="specfun1" name="BesselJ"/>
  </OME>
</OMOBJ>
</Example>
</CDDefinition>

</CD>
OpenMath 2 Table of Contents

Previous: 5 OpenMath Compliance
This: A CD Files
Next: B OpenMath Schema in Relax NG XML Syntax (Normative)