<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet  type="text/xsl" href="pmathml.xsl"?>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:m="http://www.w3.org/1998/Math/MathML" xml:space="preserve">


<head>
<title>The OpenMath Standard</title>

<style>

body {
margin-left: 1em;
margin-right: 1em;
}

div.mdata {
margin-top: .5em;
margin-bottom: .5em;
margin-left: 5em;
}

span.mdatahead {
font-weight: bold;
}

div.minitoc {
border-width: thin;
border-style: solid;
border-color: blue;
font-size: 90%;
margin-top: 1em;
margin-bottom: 1em;
padding: 1em 1em 1em 1em;
}

p {text-align:justify;	   
  }
code {font-size: 125%;
      font-family: monospace; 
     }
.figure {
border-width:thin;
border-style: solid;
border-color: black;
margin: 0.5em 0.5em 0.5em 0.5em;
padding: 0.5em 0.5em 0.5em 0.5em;
}

div.caption {
margin-top: 1em;
}

.footnote{
font-size: 75%;
font-style: italic;
}
.delliteral {
font-size: 75%;
background-color: #efefef;
border-color: black;
border-style: solid;
border-width: 1px;
padding: 1em;
color: red;
text-decoration: line-through;
}
.newliteral {
font-size: 75%;
background-color: #efefef;
border-color: black;
border-style: solid;
border-width: 1px;
padding: 1em;
color: green;
}
.literal {
font-size: 75%;
background-color: #efefef;
border-color: black;
border-style: solid;
border-width: 1px;
padding: 1em;
margin:bottom: 1em;
}
.del {
color: red;
text-decoration: line-through;
}
.new {
color: green;
}
.chg {
color: blue;
}
.changetoc {
border-style: solid;
border-color: black;
border-width: 1px;
margin: 2em 2em 2em 2em;
background-color: yellow;
}

.lowerroman {
list-style-type: lower-roman;
}
</style>
</head>
<body>
<h1>The <i>OpenMath</i> Standard</h1>

<div>
<div class="mdata">
<img src="keylogo.png" alt="OM logo"/>
</div>

<div class="mdata">
Version: 2.0
</div>

<div class="mdata">
The OpenMath Society
</div>

<div class="mdata"><span class="mdatahead">Editors</span><br/>
S. Buswell, O. Caprotti, D. P. Carlisle, M. C. Dewar, M. Gaëtano and M. Kohlhase
</div>

<div class="mdata">
June 2004
</div>

<div class="mdata">© 2000&#8211;2004 The OpenMath Society</div>
</div>

<div>
<h3>Abstract</h3>
<p class="del">This document proposes <i>OpenMath</i> as a standard for the communication of
  semantically rich mathematical objects. This draft of the <i>OpenMath</i> 
  standard comprises the following: a description of <i>OpenMath</i> objects, the
  grammar of <acronym>XML</acronym> and of the binary encoding of objects, a
  description of Content Dictionaries and an <acronym>XML</acronym> document type
  definition for validating Content Dictionaries. The non-normative
  <a href="#cha_his">Chapter </a> of this document briefly overviews the history
  of <i>OpenMath</i>.</p><p class="new">This document describes version 2 of
<i>OpenMath</i>: a standard for
the representation and communication of mathematical objects.
<span class="finaledit">This version clarifies and extends <i>OpenMath</i> 1.1 <a href="#OM_1.1">[9]</a>.</span>
 <i>OpenMath</i>
allows the <i>meaning</i> of an object to be encoded
rather than just a visual representation.  It is designed to allow the
free exchange of mathematical objects between software systems and human
beings.  On the worldwide web it is designed to allow mathematical
expressions embedded in web pages to be manipulated and computed with in
a meaningful and correct way.  It is designed to be machine-generatable
and machine-readable, rather than written by hand.
</p><p class="new">The <i>OpenMath</i> Standard is the official reference for
the <i>OpenMath</i> language and has been approved by the <i>OpenMath</i> Society.  It is not
intended as an introductory document or a user's guide, for the latest
available material of this nature please consult the <i>OpenMath</i> web-site at
<a href="http://www.openmath.org">http://www.openmath.org</a>.</p><p class="new">This document includes an overview of the
<i>OpenMath</i> architecture, an abstract description of <i>OpenMath</i> objects and two
mechanisms for producing concrete encodings of such objects.  The first,
in <acronym>XML</acronym>, is designed primarily for use on the web, in documents, and
for applications which want to mix <i>OpenMath</i> as a content representation with
MathML as a presentation format.  The second, a binary format, is
designed for applications which wish to exchange very large objects, or
a lot of data as efficiently as possible.  This document also includes a
description of Content Dictionaries - the mechanism by which the meaning
of a symbol in the <i>OpenMath</i> language is encoded, as well as an XML encoding
for them.  Finally it includes guidelines for the development of
<i>OpenMath</i>-compliant applications. <span class="finaledit">Further background
on <i>OpenMath</i> and guidelines for its use in applications may be found in the
accompanying Primer <a href="#OM_primer">[10]</a>.</span></p>
</div>


<div class="changetoc">
<h3>Change-marked edition notes</h3>
<p>
This edition contains colour coded change markings
relative to the OpenMath 1.0 document...</p>
<ul>
<li class="new">New text is marked with css class "new" (green).</li>
<li class="del">Deleted text is marked with css class "del" (red).</li>
</ul>

<p>Sections with modified text</p>


<span>

<a href="#sec_hist" class="new">
.1 <span>
History
</span>
</a>
</span>
<br/>



<span>

<a href="#sec_omsoc" class="new">
.2 <span>
<i>OpenMath</i> Society
</span>
</a>
</span>
<br/>



<span>

<a href="#sec_om-arch" class="new">
1.1 <span>
<i>OpenMath</i> Architecture
</span>
</a>
</span>
<br/>



<span>

<a href="#sec_intro-obj" class="new">
1.2 <span>
<i>OpenMath</i> Objects and Encodings
</span>
</a>
</span>
<br/>





<span>

<a href="#sec_addnfiles" class="new">
1.4 <span>
Additional Files
</span>
</a>
</span>
<br/>







<span>
 
<a href="#sec_basic" class="new">
2.1.1 <span>
Basic <i>OpenMath</i> objects
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_derived" class="new">
2.1.2 <span>
Derived <i>OpenMath</i> Objects
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_compound" class="new">
2.1.3 <span>
<span class="del">Compound</span><i>OpenMath</i> Objects
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_roles" class="new">
2.1.4 <span>
<i>OpenMath</i> Symbol Roles
</span>
</a>
</span>
<br/>



<span>

<a href="#sec_omin" class="new">
2.2 <span>
Further Description of <i>OpenMath</i> Objects
</span>
</a>
</span>
<br/>



<span>

<a href="#sec_names" class="new">
2.3 <span>
Names
</span>
</a>
</span>
<br/>



<span>

<a href="#sec_summary" class="new">
2.4 <span>
Summary
</span>
</a>
</span>
<br/>





<span>
 
<a href="#ssec_xml" class="new">
3.1.1 <span>
A <span class="del">Grammar</span><span>Schema</span> for the <acronym>XML</acronym> Encoding
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_xml-desc" class="new">
3.1.2 <span>
<span class="new">Informal</span> description of
the <span class="del">Grammar</span><span class="new"><acronym>XML</acronym> Encoding</span>
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_references" class="new">
3.1.3 <span>
Some Notes on References
</span>
</a>
</span>
<br/>



<span>
  
<a href="#sec_acyclicity" class="new">
3.1.3.1 <span>
An Acyclicity Constraint
</span>
</a>
</span>
<br/>



<span>
  
<a href="#sec_sharing_bvars" class="new">
3.1.3.2 <span>
Sharing and Bound Variables
</span>
</a>
</span>
<br/>



<span>
 
<a href="#xmldoc" class="new">
3.1.4 <span>
Embedding <i>OpenMath</i> in <acronym>XML</acronym> Documents
</span>
</a>
</span>
<br/>





<span>
 
<a href="#sec_binary_grammar" class="new">
3.2.1 <span>
A Grammar for the Binary Encoding
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_bin-desc" class="new">
3.2.2 <span>
Description of the Grammar
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_bin_example" class="new">
3.2.3 <span>
Example of Binary Encoding
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_both_sharing" class="new">
3.2.4 <span>
Sharing
</span>
</a>
</span>
<br/>



<span>
  
<a href="#sec_sharing" class="new">
3.2.4.1 <span>
Sharing <span class="new">in Objects beginning with the identifier [24]</span>
</span>
</a>
</span>
<br/>



<span>
  
<a href="#sec_sharing_references" class="new">
3.2.4.2 <span>
Sharing with References (beginning with [24+64])
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_impl_note" class="new">
3.2.5 <span>
Implementation Note
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_relation_OM1_binary" class="new">
3.2.6 <span>
Relation to the <i>OpenMath</i> 1 binary encoding
</span>
</a>
</span>
<br/>





<span>

<a href="#sec_cd_summary" class="new">
4.1 <span>
Introduction
</span>
</a>
</span>
<br/>



<span>

<a href="#sect_func" class="new">
4.2 <span>
Abstract Content Dictionaries
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_status" class="new">
4.2.1 <span>
Content Dictionary Status
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_version" class="new">
4.2.2 <span>
Content Dictionary Version Numbers
</span>
</a>
</span>
<br/>



<span>

<a href="#sec_xml_cd" class="new">
4.3 <span>
The <span class="del"><acronym>XML</acronym></span><span class="new">Reference</span> Encoding for Content Dictionaries
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sec_cd_schema" class="new">
4.3.1 <span>
The Relax NG Schema for Content Dictionaries
</span>
</a>
</span>
<br/>





<span>
 
<a href="#sect_pcdata" class="new">
4.3.2 <span>
Further <span class="del">Requirements of an <i>OpenMath</i>
Content Dictionary</span><span class="new">Description of
the CD Schema</span>
</span>
</a>
</span>
<br/>



<span>

<a href="#addfiles" class="new">
4.4 <span>
Additional Information
</span>
</a>
</span>
<br/>



<span>
 
<a href="#sigfiles" class="new">
4.4.1 <span>
Signature
<span class="del">Files</span><span class="new">Dictionaries</span>

</span>
</a>
</span>
<br/>





<span>
  
<a href="#sect_sigpcdata" class="new">
4.4.1.1 <span>
<span class="del">Further
Requirements</span><span class="new">Abstract Specification</span>
 of a Signature Dictionary
</span>
</a>
</span>
<br/>



<span>
  
<a href="#sect_sigschema" class="new">
4.4.1.2 <span>
A Relax NG Schema for a Signature Dictionary
</span>
</a>
</span>
<br/>







<span>
  
<a href="#sec_dtd_cdg" class="new">
4.4.2.1 <span>
The Specification of CDGroups
</span>
</a>
</span>
<br/>



<span>
  
<a href="#sect_cdgpcdata" class="new">
4.4.2.2 <span>
Further Requirements of a CDGroup
</span>
</a>
</span>
<br/>







<span>
 
<a href="#sec_compl_xml_encoding" class="new">
5.1.1 <span>
The XML Encoding
</span>
</a>
</span>
<br/>









<span>

<a href="#sec_compl_cd" class="new">
5.3 <span>
Content Dictionaries
</span>
</a>
</span>
<br/>


































</div>





  
<h2><a name="toc" id="toc"/>Contents</h2><a href="#cha_his"> <i>OpenMath</i> Movement</a><br/>
    <a href="#sec_hist">.1 History</a><br/>
    <a href="#sec_omsoc">.2 <i>OpenMath</i> Society</a><br/><a href="#cha_int">1 Introduction to <i>OpenMath</i></a><br/>
    <a href="#sec_om-arch">1.1 <i>OpenMath</i> Architecture</a><br/>
    <a href="#sec_intro-obj">1.2 <i>OpenMath</i> Objects and Encodings</a><br/>
    <a href="#sec_intro-cd">1.3 Content Dictionaries</a><br/>
    <a href="#sec_addnfiles">1.4 Additional Files</a><br/>
    <a href="#sec_phrasebooks">1.5 Phrasebooks</a><br/><a href="#cha_obj">2 <i>OpenMath</i> Objects</a><br/>
    <a href="#sec_omabs">2.1 Formal Definition of <i>OpenMath</i> Objects</a><br/>
        <a href="#sec_basic">2.1.1 Basic <i>OpenMath</i> objects</a><br/>
        <a href="#sec_derived" class="new">2.1.2 Derived <i>OpenMath</i> Objects</a><br/>
        <a href="#sec_compound">2.1.3 <span class="del">Compound</span><i>OpenMath</i> Objects</a><br/>
        <a href="#sec_roles" class="new">2.1.4 <i>OpenMath</i> Symbol Roles</a><br/>
    <a href="#sec_omin">2.2 Further Description of <i>OpenMath</i> Objects</a><br/>
    <a href="#sec_names" class="new">2.3 Names</a><br/>
    <a href="#sec_summary">2.4 Summary</a><br/><a href="#cha_enco">3 <i>OpenMath</i> Encodings</a><br/>
    <a href="#sec_xml">3.1 The <acronym>XML</acronym> Encoding</a><br/>
        <a href="#ssec_xml">3.1.1 A <span class="del">Grammar</span><span>Schema</span> for the <acronym>XML</acronym> Encoding</a><br/>
        <a href="#sec_xml-desc">3.1.2 <span class="new">Informal</span> description of
the <span class="del">Grammar</span><span class="new"><acronym>XML</acronym> Encoding</span></a><br/>
        <a href="#sec_references" class="new">3.1.3 Some Notes on References</a><br/>
            <a href="#sec_acyclicity" class="new">3.1.3.1 An Acyclicity Constraint</a><br/>
            <a href="#sec_sharing_bvars" class="new">3.1.3.2 Sharing and Bound Variables</a><br/>
        <a href="#xmldoc">3.1.4 Embedding <i>OpenMath</i> in <acronym>XML</acronym> Documents</a><br/>
    <a href="#sec_binary">3.2 The Binary Encoding</a><br/>
        <a href="#sec_binary_grammar">3.2.1 A Grammar for the Binary Encoding</a><br/>
        <a href="#sec_bin-desc">3.2.2 Description of the Grammar</a><br/>
        <a href="#sec_bin_example">3.2.3 Example of Binary Encoding</a><br/>
        <a href="#sec_both_sharing">3.2.4 Sharing</a><br/>
            <a href="#sec_sharing">3.2.4.1 Sharing <span class="new">in Objects beginning with the identifier [24]</span></a><br/>
            <a href="#sec_sharing_references" class="new">3.2.4.2 Sharing with References (beginning with [24+64])</a><br/>
        <a href="#sec_impl_note">3.2.5 Implementation Note</a><br/>
        <a href="#sec_relation_OM1_binary" class="new">3.2.6 Relation to the <i>OpenMath</i> 1 binary encoding</a><br/>
    <a href="#sec_enc_summary">3.3 Summary</a><br/><a href="#cha_cd">4 Content Dictionaries</a><br/>
    <a href="#sec_cd_summary">4.1 Introduction</a><br/>
    <a href="#sect_func">4.2 Abstract Content Dictionaries</a><br/>
        <a href="#sec_status" class="new">4.2.1 Content Dictionary Status</a><br/>
        <a href="#sec_version" class="new">4.2.2 Content Dictionary Version Numbers</a><br/>
    <a href="#sec_xml_cd">4.3 The <span class="del"><acronym>XML</acronym></span><span class="new">Reference</span> Encoding for Content Dictionaries</a><br/>
        <a href="#sec_cd_schema" class="new">4.3.1 The Relax NG Schema for Content Dictionaries</a><br/>
        <a href="#sec_dtd_cd" class="del"> The DTD Specification of  Content Dictionaries</a><br/>
        <a href="#sect_pcdata">4.3.2 Further <span class="del">Requirements of an <i>OpenMath</i>
Content Dictionary</span><span class="new">Description of
the CD Schema</span></a><br/>
    <a href="#addfiles">4.4 Additional Information</a><br/>
        <a href="#sigfiles">4.4.1 Signature
<span class="del">Files</span><span class="new">Dictionaries</span>
</a><br/>
            <a href="#sec_dtd_sig" class="del"> The  DTD Specification of Signature Files</a><br/>
            <a href="#sect_sigpcdata">4.4.1.1 <span class="del">Further
Requirements</span><span class="new">Abstract Specification</span>
 of a Signature Dictionary</a><br/>
            <a href="#sect_sigschema" class="new">4.4.1.2 A Relax NG Schema for a Signature Dictionary</a><br/>
            <a href="#sect_sigex">4.4.1.3 Examples</a><br/>
        <a href="#ssec_cdgroups">4.4.2 CDGroups</a><br/>
            <a href="#sec_dtd_cdg">4.4.2.1 The Specification of CDGroups</a><br/>
            <a href="#sect_cdgpcdata">4.4.2.2 Further Requirements of a CDGroup</a><br/>
    <a href="#cdapprove">4.5 Content Dictionaries Reviewing Process</a><br/><a href="#cha_comp">5 <i>OpenMath</i> Compliance</a><br/>
    <a href="#sec_compl_encoding">5.1 Encodings</a><br/>
        <a href="#sec_compl_xml_encoding" class="new">5.1.1 The XML Encoding</a><br/>
            <a href="#sec_compl_xml_encoding_val">5.1.1.1 Generating Valid XML</a><br/>
            <a href="#sec_compl_xml_encoding_float">5.1.1.2 Decimal versus Hexadecimal Float Representation</a><br/>
    <a href="#sec_compl_omforeign">5.2 <i>OpenMath</i> Foreign Objects</a><br/>
    <a href="#sec_compl_cd">5.3 Content Dictionaries</a><br/>
    <a href="#sec_comp_lex">5.4 Lexical Errors</a><br/>
    <a href="#sec_compl_om1">5.5 <i>OpenMath</i> 1 Objects</a><br/><a href="#cha_conc"> Conclusion</a><br/><a href="#app_cdfiles">A CD Files</a><br/>
    <a href="#app_cdcd">A.1 The <b>meta</b> Content Dictionary</a><br/>
    <a href="#arith1.ocd">A.2 The  <b>arith1</b> Content Dictionary File</a><br/>
    <a href="#arith1.sts">A.3 The  <b>arith1</b> STS Signature File</a><br/>
    <a href="#mathml.cdg">A.4 The  <b>MathML</b> CDGroup</a><br/>
    <a href="#errorcd">A.5 The <b>error</b> Content Dictionary</a><br/><a href="#app_openmath.rng">B <i>OpenMath</i> Schema in Relax NG XML Syntax (Normative)</a><br/><a href="#app_relaxrestricted">C Restricting the <i>OpenMath</i> Schema (Non-Normative)</a><br/><a href="#app_xsd">D <i>OpenMath</i> Schema in XSD Syntax (Non-Normative)</a><br/><a href="#app_dtd">E <i>OpenMath</i> DTD (Non-Normative)</a><br/><a href="#app_whats_new">F Changes between <i>OpenMath</i> 1.1 and <i>OpenMath</i> 2 (Non-Normative)</a><br/>
    <a href="#chgformal">F.1 Changes to the Formal Definition of Objects</a><br/>
    <a href="#chgenc">F.2 Changes to the encodings</a><br/>
    <a href="#chgcd">F.3 Changes to Content Dictionaries</a><br/><a href="#bibliography">G Bibliography</a><br/>
<h2>List of Figures</h2><a href="#fig_om">2.1 The <i>OpenMath</i> Architecture</a><br/><a href="#fig_obj">3.1 The <i>OpenMath</i> application and binding objects for
<m:math><m:mi>sin</m:mi> <m:mo>(</m:mo><m:mi>x</m:mi> <m:mo>)</m:mo></m:math> and
<m:math><m:mi>&#955;</m:mi> <m:mi>x</m:mi><m:mo>.</m:mo><m:mi>x</m:mi> <m:mo>+</m:mo>
<m:mn>2</m:mn></m:math> in tree-like notation.</a><br/><a href="#fig_shared_vs_unshared">4.1 Shared vs. unshared representations</a><br/><a href="#fig_sharing_between" class="new">4.2 Sharing between <i>OpenMath</i> objects (A cycle of order <m:math><m:mn>2</m:mn></m:math>).</a><br/><a href="#fig_bin-enc">4.3 Grammar of the binary encoding of <i>OpenMath</i> objects.</a><br/><a href="#fig_bin-enc_stream">4.4 Streaming a large Integer in the Binary Encoding.</a><br/><a href="#fig_bin-enc_ex">4.5 A Simple example of the <i>OpenMath</i> binary encoding.</a><br/><a href="#fig_bin-enc2" class="new">4.6 A binary encoding of the <i>OpenMath</i> object from <a href="#fig_shared_vs_unshared">Figure 4.1</a>.</a><br/><a href="#fig_cd-dtd" class="del"> DTD Specification of  Content Dictionaries</a><br/><a href="#fig_omcdsig.dtd" class="del"> DTD Specification of Signature Files</a><br/><a href="#fig_cdgroup.dtd">5.1 <span class="del">DTD</span><span class="new">Relax NG</span> Specification of CDGroups</a><br/>

<div class="del"><h2 name="cha_his" id="cha_his">
  Chapter <br/><i>OpenMath</i> Movement</h2>


<p>This chapter is a historical account of <i>OpenMath</i> and should be regarded
as non-normative.</p>

<p><i>OpenMath</i> is a standard for representing mathematical objects,
allowing them to be exchanged between computer programs, stored in
databases, or published on the worldwide web.  While the original
designers were mainly developers of computer algebra systems, it
<span class="del">is now attracting</span>
<span class="new">has since attracted</span>
interest from other areas of scientific computation and
from many publishers of electronic documents with a significant
mathematical content.  There is a strong relationship to the MathML
recommendation <a href="#MathML_2003">[17]</a> from the Worldwide Web
Consortium, and a large overlap between the two developer communities.
MathML deals principally with the <i>presentation</i> of
mathematical objects, while <i>OpenMath</i> is solely concerned with their
semantic meaning or <i>content</i>.  While MathML does
have some limited facilities for dealing with content, it also allows
semantic information encoded in <i>OpenMath</i> to be embedded inside a MathML
structure.  Thus the two technologies may be seen as highly
complementary.</p>

<div><h3 name="sec_hist" id="sec_hist">.1 History</h3>


<p><i>OpenMath</i> was originally developed through a series of workshops held
in Zurich (1993 and 1996), Oxford (1994), Amsterdam (1995), Copenhagen
(1995), Bath (1996), Dublin (1996), Nice (1997), Yorktown Heights
(1997), Berlin (1998), and Tallahassee (1998).  The participants in
these workshops formed a global <i>OpenMath</i> community which was coordinated
by a Steering Committee and operated through electronic mailing groups
and ad-hoc working parties.  This loose arrangement has been
formalised through the establishment of an <i>OpenMath</i> Society.  Up until the
end of 1996 much of the work of the community was funded through a
grant from the Human Capital and Mobility program of the European
Union, 
<span class="new"> and by</span>
the contributions of several institutions and individuals.  A
document outlining the objectives and basic design of <i>OpenMath</i> was
produced (later published as
<a href="#Abbott_Leeuwen_Strotmann_98">[20]</a>).  By the end of 1996
a simplified specification had been agreed upon and some prototype
implementations had come about
<a href="#Dalmas_Gaetano_Watt_97">[21]</a>.</p>

<p>In 1996 a group of European participants in <i>OpenMath</i> decided to bid
for funding under the European Union's Fourth Framework Programme for
strategic research in information technology.  This bid was successful
and the project started in late 1997.  The principal aims of the
project were to formalise <i>OpenMath</i> as a standard and to develop it
further through industrial applications; this process led to the
OpenMath 1.0 and 1.1 standards which were endorsed at
workshops in Eindhoven (June 1999) and Pisa (September 2002).</p>

<p class="new">In November 1998 the <i>OpenMath</i> Society was established to coordinate
all <i>OpenMath</i> activities. The society is based in Helsinki, Finland and is
coordinated by the executive committee whose members are elected by the
society. The official web page of the society is
<a href="http://www.openmath.org">http://www.openmath.org</a>.</p>

<p class="new">In 2001 the European Union agreed to fund a Thematic Network
under its Fifth Framework programme to coordinate further work on
<i>OpenMath</i> and MathML, and in particular to support a further series of workshops.  
This document is one outcome of that project, and seeks to update <i>OpenMath</i>
in the light of recent developments in XML and of the <i>OpenMath</i> community's
collective experience working with the old standard.</p>
</div>

<div><h3 name="sec_omsoc" id="sec_omsoc">.2 <i>OpenMath</i> Society</h3>


<p class="del">In November 1998 the <i>OpenMath</i> Society has been established to coordinate
all <i>OpenMath</i> activities. The society is based in Helsinki, Finland and is
steered by the executive committee whose members are elected by the
society. The official web page of the society is
<a href="http://www.openmath.org">http://www.openmath.org</a>.</p>

<p class="new">The <i>OpenMath</i> Society continues to provide
long-term coordination of <i>OpenMath</i> activities.  Membership is open to
anybody who is active in <i>OpenMath</i>; for further details see the web-site
at 
<a href="http://www.openmath.org/society/index.html">
http://www.openmath.org/society/index.html</a>.</p>

</div>

</div>

<div><h2 name="cha_int" id="cha_int">
  Chapter 1<br/>Introduction to <i>OpenMath</i></h2>





<p>This chapter briefly introduces <i>OpenMath</i> concepts and notions that are
referred to in the rest of this document.</p>

<div><h3 name="sec_om-arch" id="sec_om-arch">1.1 <i>OpenMath</i> Architecture</h3>



<div class="figure"><a name="fig_om" id="fig_om"/>
    
    <img src="om-arch.png" alt="om-arch.png"/>
<div class="caption">
  Figure 2.1 The <i>OpenMath</i> Architecture</div></div>

<p>The architecture of <i>OpenMath</i> is described in <a href="#fig_om">Figure 2.1</a> and summarizes the interactions among the different
<i>OpenMath</i> components.  There are three layers of representation of a
mathematical object <a href="#OM_98">[23]</a>. The first is
a  private layer that
is the internal representation used by an application.  The second is
an abstract layer that is the representation as an <i>OpenMath</i> object.
<span class="new">Note that these
two layers may, in some cases, be the same.</span>
The third is a
communication layer that translates the <i>OpenMath</i> object representation into
a stream of bytes. An application dependent program manipulates the
mathematical objects using its internal representation, it can convert
them to <i>OpenMath</i> objects and communicate them by using the byte stream
representation of <i>OpenMath</i> objects.</p>
</div>

<div><h3 name="sec_intro-obj" id="sec_intro-obj">1.2 <i>OpenMath</i> Objects and Encodings</h3>



<p><i>OpenMath</i> objects are representations of mathematical entities that
can be communicated among various software applications in a
meaningful way, that is, preserving their
<span>"semantics"</span>.</p>

<p><i>OpenMath</i> objects and encodings are described in detail in <a href="#cha_obj">Chapter 2</a> and <a href="#cha_enco">Chapter 3</a>.</p>


<p>The standard endorses two encodings in <acronym>XML</acronym> and binary
formats.
<span class="new">At the time of writing, these are the encodings
supported by most existing <i>OpenMath</i> tools and applications,</span>
<span class="del"> These are the encodings supported by 
the official <i>OpenMath</i> libraries</span>
however they are not the only possible encodings of <i>OpenMath</i>
objects. Users who wish to define their own encoding
<span class="del">using some other
specific language (e.g. Lisp) may</span>
<span class="new">, are free to</span>
do so provided that there is
<span class="del">an
effective translation from this encoding to an official one
</span>
<span class="new">a well-defined correspondence
between the new encoding and the abstract model defined in <a href="#cha_obj">Chapter 2</a>. </span>
</p>

</div>

<div><h3 name="sec_intro-cd" id="sec_intro-cd">1.3 Content Dictionaries</h3>



<p>Content Dictionaries (CDs) are used to assign informal and formal
semantics to all symbols used in the <i>OpenMath</i> objects. They define the
symbols used to represent concepts arising in a particular area of
mathematics.</p>

<p>The Content Dictionaries are public, they represent the actual
common knowledge among <i>OpenMath</i> applications.  Content Dictionaries fix
the <span>"meaning"</span> of objects independently of the
application.  The application receiving the object may then recognize
whether or not, according to the semantics of the symbols defined in
the Content Dictionaries, the object can be transformed to the
corresponding internal representation used by the application.</p>
</div>

<div><h3 name="sec_addnfiles" id="sec_addnfiles">1.4 Additional Files</h3>
 
<p>Several
additional files are related to Content Dictionaries.  Signature
<span class="new">Dictionaries</span><span class="del">files</span>
contain the signatures of symbols defined in some <i>OpenMath</i> Content
Dictionary and their format is endorsed by this standard.</p>

<p>Furthermore, the standard fixes how to define a specific
set of Content Dictionaries as a CDGroup.</p>

<p>Auxiliary files that define presentation and rendering or that
are used for manipulating and processing Content Dictionaries are not
discussed by the standard.</p>

</div>
<div><h3 name="sec_phrasebooks" id="sec_phrasebooks">1.5 Phrasebooks</h3>




<p>The conversion of an <i>OpenMath</i> object to/from the internal
representation in a software application is performed by an interface
program called a <i>Phrasebook</i>. The translation is
governed by the Content Dictionaries and the specifics of the
application. It is envisioned that a software application dealing with
a specific area of mathematics declares which Content Dictionaries it
understands. As a consequence, it is expected that the Phrasebook of
the application is able to translate <i>OpenMath</i> objects built using symbols
from these Content Dictionaries to/from the internal mathematical
objects of the application.
</p>

 <p><i>OpenMath</i> objects do not
specify any computational behaviour, they merely represent mathematical
expressions.  Part of the <i>OpenMath</i> philosophy is to leave it to the
application to decide what it does with an object once it has received
it.  <i>OpenMath</i> is not a query or programming language. Because of this,
<i>OpenMath</i> does not prescribe a way of forcing <span>"evaluation"</span> or
<span>"simplification"</span> of objects like
<m:math><m:mn>2</m:mn><m:mo>+</m:mo><m:mn>3</m:mn></m:math> or
<m:math><m:mi>sin</m:mi><m:mo>(</m:mo><m:mi>&#960;</m:mi><m:mo>)</m:mo></m:math>. Thus,
the same object <m:math><m:mn>2</m:mn><m:mo>+</m:mo><m:mn>3</m:mn></m:math> could be
transformed to <m:math><m:mn>5</m:mn></m:math> by a computer algebra system,
or displayed as <m:math><m:mn>2</m:mn><m:mo>+</m:mo><m:mn>3</m:mn></m:math> by a
typesetting tool.</p>
</div>
</div>

<div><h2 name="cha_obj" id="cha_obj">
  Chapter 2<br/><i>OpenMath</i> Objects</h2>




<p>In this chapter we provide a self-contained description of <i>OpenMath</i>
objects. We first do so by means of an abstract grammar
description (<a href="#sec_omabs">Section 2.1</a>)
and then give a more informal description (<a href="#sec_omin">Section 2.2</a>).</p>


<div><h3 name="sec_omabs" id="sec_omabs">2.1 Formal Definition of <i>OpenMath</i> Objects</h3>



<p><i>OpenMath</i> represents mathematical objects as terms or as labelled
trees that are called <i>OpenMath</i> objects or <i>OpenMath</i> expressions. The definition
of an abstract <i>OpenMath</i> object is then the following.</p>


<div><h4 name="sec_basic" id="sec_basic">2.1.1 Basic <i>OpenMath</i> objects</h4>
 <p>The Basic <i>OpenMath</i> Objects form
the leaves of the <i>OpenMath</i> Object tree.  A Basic <i>OpenMath</i> Object is of one of
the following.</p> 
<ul>
<li><p><span>(i)</span> Integer.</p><p>Integers in
  the mathematical sense, with no predefined range.  They are
  <span>"infinite precision"</span> integers (also called
  <span>"bignums"</span> in computer algebra).</p></li>
<li><p><span>(ii)</span> <acronym>IEEE</acronym> floating point
    number.</p><p>Double precision floating-point numbers
    following the <acronym>IEEE</acronym> 754-1985
    standard <a href="#ieee754_85">[6]</a>.</p></li>
<li><p><span>(iii)</span> Character string.</p><p>A Unicode Character string. This also corresponds to <span>"characters"</span> in
  <acronym>XML</acronym>.</p></li>
<li><p><span>(iv)</span> Bytearray.</p><p>A sequence of bytes.</p></li>
<li><p><span>(v)</span> Symbol.</p><p class="del">A Symbol
encodes two fields of information, a <i>name</i> and a
<i>Content Dictionary</i>. Each is a sequence of
characters matching a regular expression, as described below.</p><p class="new">A Symbol encodes three fields of
    information, a <i>symbol name</i>, a <i>Content
    Dictionary name</i>, and (optionally) a <i>Content
    Dictionary base URI</i>, The name of a symbol is a sequence
    of characters matching the regular expression described in <a href="#sec_names">Section 2.3</a>.  The Content Dictionary is the location of
    the definition of the symbol, consisting of a name (a sequence of
    characters matching the regular expression described in <a href="#sec_names">Section 2.3</a>) and, optionally, a unique prefix called a
    <i>cdbase</i> which is used to disambiguate multiple
    Content Dictionaries of the same name.  There are other properties
    of the symbol that are not explicit in these fields but whose
    values may be obtained by inspecting the Content Dictionary
    specified. These include the symbol definition, formal properties
    and examples and, optionally, a <i>Role</i> which is
    a restriction on where the symbol may appear in an <i>OpenMath</i> object.  The
    possible roles are described in <a href="#sec_roles">Section 2.1.4</a>.
    </p></li>
<li><p><span>(vi)</span> Variable.</p><p>A Variable <span class="del">consists of</span>
<span class="new">must have</span> a
<i>name</i> which is a sequence of characters matching a
regular expression, as described in <a href="#sec_names">Section 2.3</a>.
</p></li>
</ul>
</div>

<div class="new"><h4 name="sec_derived" id="sec_derived">2.1.2 Derived <i>OpenMath</i> Objects</h4>


<p>Derived <i>OpenMath</i> objects are currently used as a way by which non-<i>OpenMath</i>
data is embedded inside an <i>OpenMath</i> object.
A derived <i>OpenMath</i> object is built as follows: 
<ul>
<li><p><span>(i)</span> If <m:math><m:mi>A</m:mi></m:math> is
<i>not</i> an <i>OpenMath</i> object, then <m:math><m:mi mathvariant="bold">foreign</m:mi><m:mfenced><m:mi>A</m:mi></m:mfenced></m:math> is an <i>OpenMath</i>
<i>foreign object</i>.  An <i>OpenMath</i> foreign object may optionally
have an <i>encoding</i> field which describes how its contents
should be interpreted.</p></li>
</ul>
</p>
</div>

<div><h4 name="sec_compound" id="sec_compound">2.1.3 <span class="del">Compound</span><i>OpenMath</i> Objects</h4>

  
<p><i>OpenMath</i> objects are built recursively as follows.
<ul>
<li><p><span>(i)</span> Basic <i>OpenMath</i> objects are <i>OpenMath</i> objects.
(<span class="new">Note that derived <i>OpenMath</i> objects are
<i>not</i> <i>OpenMath</i> objects, but are used to construct <i>OpenMath</i>
objects as described below.)</span></p></li>

<li><p>
    <span>(ii)</span> If
    <m:math><m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub></m:math>,
    <span>&#8230;</span>,
    <m:math><m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub></m:math>     <m:math><m:mo>(</m:mo><m:mi>n</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn><m:mo>)</m:mo></m:math>     are <i>OpenMath</i> objects, then
  <m:math display="block">
  <m:mi mathvariant="bold">application</m:mi><m:mo>(</m:mo><m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo> <m:mi>&#8230;</m:mi><m:mo>,</m:mo> <m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub><m:mo>)</m:mo>
  </m:math>
  is an <i>OpenMath</i> <i>application object</i>.</p></li> <li><p><span>(iii)</span> If
  <m:math><m:msub><m:mi>S</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo>
  <m:mi>&#8230;</m:mi><m:mo>,</m:mo> <m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub></m:math>   are <i>OpenMath</i> symbols, and
<span class="del">
<m:math><m:mi>A</m:mi></m:math>,
  <m:math><m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub></m:math>,
  <span>&#8230;</span>, <m:math><m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub></m:math>, <m:math><m:mo>(</m:mo><m:mi>n</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn><m:mo>)</m:mo></m:math> are <i>OpenMath</i> objects, then
</span>
<span class="new">
<m:math><m:mi>A</m:mi></m:math> is an <i>OpenMath</i> object, and
  <m:math><m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub></m:math>,
  <span>&#8230;</span>, <m:math><m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub></m:math> <m:math><m:mo>(</m:mo><m:mi>n</m:mi><m:mo>&gt;</m:mo><m:mn>0</m:mn><m:mo>)</m:mo></m:math> are <i>OpenMath</i> objects or <i>OpenMath</i> derived objects, then
</span>

  <m:math display="block"><m:mi mathvariant="bold">attribution</m:mi>
  <m:mo>(</m:mo><m:mi>A</m:mi><m:mo>,</m:mo> <m:msub><m:mi>S</m:mi><m:mn>1</m:mn></m:msub>
  <m:mspace width=".3em"/> <m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo>
  <m:mspace width=".3em"/> <m:mi>&#8230;</m:mi> <m:mspace width=".3em"/>
  <m:mo>,</m:mo> <m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub> <m:mspace width=".3em"/>
  <m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub><m:mo>)</m:mo></m:math> is an <i>OpenMath</i>
  <i>attribution object</i>.
  </p><p>
  <span class="del">and</span> <m:math><m:mi>A</m:mi></m:math>   is the object <i>stripped of attributions</i>. <span class="new">
  <m:math><m:msub><m:mi>S</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo>
  <m:mi>&#8230;</m:mi><m:mo>,</m:mo> <m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub></m:math>   are referred to as <i>keys</i> and
  <m:math><m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub></m:math>,
  <span>&#8230;</span>,
  <m:math><m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub></m:math> as their associated
  <i>values</i></span>.
  <span class="del">The operation of recursively
  applying stripping to the stripped object is called
  <i>flattening of the attribution</i>.

                  When the stripped object after flattening is a
  variable, the attributed object is called <i>attributed
  variable</i>.</span>
  <span class="new">If, after  recursively
  applying stripping to remove attributions, the resulting
  un-attributed object is a 
  variable, the original attributed object is called an <i>attributed
  variable</i>.</span>
  </p></li>

<li><p><span>(iv)</span> If <m:math><m:mi>B</m:mi></m:math> and
  <m:math><m:mi>C</m:mi></m:math> are <i>OpenMath</i> objects, and
  <m:math><m:msub><m:mi>v</m:mi><m:mn>1</m:mn></m:msub></m:math>,
  <m:math><m:mi>&#8230;</m:mi></m:math>,
  <m:math><m:msub><m:mi>v</m:mi><m:mi>n</m:mi></m:msub></m:math>   <m:math><m:mo>(</m:mo><m:mi>n</m:mi> <m:mo>&#8805;</m:mo>
  <m:mn>0</m:mn><m:mo>)</m:mo></m:math> are <i>OpenMath</i> variables or attributed
  variables, then
  <m:math display="block">
  <m:mi mathvariant="bold">binding</m:mi> <m:mo>(</m:mo><m:mi>B</m:mi><m:mo>,</m:mo> <m:msub><m:mi>v</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo> <m:mi>&#8230;</m:mi><m:mo>,</m:mo> <m:msub><m:mi>v</m:mi><m:mi>n</m:mi></m:msub><m:mo>,</m:mo> <m:mi>C</m:mi><m:mo>)</m:mo>
  </m:math>
is an <i>OpenMath</i> <i>binding object</i>.</p></li>
<li><p><span>(v)</span> If <m:math><m:mi>S</m:mi></m:math> is an
<i>OpenMath</i> symbol and <m:math><m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub></m:math>,
<span>&#8230;</span>,
<m:math><m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub></m:math> <m:math><m:mo>(</m:mo><m:mi>n</m:mi> <m:mo>&#8805;</m:mo>
<m:mn>0</m:mn><m:mo>)</m:mo></m:math> are <i>OpenMath</i> objects <span class="new">or
<i>OpenMath</i> derived objects</span>, then <m:math display="block"><m:mi mathvariant="bold">error</m:mi>
<m:mo>(</m:mo><m:mi>S</m:mi><m:mo>,</m:mo>
<m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo><m:mi>&#8230;</m:mi><m:mo>,</m:mo><m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub><m:mo>)</m:mo>
  </m:math>
  is an <i>OpenMath</i> <i>error object</i>.</p></li>
</ul>
 <span class="new"><i>OpenMath</i> objects that are contstructed via rules (ii)
   to (v) are jointly called <span><i>compound <i>OpenMath</i> objects</i></span></span>
</p>
</div>

<div class="new"><h4 name="sec_roles" id="sec_roles">2.1.4 <i>OpenMath</i> Symbol Roles</h4>


<p>
We say that an <i>OpenMath</i> symbol is used to <i>construct</i>
an <i>OpenMath</i> object if it is the first child of an <i>OpenMath</i> application,
binding or error object, or an even-indexed child of an <i>OpenMath</i>
attribution object (i.e. the <i>key</i> in a
<i>(key, value)</i> pair).
The <i>role</i> of an <i>OpenMath</i> symbol is a restriction
on how it may be used to construct a compound <i>OpenMath</i> object and, in the
case of the key in an attribution object, a clarification of how that
attribution should be interpreted.  <span class="finaledit">The </span>possible roles are:
<ol class="lowerroman">

<li><p><i>binder</i> The symbol may 
appear as the first child of an <i>OpenMath</i> binding object.
</p></li>

<li><p> <i>attribution</i> The symbol may 
be used as key in an <i>OpenMath</i> attribution object, i.e. as the first
element of a (key, value) pair, or in an equivalent context (for example
to refer to the value of an attribution).  This form of attribution
may be ignored by an application, so should be used for information
which does not change the meaning of the attributed <i>OpenMath</i> object.
</p></li> 

<li><p> <i>semantic-attribution</i> This is the
same as <i>attribution</i> except that it modifies the
meaning of the attributed <i>OpenMath</i> object and thus cannot be ignored by an
application<span class="finaledit">, without changing the meaning</span>.  </p></li> 

<li><p> <i>error</i> The symbol <span class="finaledit">may</span> appear
as the first child of an <i>OpenMath</i> error object.  </p></li>

<li><p> <i>application</i> The symbol <span class="finaledit">may</span> appear
as the first child of an <i>OpenMath</i> application object.  </p></li>

<li><p> <i>constant</i> The symbol cannot be
used to construct an <i>OpenMath</i> compound object.

</p></li>

</ol>

A symbol cannot have more than one role and 
cannot be used to construct a compound <i>OpenMath</i> object in a way
which requires a different role (using the definition of construct given
earlier in this section).
This means that one cannot use a symbol which binds some variables to
construct, say, an application object.  However it does not prevent
the use of that symbol as an <i>argument</i> in an
application object (where by argument we mean a child with index
greater than 1). 
</p>

<p> 
If no role is indicated then the symbol can be used anywhere.  Note
that this is not the same as saying that the symbol's role is
<i>constant</i>.
</p>


</div>

</div>
<div><h3 name="sec_omin" id="sec_omin">2.2 Further Description of <i>OpenMath</i> Objects</h3>




  

<p>Informally, an <i>OpenMath</i> <span><i>object</i></span> can be
viewed as a tree and is also referred to as a term.  The objects at
the leaves of <i>OpenMath</i> trees are called <span><i>basic
objects</i></span>.  The basic objects supported by <i>OpenMath</i> are:
<dl>
<dt>Integer</dt><dd><p>Arbitrary Precision
integers.</p> </dd>
<dt>Float</dt><dd> <p><i>OpenMath</i> floats are
<acronym>IEEE</acronym> 754 Double precision floating-point
numbers. Other types of floating point number may be encoded in <i>OpenMath</i>
by the use of suitable content dictionaries.</p>
  
</dd>

<dt>Character strings</dt><dd><p>are
  sequences of characters. These characters come from the Unicode
  standard <a href="#UNICODE">[12]</a>.</p>
  
</dd>
<dt>Bytearrays</dt><dd><p>are sequences of
bytes. There is no <span>"byte"</span> in <i>OpenMath</i> as an object of its
own. However, a single byte can of course be represented by a
bytearray of length 1.  The difference between strings and bytearrays
is the following: a character string is a sequence of bytes with a
fixed interpretation (as characters, Unicode texts may require several
bytes to code one character), whereas a bytearray is an uninterpreted
sequence of bytes with no intrinsic meaning.  Bytearrays could be used
inside <i>OpenMath</i> errors to provide information to, for example, a debugger;
they could also contain intermediate results of calculations, or
<span>"handles"</span> into computations or databases.</p>
</dd>

<dt>Symbols</dt><dd>
  
  
  <p>
 are uniquely defined by the Content Dictionary in which they occur
  and by a name.
<span class="del">In definition in <a href="#sec_omabs">Section 2.1</a> we have
  left this information implicit. However, it should be kept in mind
  that all symbols appearing in an <i>OpenMath</i> object are defined in a
  Content Dictionary.
</span>The form of these definitions is explained in
  <a href="#cha_cd">Chapter 4</a>.  Each symbol has no more than one
  definition in a Content Dictionary. Many Content Dictionaries may
  define differently a symbol with the same name (e.g. the symbol
  <small><code>union</code></small> is defined as
  associative-commutative set theoretic union in a Content Dictionary
  <small><code>set1</code></small> but another Content Dictionary,
  <small><code>multiset1</code></small> might define a symbol
  <small><code>union</code></small> as the union of multi-sets).
<span class="del">The name
  of a symbol can only contain alphanumeric characters and
  underscores.  More precisely, a symbol name matches the following
  regular expression:</span>
<blockquote class="del"><p>
  [<small><code>A</code></small>-<small><code>Z</code></small><small><code>a</code></small>-<small><code>z</code></small>]
  [<small><code>A</code></small>-<small><code>Z</code></small><small><code>a</code></small>-<small><code>z</code></small><small><code>0</code></small>-<small><code>9</code></small><small><code>_</code></small>]*
  </p></blockquote>
  <span class="del">Notice that these symbol names are case sensitive.  <i>OpenMath</i>
  <i>recommends</i> that symbol names should be no longer than
  100 characters.</span>
</p>
  
 
  </dd>

<dt>Variables</dt><dd><p>are meant to
  denote parameters, variables or indeterminates (such as bound
  variables of function definitions, variables in summations and
  integrals, independent variables of derivatives).  <span class="del">Plain variable names are restricted to use a
  subset of the printable ASCII characters.  Formally the names must
  match the regular expression:</span> <blockquote class="del"><p>
  [A-Za-z0-9=+(),-./:?!#$%*;=@[]^_`{|}]+ </p></blockquote>
</p>
</dd>

</dl> </p>


<p class="new">Derived <i>OpenMath</i> objects are constructed from
non-<i>OpenMath</i> data.  They differ from bytearrays in that they can have any
structure.  Currently there is only one way of making a derived <i>OpenMath</i>
object.</p>

<dl class="new">
<dt>Foreign</dt><dd><p>is used to import a
non-<i>OpenMath</i> object into an <i>OpenMath</i> attribution.  Examples of its use could
be to annotate a formula with a visual or aural rendering, an
animation, etc.  They may also appear in <i>OpenMath</i> error objects, for
example to allow an application to report an error in processing such
an object.  
</p>
</dd>

</dl>


<p>The four following constructs can be used to make compound
 <i>OpenMath</i> objects <span class="new"> out of basic or derived <i>OpenMath</i>
objects</span>.</p>
<dl>
<dt>Application</dt><dd><p>constructs an
  <i>OpenMath</i> object from a sequence of one or more <i>OpenMath</i> objects. The first
  <span class="del">argument</span><span class="new">child</span>
  of an application is referred to as its <span>"head"</span> while
  the remaining objects are called its <span>"arguments"</span>.  An <i>OpenMath</i>
  application object can be used to convey the mathematical notion of
  application of a function to a set of arguments.  For instance,
  suppose that the <i>OpenMath</i> symbol <m:math><m:mi>sin</m:mi></m:math> is defined in
  a <span class="new">suitable</span> Content Dictionary,
  <span class="del">for trigonometry</span> then <m:math><m:mi mathvariant="bold">application</m:mi><m:mo>(</m:mo><m:mi>sin</m:mi><m:mo>,</m:mo>
  <m:mi>x</m:mi> <m:mo>)</m:mo></m:math> is the abstract <i>OpenMath</i> object
  corresponding to <m:math><m:mi>sin</m:mi> <m:mo>(</m:mo><m:mi>x</m:mi>
  <m:mo>)</m:mo></m:math>.  More generally, an <i>OpenMath</i> application object can
  be used as a constructor to convey a mathematical object built from
  other objects such as a polynomial constructed from a set of
  monomials.  Constructors build inhabitants of some symbolic type,
  for instance the type of rational numbers or the type of
  polynomials.  The rational number, usually denoted as
  <m:math><m:mn>1</m:mn><m:mo>/</m:mo><m:mn>2</m:mn></m:math>, is represented by the
  <i>OpenMath</i> application object <m:math><m:mi mathvariant="bold">application</m:mi><m:mo>(</m:mo><m:mi>Rational</m:mi><m:mo>,</m:mo>
  <m:mn>1</m:mn><m:mo>,</m:mo> <m:mn>2</m:mn><m:mo>)</m:mo></m:math>. The symbol
  <m:math><m:mi>Rational</m:mi></m:math> must be defined, by a Content
  Dictionary, as a constructor symbol for the rational numbers.</p>
   
<div class="figure"><a name="fig_obj" id="fig_obj"/>
      <img src="lambda.png" alt="lambda.png"/>
<div class="caption">
  Figure 3.1 The <i>OpenMath</i> application and binding objects for
<m:math><m:mi>sin</m:mi> <m:mo>(</m:mo><m:mi>x</m:mi> <m:mo>)</m:mo></m:math> and
<m:math><m:mi>&#955;</m:mi> <m:mi>x</m:mi><m:mo>.</m:mo><m:mi>x</m:mi> <m:mo>+</m:mo>
<m:mn>2</m:mn></m:math> in tree-like notation.</div></div>

  
</dd>

<dt>Binding</dt><dd><p>objects are
  constructed from an <i>OpenMath</i> object, and from a sequence of zero or more
  variables followed by another <i>OpenMath</i> object.  The first <i>OpenMath</i> object is
  the <span>"binder"</span> object. Arguments 2 to
  <m:math><m:mi>n</m:mi><m:mo>-</m:mo><m:mn>1</m:mn></m:math> are always variables to
  be bound in the <span>"body"</span> which is the
  <m:math><m:msup><m:mi>n</m:mi><m:mi>th</m:mi></m:msup></m:math> argument object. It
  is allowed to have no bound variables, but the binder object and the
  body should be present. Binding can be used to express functions or
  logical statements.  The function <m:math><m:mi>&#955;</m:mi>
  <m:mi>x</m:mi><m:mo>.</m:mo><m:mi>x</m:mi> <m:mo>+</m:mo><m:mn>2</m:mn></m:math>, in which
  the variable <m:math><m:mi>x</m:mi></m:math> is bound by
  <m:math><m:mi>&#955;</m:mi></m:math>, corresponds to a binding object having
  as binder the <i>OpenMath</i> symbol <m:math><m:mi>lambda</m:mi></m:math>: <m:math display="block"><m:mi mathvariant="bold">binding</m:mi><m:mo>(</m:mo><m:mi>lambda</m:mi><m:mo>,</m:mo>
  <m:mi>x</m:mi> <m:mo>,</m:mo> <m:mi mathvariant="bold">application</m:mi><m:mo>(</m:mo><m:mi>plus</m:mi><m:mo>,</m:mo>
  <m:mi>x</m:mi> <m:mo>,</m:mo>
  <m:mn>2</m:mn><m:mo>)</m:mo><m:mo>)</m:mo><m:mtext>.</m:mtext></m:math></p>
  
  
  


<p>Phrasebooks are allowed to use <m:math><m:mi>&#945;</m:mi></m:math>   conversion in order to avoid clashes of variable names. Suppose an
  object <m:math><m:mi>&#937;</m:mi></m:math> contains an occurrence of the
  object <m:math><m:mi mathvariant="bold">binding</m:mi>
  <m:mo>(</m:mo><m:mi>B</m:mi> <m:mo>,</m:mo> <m:mi>v</m:mi> <m:mo>,</m:mo> <m:mi>C</m:mi>
  <m:mo>)</m:mo></m:math>.  This object <m:math><m:mi mathvariant="bold">binding</m:mi> <m:mo>(</m:mo><m:mi>B</m:mi> <m:mo>,</m:mo>
  <m:mi>v</m:mi> <m:mo>,</m:mo> <m:mi>C</m:mi> <m:mo>)</m:mo></m:math> can be replaced
  in <m:math><m:mi>&#937;</m:mi></m:math> by <m:math><m:mi mathvariant="bold">binding</m:mi> <m:mo>(</m:mo><m:mi>B</m:mi> <m:mo>,</m:mo>
  <m:mi>z</m:mi> <m:mo>,</m:mo> <m:mi>C'</m:mi><m:mo>)</m:mo></m:math> where
  <m:math><m:mi>z</m:mi></m:math> is a variable not occurring free in
  <m:math><m:mi>C</m:mi></m:math> and <m:math><m:mi>C'</m:mi></m:math> is obtained
  from <m:math><m:mi>C</m:mi></m:math> by replacing each free (i.e., not bound
  by any intermediate <b>binding</b> construct) occurrence
  of <m:math><m:mi>v</m:mi></m:math> by <m:math><m:mi>z</m:mi></m:math>.  This
  operation preserves the semantics of the object
  <m:math><m:mi>&#937;</m:mi></m:math>. In the above example, a phrasebook is
  thus allowed to transform the object to, e.g.  <m:math revisionflag="deleted" display="block"><m:mi mathvariant="bold">binding</m:mi>
  <m:mo>(</m:mo><m:mi>lambda</m:mi><m:mo>,</m:mo> <m:mi>v</m:mi> <m:mo>,</m:mo> <m:mi mathvariant="bold">binding</m:mi> <m:mo>(</m:mo><m:mi>lambda</m:mi><m:mo>,</m:mo>
  <m:mi>z</m:mi> <m:mo>,</m:mo><m:mi mathvariant="bold">application</m:mi>
  <m:mo>(</m:mo><m:mi>times</m:mi><m:mo>,</m:mo><m:mi>z</m:mi>
  <m:mo>,</m:mo><m:mi>z</m:mi><m:mo>)</m:mo><m:mo>)</m:mo><m:mo>)</m:mo><m:mtext>.</m:mtext></m:math>
  <m:math revisionflag="added" display="block"><m:mi mathvariant="bold">binding</m:mi><m:mo>(</m:mo><m:mi>lambda</m:mi><m:mo>,</m:mo>
  <m:mi>z</m:mi> <m:mo>,</m:mo> <m:mi mathvariant="bold">application</m:mi><m:mo>(</m:mo><m:mi>plus</m:mi><m:mo>,</m:mo>
  <m:mi>z</m:mi> <m:mo>,</m:mo>
  <m:mn>2</m:mn><m:mo>)</m:mo><m:mo>)</m:mo><m:mtext>.</m:mtext></m:math>
</p>
<p>Repeated occurrences of the same variable in a binding operator
  are allowed. An <i>OpenMath</i> application should treat a binding with
  multiple occurrences of the same variable as equivalent to the
  binding in which all but the last occurrence of each variable is
  replaced by a new variable which does not occur free in the body of
  the binding.  <m:math display="block"><m:mi mathvariant="bold">binding</m:mi> <m:mo>(</m:mo><m:mi>lambda</m:mi><m:mo>,</m:mo>
  <m:mi>v</m:mi> <m:mo>,</m:mo> <m:mi>v</m:mi> <m:mo>,</m:mo><m:mi mathvariant="bold">application</m:mi>
  <m:mo>(</m:mo><m:mi>times</m:mi><m:mo>,</m:mo><m:mi>v</m:mi>
  <m:mo>,</m:mo><m:mi>v</m:mi><m:mo>)</m:mo> <m:mo>)</m:mo></m:math> is semantically
  equivalent to: <m:math display="block"><m:mi mathvariant="bold">binding</m:mi> <m:mo>(</m:mo><m:mi>lambda</m:mi> <m:mo>,</m:mo>
  <m:msup><m:mi>v</m:mi><m:mo>'</m:mo></m:msup> <m:mo>,</m:mo> <m:mi>v</m:mi>
  <m:mo>,</m:mo><m:mi mathvariant="bold">application</m:mi>
  <m:mo>(</m:mo><m:mi>times</m:mi><m:mo>,</m:mo><m:mi>v</m:mi>
  <m:mo>,</m:mo><m:mi>v</m:mi><m:mo>)</m:mo> <m:mo>)</m:mo></m:math> so that the
  resulting function is actually a constant in its first argument
  (<m:math><m:msup><m:mi>v</m:mi><m:mo>'</m:mo></m:msup></m:math> does not occur free
  in the body <m:math><m:mi mathvariant="bold">application</m:mi>
  <m:mo>(</m:mo><m:mi>times</m:mi><m:mo>,</m:mo><m:mi>v</m:mi>
  <m:mo>,</m:mo><m:mi>v</m:mi><m:mo>)</m:mo> <m:mo>)</m:mo></m:math>).</p>

  
</dd>

<dt>Attribution</dt><dd><p>decorates an
  object with a sequence of one or more pairs made up of an <i>OpenMath</i>
  symbol, the <span>"attribute"</span>, and an associated <span class="del"><i>OpenMath</i></span> object, the <span>"value of the
  attribute"</span>.  The value of the attribute can be an <span class="new"><i>OpenMath</i></span> attribution object itself. As an
  example of this, consider the <i>OpenMath</i> objects representing groups,
  automorphism groups, and group dimensions. It is then possible to
  attribute an <i>OpenMath</i> object representing a group by its automorphism
  group, itself attributed by its dimension.</p>

<p class="new">
<i>OpenMath</i> objects can be attributed with <i>OpenMath</i> foreign objects, which are
containers for non-<i>OpenMath</i> structures.  For example a mathematical
expression could be attributed with its spoken or visual rendering.
</p>

<p>Composition of attributions, as in
  <m:math display="block">
<m:mi mathvariant="bold">attribution</m:mi><m:mo>(</m:mo><m:mi mathvariant="bold">attribution</m:mi><m:mo>(</m:mo><m:mi>A</m:mi><m:mo>,</m:mo>
  <m:msub><m:mi>S</m:mi><m:mn>1</m:mn></m:msub> <m:mspace width=".3em"/>
  <m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo><m:mi>&#8230;</m:mi><m:mo>,</m:mo><m:msub><m:mi>S</m:mi><m:mi>h</m:mi></m:msub>
  <m:mspace width=".3em"/>
  <m:msub><m:mi>A</m:mi><m:mi>h</m:mi></m:msub><m:mo>)</m:mo><m:mo>,</m:mo>
  <m:msub><m:mi>S</m:mi><m:mrow><m:mi>h</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub>
  <m:mspace width=".3em"/>
  <m:msub><m:mi>A</m:mi><m:mrow><m:mi>h</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo>,</m:mo>
  <m:mi>&#8230;</m:mi><m:mo>,</m:mo> <m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub> <m:mspace width=".3em"/> <m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub><m:mo>)</m:mo></m:math> is
  semantically equivalent to a single attribution, that is <m:math display="block"><m:mi mathvariant="bold">attribution</m:mi><m:mo>(</m:mo><m:mi>A</m:mi><m:mo>,</m:mo>
  <m:msub><m:mi>S</m:mi><m:mn>1</m:mn></m:msub> <m:mspace width=".3em"/>
  <m:msub><m:mi>A</m:mi><m:mn>1</m:mn></m:msub><m:mo>,</m:mo>
  <m:mi>&#8230;</m:mi><m:mo>,</m:mo> <m:msub><m:mi>S</m:mi><m:mi>h</m:mi></m:msub> <m:mspace width=".3em"/> <m:msub><m:mi>A</m:mi><m:mi>h</m:mi></m:msub><m:mo>,</m:mo>
  <m:msub><m:mi>S</m:mi><m:mrow><m:mi>h</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub>
  <m:mspace width=".3em"/>
  <m:msub><m:mi>A</m:mi><m:mrow><m:mi>h</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:msub><m:mo>,</m:mo>
  <m:mi>&#8230;</m:mi><m:mo>,</m:mo> <m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub> <m:mspace width=".3em"/>
  <m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub><m:mo>)</m:mo><m:mtext>.</m:mtext></m:math>
  The operation that produces an object with a single layer of
  attribution is called <i>flattening</i>.</p>

<p>Multiple attributes with the same name are allowed.  While the
  order of the given attributes does not imply any notion of priority,
  potentially it could be significant. For instance, consider the case
  in which <m:math><m:msub><m:mi>S</m:mi><m:mi>h</m:mi></m:msub> <m:mo>=</m:mo>
  <m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub></m:math> (<m:math><m:mi>h</m:mi>
  <m:mo>&lt;</m:mo> <m:mi>n</m:mi></m:math>) in the example above. Then, the
  object is to be interpreted as if the value
  <m:math><m:msub><m:mi>A</m:mi><m:mi>n</m:mi></m:msub></m:math> overwrites the value
  <m:math><m:msub><m:mi>A</m:mi><m:mi>h</m:mi></m:msub></m:math>.  (<i>OpenMath</i> however does
  not mandate that an application preserves the attributes or their
  order.)</p>

<p class="new">Attribution acts as either adornment
  annotation or as semantical annotation. When the key has role
  <i>attribution</i>, then replacement of the
  attributed object by the object itself is not harmful and preserves
  the semantics. When the key has role
  <i>semantic-attribution</i> then the attributed
  object is modified by the attribution and cannot be viewed as
  semantically equivalent to the stripped object. If the attribute
  lacks the role specification then attribution is acting as adornment
  annotation.
  </p>


<p>Objects can be decorated in a multitude of ways.
<span class="del">In <a href="#OMD132b">[3]</a>, typing of <i>OpenMath</i> objects is
expressed by using an attribution.
</span>
<span class="new">An example of the use of an adornment attribution
would be to indicate the colour in which an <i>OpenMath</i> object should be
displayed, for example <m:math><m:mi mathvariant="bold">attribution</m:mi><m:mo>(</m:mo><m:mi>A</m:mi><m:mo>,</m:mo>
<m:mi>colour</m:mi> <m:mspace width=".3em"/> <m:mi>red</m:mi> <m:mo>)</m:mo></m:math>.
Note that both <m:math><m:mi>A</m:mi></m:math> and <m:math><m:mi>red</m:mi></m:math> are
<span class="finaledit">arbitary</span> <i>OpenMath</i>
objects <span class="finaledit">whereas <m:math><m:mi>color</m:mi></m:math> is
a symbol</span>.
An example of the use of a semantic attribution would be to indicate the
type of an object.  For example</span>
the object <m:math><m:mi mathvariant="bold">attribution</m:mi><m:mo>(</m:mo><m:mi>A</m:mi><m:mo>,</m:mo>
<m:mi>type</m:mi> <m:mspace width=".3em"/> <m:mi>t</m:mi> <m:mo>)</m:mo></m:math> represents the judgment stating that object <m:math><m:mi>A</m:mi></m:math> has type <m:math><m:mi>t</m:mi></m:math>. Note that both
<m:math><m:mi>A</m:mi></m:math> and <m:math><m:mi>t</m:mi></m:math> are <span class="finaledit">arbitary</span> <i>OpenMath</i>
objects <span class="finaledit">whereas <m:math><m:mi>type</m:mi></m:math> is
a symbol</span>.</p>


<p class="del">Attribution can act as either annotation,
  in the sense of adornment, or as modifier. In the former case,
  replacement of the adorned object by the object itself is probably
  not harmful (preserves the semantics). In the latter case however,
  it may very well be.  Therefore, attribution in general should by
  default be treated as a construct rather than as adornment. Only
  when the CD definitions of the attributes make it clear that they
  are adornments, can the attributed object be viewed as semantically
  equivalent to the stripped object.</p>

            
  
  
</dd>

<dt>Error</dt><dd><p>is made up of an <i>OpenMath</i>
  symbol and a sequence of zero or more <i>OpenMath</i> objects. This object has
  no direct mathematical meaning.  Errors occur as the result of some
  treatment on an <i>OpenMath</i> object and are thus of real interest only when
  some sort of communication is taking place. Errors may occur inside
  other objects and also inside other errors.  Error objects might
  consist only of a symbol as in the object: <m:math><m:mi mathvariant="bold">error</m:mi> <m:mo>(</m:mo><m:mi>S</m:mi>
  <m:mo>)</m:mo></m:math>.</p> 
</dd>

</dl> 
</div>

<div class="new"><h3 name="sec_names" id="sec_names">2.3 Names</h3>


<p>The names of symbols, variables and content dictionaries must
conform to the production <small><code>Name</code></small> specified in the following
grammar
(which is identical to that for <acronym>XML</acronym> names in XML 1.1,
<a href="#xml_04">[16]</a>). Informally speaking, a name is a sequence
of Unicode <a href="#UNICODE">[12]</a>
characters which begins with a letter and cannot contain
certain punctuation and combining  characters.  The notation
<small><code>#x...</code></small> represents the hexadecimal value of 
the encoding of a Unicode character. 
Some of the character values or <i>code points</i> in the
following productions are currently unassigned, but this is
likely to change in the future as Unicode evolves<sup><a href="#xml1">*1</a></sup>.

</p><p class="footnote"><a name="xml1" id="xml1"/><sup>*1</sup>
We note that in XML 1 the name production explicitly listed 
the characters that were allowed, so all the characters added in
versions of Unicode after 2.0 (which amounted to tens of thousands of
characters) were not allowed in names.
</p>

<blockquote>
<table>
<tr>
<td>Name </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> NameStartChar (NameChar)* </td>
</tr>
<tr>
<td>NameStartChar</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td>  ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] |</td></tr>
<tr><td/><td/><td>[#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] |</td></tr>
<tr><td/><td/><td>[#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |</td></tr>
<tr><td/><td/><td>[#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |</td></tr>
<tr><td/><td/><td>[#x10000-#xEFFFF] 
</td>
</tr>
<tr>
<td>NameChar</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td>  NameStartChar | "-" | "." | [0-9] | #xB7 | [#x0300-#x036F] |</td></tr>
<tr><td/><td/><td>[#x203F-#x2040] </td>
</tr>
</table>
</blockquote>


<p><b>CD Base</b>  A cdbase must conform to the grammar for URIs described in
<a href="#IETF2396">[7]</a>.  Note that if non-ASCII characters are
used in a CD or symbol name then when a URI for that symbol is
constructed it will be necessary to map the non-ASCII characters to a
sequence of octets.  The precise mechanism for doing this depends on
the URI scheme.</p>

<p><b>Note on content dictionary names</b>  
It is a common convention to store a Content Dictionary in a file of
the same name, which can cause difficulties on many file systems.  If
this convention is to be followed then <i>OpenMath</i>
<i>recommends</i> that the name be restricted to the
subset of the above grammar which is a legal POSIX
<a href="#POSIX">[5]</a> filename, namely:
<blockquote>
<table>
<tr>
<td>Name </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> (PosixLetter | '_') (Char)*
</td>
</tr>
<tr>
<td>Char</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> PosixLetter | Digit | '.' | '-' | '_' 
</td>
</tr>
<tr>
<td>PosixLetter</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> 
'a' | 'b' | ... | 'z' | 'A' | 'B' | ... | 'Z'
</td>
</tr>
</table>
</blockquote>
</p>

<p><b>Canonical URIs for Symbols</b>  
To facilitate the use of <i>OpenMath</i> within a URI-based framework (such as RDF
<a href="#rdf">[19]</a> or OWL <a href="#owl">[18]</a>), we provide the
following scheme for constructing a canonical URI
for an <i>OpenMath</i> Symbol:
<blockquote>
  <p><small><code>URI = cdbase-value + '/' + cd-value + '#' + name-value</code></small></p>
</blockquote>
So for example the URI for the symbol with cdbase
<small><code>http://www.openmath.org/cd</code></small>, cd
<small><code>transc1</code></small> and name <small><code>sin</code></small>
is:
<blockquote>
  <p><small><code>http://www.openmath.org/cd/transc1#sin</code></small></p>
</blockquote>
In particular, this now allows us to refer uniquely to an <i>OpenMath</i> symbol from a
MathML document <a href="#MathML_2003">[17]</a>:
<div class="literal"><pre>
&lt;mathml:csymbol xmlns:mathml="http://www.w3.org/1998/Math/MathML/"
                definitionURL="http://www.openmath.org/cd/transc1#sin"&gt;
  &lt;mo&gt; sin &lt;/mo&gt; 
&lt;/csymbol&gt;
</pre></div>
</p>

</div>

<div><h3 name="sec_summary" id="sec_summary">2.4 Summary</h3>


<ul>
<li><p><i>OpenMath</i> supports basic objects like integers, symbols,
  floating-point numbers, character strings, bytearrays, and
  variables.</p></li>
<li><p><i>OpenMath</i> compound objects are of four kinds:
  applications, bindings, errors, and attributions.</p></li>
<li class="new"><p><i>OpenMath</i> objects may be attributed
with non-<i>OpenMath</i> objects via the use of foreign <i>OpenMath</i> objects.
  </p></li>
<li><p><i>OpenMath</i> objects have the expressive power to cover all
  areas of computational mathematics.</p></li>
</ul>

 <p>Observe that an <i>OpenMath</i>
application object is viewed as a <span>"tree"</span> by software
applications that do not understand Content Dictionaries, whereas a
Phrasebook that understands the semantics of the symbols, as defined
in the Content Dictionaries, should interpret the object as functional
application, constructor, or binding accordingly. Thus, for example,
for some applications, the <i>OpenMath</i> object corresponding to
<m:math><m:mn>2</m:mn><m:mo>+</m:mo><m:mn>5</m:mn></m:math> may result in a command
that writes <m:math><m:mn>7</m:mn></m:math>.</p>
</div>
</div>

<div><h2 name="cha_enco" id="cha_enco">
  Chapter 3<br/><i>OpenMath</i> Encodings</h2>



<p>In this chapter, two encodings are defined that map between <i>OpenMath</i>
objects and byte streams.  These byte streams constitute a low level
representation that can be easily exchanged between processes (via
almost any communication method) or stored and retrieved from
files.</p>


<p class="del">The first encoding uses ISO 646:1983
characters <a href="#iso646_83">[22]</a> (also known as
<acronym>ASCII</acronym> characters) and is an <acronym>XML</acronym>
application. Although the <acronym>XML</acronym> markup of the encoding uses only
<acronym>ASCII</acronym> characters, <i>OpenMath</i> strings may use arbitrary
Unicode/ISO 10646:1988 characters <a href="#UNICODE">[12]</a>.
It can be used, for example, to send <i>OpenMath</i> objects via e-mail, news,
cut-and-paste, etc. The texts produced by this encoding can be part of
<acronym>XML</acronym> documents.</p>

<p class="new">The first encoding is a character-based
encoding in <acronym>XML</acronym> format.  In previous versions of the <i>OpenMath</i> Standard
this encoding was a restricted subset of the full legal <acronym>XML</acronym> syntax.
In this version, however, we have removed all these restrictions so that
the earlier encoding is a strict subset of the existing one.  The
<acronym>XML</acronym> encoding can be used, for example, to send <i>OpenMath</i> objects via
e-mail, cut-and-paste, etc. and to embed <i>OpenMath</i> objects in <acronym>XML</acronym>
documents or to have <i>OpenMath</i> objects processed by <acronym>XML</acronym>-aware
applications.</p>

<p>The second encoding is a binary encoding that is meant to be
used when the compactness of the encoding is important (inter-process
communications over a network is an example).</p>

<p>Note that these two encodings are sufficiently different for
auto-detection to be effective: an application reading the bytes can
very easily determine which encoding is used.</p>

<div><h3 name="sec_xml" id="sec_xml">3.1 The <acronym>XML</acronym> Encoding</h3>


<p>This encoding has been designed with two main goals in mind:
<ol>
<li><p>to provide an encoding that uses common character sets
  (so that it can easily be included in most documents and transport
  protocols) and that is both readable and writable by a human.</p></li>
<li><p>to provide an encoding that can be included (embedded) in
  <acronym>XML</acronym> documents or processed by <acronym>XML</acronym>-aware applications.</p></li>
</ol> 
</p>

<div><h4 name="ssec_xml" id="ssec_xml">3.1.1 A <span class="del">Grammar</span><span>Schema</span> for the <acronym>XML</acronym> Encoding</h4>





<p class="new">The <acronym>XML</acronym> encoding of an <i>OpenMath</i> object is
defined by the Relax NG schema <a href="#RELAX">[8]</a> given below.
Relax NG has a number of advantages over the older XSD Schema format
<a href="#XSD">[13]</a>, in particular it allows for tighter control
of attributes and has a modular, extensible structure.  Although we
have made the <acronym>XML</acronym> form, which is given in <a href="#app_openmath.rng">Appendix B</a>, normative, it is generated from the
 compact syntax given below.  It is also very easy to restrict the schema to allow
a limited set of <i>OpenMath</i> symbols as described in <a href="#app_relaxrestricted">Appendix C</a>.  </p>

<p class="new"> Standard tools exist for generating a DTD
or an XSD schema from a Relax NG Schema.  Examples of such documents
are given in <a href="#app_dtd">Appendix E</a> and <a href="#app_xsd">Appendix D</a>,
respectively.</p>

<div class="newliteral"><pre>
<span style="color:brown;"># RELAX NG Schema for OpenMath 2</span>


<span style="font-weight:bold;">default</span> <span style="font-weight:bold;">namespace</span> <a name="rncssec_xmlnamespaceom" style="color:blue;">om</a> = "http://www.openmath.org/OpenMath"

<a name="rncssec_xmlstart" style="color:blue;">start</a> = <a href="#rncOMOBJ">OMOBJ</a>

<span style="color:brown;"># OpenMath object constructor</span>
<a name="rncOMOBJ" style="color:blue;">OMOBJ</a> = <span style="font-weight:bold;">element</span> OMOBJ { <a href="#rncssec_xmlcompound.attributes">compound.attributes</a>,
                        <span style="font-weight:bold;">attribute</span> version { <span style="font-weight:bold;">xsd:string</span> }?,
                        <a href="#rncssec_xmlomel">omel</a> }


<span style="color:brown;"># Elements which can appear inside an OpenMath object</span>
<a name="rncssec_xmlomel" style="color:blue;">omel</a> = 
  <a href="#rncssec_xmlOMS">OMS</a> | <a href="#rncssec_xmlOMV">OMV</a> | <a href="#rncssec_xmlOMI">OMI</a> | <a href="#rncssec_xmlOMB">OMB</a> | <a href="#rncssec_xmlOMSTR">OMSTR</a> | <a href="#rncssec_xmlOMF">OMF</a> | <a href="#rncssec_xmlOMA">OMA</a> | <a href="#rncssec_xmlOMBIND">OMBIND</a> | <a href="#rncssec_xmlOME">OME</a> | <a href="#rncssec_xmlOMATTR">OMATTR</a> |<a href="#rncssec_xmlOMR">OMR</a>

<span style="color:brown;"># things which can be variables</span>
<a name="rncssec_xmlomvar" style="color:blue;">omvar</a> = <a href="#rncssec_xmlOMV">OMV</a> | <a href="#rncssec_xmlattvar">attvar</a>

<a name="rncssec_xmlattvar" style="color:blue;">attvar</a> = <span style="font-weight:bold;">element</span> OMATTR { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>,(<a href="#rncssec_xmlOMATP">OMATP</a> , (<a href="#rncssec_xmlOMV">OMV</a> | <a href="#rncssec_xmlattvar">attvar</a>))}


<a name="rncssec_xmlcdbase" style="color:blue;">cdbase</a> = <span style="font-weight:bold;">attribute</span> cdbase { <span style="font-weight:bold;">xsd:anyURI</span>}?

<span style="color:brown;"># attributes common to all elements</span>
<a name="rncssec_xmlcommon.attributes" style="color:blue;">common.attributes</a> = (<span style="font-weight:bold;">attribute</span> id { <span style="font-weight:bold;">xsd:ID</span> })?

<span style="color:brown;"># attributes common to all elements that construct compount OM objects.</span>
<a name="rncssec_xmlcompound.attributes" style="color:blue;">compound.attributes</a> = <a href="#rncssec_xmlcommon.attributes">common.attributes</a>,<a href="#rncssec_xmlcdbase">cdbase</a>

<span style="color:brown;"># symbol</span>
<a name="rncssec_xmlOMS" style="color:blue;">OMS</a> = <span style="font-weight:bold;">element</span> OMS { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>,
                    <span style="font-weight:bold;">attribute</span> name { <span style="font-weight:bold;">xsd:NCName</span>},
                    <span style="font-weight:bold;">attribute</span> cd { <span style="font-weight:bold;">xsd:NCName</span>},
                    <a href="#rncssec_xmlcdbase">cdbase</a> }

<span style="color:brown;"># variable</span>
<a name="rncssec_xmlOMV" style="color:blue;">OMV</a> = <span style="font-weight:bold;">element</span> OMV { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>,
                    <span style="font-weight:bold;">attribute</span> name { <span style="font-weight:bold;">xsd:NCName</span>} }

<span style="color:brown;"># integer</span>
<a name="rncssec_xmlOMI" style="color:blue;">OMI</a> = <span style="font-weight:bold;">element</span> OMI { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>,
                    <span style="font-weight:bold;">xsd:string</span> {<span style="font-weight:bold;">pattern</span> = "\s*(-\s?)?[0-9]+(\s[0-9]+)*\s*"}}
<span style="color:brown;"># byte array</span>
<a name="rncssec_xmlOMB" style="color:blue;">OMB</a> = <span style="font-weight:bold;">element</span> OMB { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>, <span style="font-weight:bold;">xsd:base64Binary</span> }

<span style="color:brown;"># string</span>
<a name="rncssec_xmlOMSTR" style="color:blue;">OMSTR</a> = <span style="font-weight:bold;">element</span> OMSTR { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>, <span style="font-weight:bold;">text</span> }

<span style="color:brown;"># IEEE floating point number</span>
<a name="rncssec_xmlOMF" style="color:blue;">OMF</a> = <span style="font-weight:bold;">element</span> OMF { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>,
                    ( <span style="font-weight:bold;">attribute</span> dec { <span style="font-weight:bold;">xsd:double</span> } |
                      <span style="font-weight:bold;">attribute</span> hex { <span style="font-weight:bold;">xsd:string</span> {<span style="font-weight:bold;">pattern</span> = "[0-9A-F]+"}}) }

<span style="color:brown;"># apply constructor</span>
<a name="rncssec_xmlOMA" style="color:blue;">OMA</a> = <span style="font-weight:bold;">element</span> OMA { <a href="#rncssec_xmlcompound.attributes">compound.attributes</a>, <a href="#rncssec_xmlomel">omel</a>+ }

<span style="color:brown;"># binding constructor </span>
<a name="rncssec_xmlOMBIND" style="color:blue;">OMBIND</a> = <span style="font-weight:bold;">element</span> OMBIND { <a href="#rncssec_xmlcompound.attributes">compound.attributes</a>, <a href="#rncssec_xmlomel">omel</a>, <a href="#rncssec_xmlOMBVAR">OMBVAR</a>, <a href="#rncssec_xmlomel">omel</a> }

<span style="color:brown;"># variables used in binding constructor</span>
<a name="rncssec_xmlOMBVAR" style="color:blue;">OMBVAR</a> = <span style="font-weight:bold;">element</span> OMBVAR { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>, <a href="#rncssec_xmlomvar">omvar</a>+ }

<span style="color:brown;"># error constructor</span>
<a name="rncssec_xmlOME" style="color:blue;">OME</a> = <span style="font-weight:bold;">element</span> OME { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>, <a href="#rncssec_xmlOMS">OMS</a>, (<a href="#rncssec_xmlomel">omel</a>|<a href="#rncssec_xmlOMFOREIGN">OMFOREIGN</a>)* }

<span style="color:brown;"># attribution constructor and attribute pair constructor</span>
<a name="rncssec_xmlOMATTR" style="color:blue;">OMATTR</a> = <span style="font-weight:bold;">element</span> OMATTR { <a href="#rncssec_xmlcompound.attributes">compound.attributes</a>, <a href="#rncssec_xmlOMATP">OMATP</a>, <a href="#rncssec_xmlomel">omel</a> }

<a name="rncssec_xmlOMATP" style="color:blue;">OMATP</a> = <span style="font-weight:bold;">element</span> OMATP { <a href="#rncssec_xmlcompound.attributes">compound.attributes</a>, (<a href="#rncssec_xmlOMS">OMS</a>, (<a href="#rncssec_xmlomel">omel</a> | <a href="#rncssec_xmlOMFOREIGN">OMFOREIGN</a>) )+ }

<span style="color:brown;"># foreign constructor</span>
<a name="rncssec_xmlOMFOREIGN" style="color:blue;">OMFOREIGN</a> =  <span style="font-weight:bold;">element</span> OMFOREIGN {
    <a href="#rncssec_xmlcompound.attributes">compound.attributes</a>, <span style="font-weight:bold;">attribute</span> encoding {<span style="font-weight:bold;">xsd:string</span>}?,
   (<a href="#rncssec_xmlomel">omel</a>|<a href="#rncssec_xmlnotom">notom</a>)* }

<span style="color:brown;"># Any elements not in the om namespace</span>
<span style="color:brown;"># (valid om is allowed as a descendant)</span>
<a name="rncssec_xmlnotom" style="color:blue;">notom</a> =
  (<span style="font-weight:bold;">element</span> * - <a href="#rncssec_xmlnamespaceom">om:</a>* {<span style="font-weight:bold;">attribute</span> * { <span style="font-weight:bold;">text</span> }*,(<a href="#rncssec_xmlomel">omel</a>|<a href="#rncssec_xmlnotom">notom</a>)*}
   | <span style="font-weight:bold;">text</span>)

<span style="color:brown;"># reference constructor</span>
<a name="rncssec_xmlOMR" style="color:blue;">OMR</a> = <span style="font-weight:bold;">element</span> OMR { <a href="#rncssec_xmlcommon.attributes">common.attributes</a>,
                    <span style="font-weight:bold;">attribute</span> href { <span style="font-weight:bold;">xsd:anyURI</span> }
                  }


</pre></div>
<p><span class="del">the <acronym>XML</acronym> encoding of an
<i>OpenMath</i> object is defined by the dtd given in Figure 4.1 below with the
following additional rules not implied by the <acronym>XML</acronym>
<acronym>DTD</acronym>.</span></p>

<ul class="del">
<li><p class="del">Comments are permitted only between
elements, not within element character data.</p></li>

<li><p class="del">Processing Instructions are
 only allowed before the <acronym>OMOBJ</acronym> element.</p></li>

<li><p class="del">The content of an
<acronym>OMB</acronym> element, is a valid base64-encoded text.</p></li>

<li><p class="del">The character data forming
element content and attribute values matches the regular expressions
of <a href="#fig_xml">para </a>.</p></li>
</ul>



<p class="del"><a name="fig_objdtd" id="fig_objdtd"/>
    <span>DTD for the <i>OpenMath</i> <acronym>XML</acronym> encoding of objects.</span>
<div class="delliteral"><pre>
&lt;!-- DTD for OM Objects - sb 29.10.98 --&gt;
&lt;!-- sb 3.2.99 --&gt;

&lt;!--
     general list of embeddable elements
      : excludes OMATP as this is only embeddable in OMATTR
      : excludes OMBVAR as this is only embeddable in OMBIND
--&gt;

&lt;!ENTITY % omel "OMS | OMV | OMI | OMB | OMSTR
                                | OMF | OMA | OMBIND | OME
                                | OMATTR | "&gt;


&lt;!-- things which can be variables --&gt;

&lt;!ENTITY % omvar "OMV | OMATTR" &gt;



&lt;!-- symbol --&gt;
&lt;!ELEMENT OMS EMPTY&gt;

  &lt;!ATTLIST OMS 
              name CDATA #REQUIRED
              cd CDATA #REQUIRED &gt;

&lt;!-- variable --&gt;
&lt;!ELEMENT OMV EMPTY&gt;
&lt;!ATTLIST OMV  
              name CDATA #REQUIRED &gt;

&lt;!-- integer --&gt;
&lt;!ELEMENT OMI (#PCDATA) &gt;


&lt;!-- byte array --&gt;
&lt;!ELEMENT OMB (#PCDATA) &gt;


&lt;!-- string --&gt;
&lt;!ELEMENT OMSTR (#PCDATA) &gt;


&lt;!-- floating point --&gt;
&lt;!ELEMENT OMF EMPTY&gt;
&lt;!ATTLIST OMF  
              dec CDATA #IMPLIED
               hex CDATA #IMPLIED&gt;

&lt;!-- apply constructor --&gt;
&lt;!ELEMENT OMA (%omel;)+ &gt;



&lt;!-- binding constructor &amp; bound variables --&gt;
&lt;!ELEMENT OMBIND ((%omel;), OMBVAR, (%omel;)) &gt;


&lt;!ELEMENT OMBVAR (%omvar;)+ &gt;


&lt;!-- error --&gt;
&lt;!ELEMENT OME (OMS, (%omel;)* ) &gt;


&lt;!-- attribution constructor &amp; attribute pair constructor --&gt;
&lt;!ELEMENT OMATTR (OMATP, (%omel;)) &gt;


&lt;!ELEMENT OMATP (OMS, (%omel;))+ &gt;




&lt;!-- OM object constructor --&gt;
&lt;!ELEMENT OMOBJ (%omel;) &gt;
&lt;!ATTLIST OMOBJ 
                xlmns:xlink CDATA #FIXED 'http://www.w3.org/1999/xlink'&gt;
</pre></div>
</p>


<p class="del">In addition, if the <acronym>XML</acronym> document
encoding the <i>OpenMath</i> object is linearised into the <acronym>XML</acronym> concrete
syntax, the following further constraints apply, which ensure that the
encoding may be read by <i>OpenMath</i> applications that may not include a full
<acronym>XML</acronym> parser.</p> 




<ul class="del">
<li><p class="del">The document should use <acronym>UTF-8</acronym> encoding.</p></li>
<li><p class="del">A <small><code>&lt;!DOCTYPE</code></small> declaration should not be used.</p></li>

<li><p class="del">Character references should not be used. As
<small><code>&lt;!DOCTYPE</code></small> is not used, the only entity
references that are allowed are the five predefined entity references:
<small><code>&amp;apos;</code></small> ('),
<small><code>&amp;quot;</code></small> ("),
<small><code>&amp;lt;</code></small> (&lt;),
<small><code>&amp;gt;</code></small> (&gt;),
<small><code>&amp;amp;</code></small> (&amp;).
</p></li>

<li><p class="del">The <acronym>XML</acronym> empty element form
<small><code>&lt;|#8230;/&gt;</code></small> should
always be used to encode elements such as <acronym>OMF</acronym> which
are specified in the <acronym>DTD</acronym> as being
<acronym>EMPTY</acronym>. It should never be used for elements that
may sometimes be empty, such as <acronym>OMSTR</acronym>.</p></li>
</ul>

<p class="del">Such a linearisation of an <acronym>XML</acronym> encoded <i>OpenMath</i> Object would
match the match the character based grammar given in <a href="#fig_xml">para </a>.</p>

<p class="del">The notation used in this section and in
<a href="#fig_xml">para </a> should be quite straightforward (+ meaning
<span>"one or more"</span>, ? meaning zero or one, and | meaning
<span>"or"</span>).  The start symbol of the grammar is
<span>"start"</span>, <span>"space"</span> stands for the space
character, <span>"cr"</span> for the carriage return character,
<span>"nl"</span> for the line feed character and <span>"tab"</span>
for the horizontal tabulation character.</p>

<p class="del"><a name="fig_xml" id="fig_xml"/>

    <span class="del">Grammar for the <acronym>XML</acronym> encoding of <i>OpenMath</i> objects.</span>


<table class="del">
<tr>
<td>S           </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> (space | tab | cr | nl)+  
</td>
</tr>

<tr>
<td>integer     </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> 
        (<small><code>-</code></small> S?)? [0-9]+ (S [0-9]+)*  |
        (<small><code>-</code></small> S?)? <small><code>x</code></small> S? [0-9A-F]+ (S [0-9A-F]+)* 
</td>
</tr>
<tr>
<td> 

cdname      </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td>  [a-z][a-z0-9<small><code>_</code></small>]*
</td>
</tr>

<tr>
<td>symbname    </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> [A-Za-z][A-Za-z0-9<small><code>_</code></small>]*
</td>
</tr>

<tr>
<td>fpdec       </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td>  
    (<small><code>-</code></small>?)([0-9]+)?(<small><code>.</code></small>[0-9]+)?(<small><code>e</code></small>([+-]?)[0-9]+)?
</td>
</tr>

<tr>
<td>fphex       </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td>  [0-9ABCDEF]+ 
</td>
</tr>

<tr>
<td>varname        </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> ([A-Za-z0-9+=(),-./:?!#$%*;@[]^_`{|}])+ 
</td>
</tr>

<tr>
<td>base64      </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> ([A-Za-z0-9 +/=] | S)+ 
</td>
</tr>

<tr>
<td>char  </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> <i><acronym>XML</acronym> Character Data</i>
</td>
</tr>
</table>




<table class="del">
<tr>
<td>symbnameatt</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math></td>
<td> 
    <small><code>name</code></small> S? = S? (<small><code>"</code></small> symbname <small><code>"</code></small> <small><code>|</code></small> <small><code>'</code></small> symbname <small><code>'</code></small>) 
</td>
</tr>

<tr>
<td>cdnameatt</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math></td>
<td> <small><code>cd</code></small> S? = S? (<small><code>"</code></small> cdname <small><code>"</code></small> <small><code>|</code></small> <small><code>'</code></small> cdname <small><code>'</code></small>) 
</td>
</tr>

<tr>
<td>varnameatt</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math></td>
<td> <small><code>name</code></small> S? = S? (<small><code>"</code></small> varname <small><code>"</code></small> <small><code>|</code></small> <small><code>'</code></small> varname <small><code>'</code></small>) 
</td>
</tr>

<tr>
<td>fpdecatt</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math></td>
<td> <small><code>dec</code></small> S? = S? (<small><code>"</code></small> fpdec <small><code>"</code></small> <small><code>|</code></small> <small><code>'</code></small> fpdec <small><code>'</code></small>) 
</td>
</tr>

<tr>
 <td>fphexatt</td>
 <td> <m:math><m:mo>&#8594;</m:mo></m:math></td>
 <td><small><code>hex</code></small> S? = S? (<small><code>"</code></small> fphex <small><code>"</code></small> <small><code>|</code></small> <small><code>'</code></small> fphex <small><code>'</code></small>) 
</td>
</tr>


<tr>
<td>PI </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math></td>
<td> &lt;<small><code>?</code></small> char <small><code>?</code></small><small><code>&gt;</code></small></td>
</tr>

<tr>
<td>comment</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math></td>
<td> &lt;<small><code>!--</code></small> char <small><code>--</code></small><small><code>&gt;</code></small>
</td>
</tr>

<tr>
<td>SC</td>
<td><m:math><m:mo>&#8594;</m:mo></m:math></td>
<td> S+ <small><code>|</code></small> (comment S)+
</td>
</tr>

<tr>
<td>start  </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> 
 (SC <small><code>|</code></small> PI)* <small><code>&lt;OMOBJ</code></small> S?<small><code>&gt;</code></small> S? object S? <small><code>&lt;/OMOBJ</code></small> S?<small><code>&gt;</code></small> 
</td>
</tr>

<tr>
<td>symbol</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> 
  <small><code>&lt;OMS</code></small> [[(S  symbnameatt) (S cdnameatt) ]] S? <small><code>/&gt;</code></small>
</td>
</tr>


<tr>
<td>variable</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td><small><code>&lt;OMV</code></small>  varnameatt S? <small><code>/&gt;</code></small>
</td>
</tr>

<tr><td/>
<td>|</td>
<td> <small><code>&lt;OMATTRx</code></small> S?<small><code>&gt;</code></small> SC? omatp SC? variable SC? <small><code>&lt;/OMATTR</code></small> S?<small><code>&gt;</code></small>
</td>
</tr>

<tr>
<td>omatp </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td>     <small><code>&lt;OMATP</code></small>  S?<small><code>&gt;</code></small> SC? attrs SC? <small><code>&lt;/#1</code></small> S?<small><code>&gt;</code></small> 
</td>
</tr>

<tr>
<td>object </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> symbol</td>
</tr>

<tr>
<td/>
<td>|</td><td>variable</td>
</tr>

<tr><td/>
<td>|</td>
<td><small><code>&lt;OMI</code></small> S <small><code>&gt;</code></small> S? integer S? <small><code>&lt;/OMI</code></small> S?<small><code>&gt;</code></small>
</td>
</tr>

<tr><td/>
<td>|</td><td> <small><code>&lt;OMF</code></small> S fpdecatt  S?<small><code>/&gt;</code></small>
</td>
</tr>

<tr>
  <td/>
  <td>|</td><td> <small><code>&lt;OMF</code></small> S fphexatt  S?<small><code>/&gt;</code></small>
</td>
</tr>

<tr>
  <td/>  
  <td>|</td><td> <small><code>&lt;OMSTR</code></small>  S?<small><code>&gt;</code></small> char <small><code>&lt;/OMSTR</code></small> S?<small><code>&gt;</code></small> 
</td>
</tr>

<tr>
  <td/>  
  <td>|</td><td> <small><code>&lt;OMB</code></small>  S?<small><code>&gt;</code></small> base64  <small><code>&lt;/OMB</code></small> S?<small><code>&gt;</code></small> 
</td>
</tr>

<tr>
  <td/>
<td>|</td>
<td> <small><code>&lt;OMA</code></small>  S?<small><code>&gt;</code></small> SC? object SC? objects SC? <small><code>&lt;/OMA</code></small> S?<small><code>&gt;</code></small>
</td>
</tr>

<tr><td/>
<td>|</td><td> <small><code>&lt;OMBIND</code></small>  S?<small><code>&gt;</code></small> SC? object SC? 
</td>
</tr>

<tr><td/>
<td/>
<td> <small><code>&lt;OMBVAR</code></small>  S?<small><code>&gt;</code></small> SC? variables SC? <small><code>&lt;/OMBVAR</code></small> S?<small><code>&gt;</code></small> 
</td>
</tr>

<tr><td/>
<td/>
<td> SC? object SC? <small><code>&lt;/OMBIND</code></small> S?<small><code>&gt;</code></small>
</td>
</tr>

<tr>
  <td/>
<td>|</td>
<td> <small><code>&lt;OME</code></small>  S?<small><code>&gt;</code></small> SC? symbol SC? objects SC? <small><code>&lt;/OME</code></small> S?<small><code>&gt;</code></small> 
</td>
</tr>

<tr>
  <td/>
<td>|</td>
<td> <small><code>&lt;OMATTR</code></small>  S?<small><code>&gt;</code></small> SC?  <small><code>&lt;OMATP</code></small> S?<small><code>&gt;</code></small> SC? attrs SC? <small><code>&lt;/OMBVAR</code></small> S?<small><code>&gt;</code></small>   
</td>
</tr>

<tr><td/>
<td/>
<td>SC? object SC? <small><code>&lt;/OMATTR</code></small> S?<small><code>&gt;</code></small>  
</td>
</tr>

<tr>
<td>attrs</td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> symbol S? object   
</td>
</tr>

<tr>
  <td/>
<td>|</td>
<td> symbol S? object S? attrs 
</td>
</tr>

<tr>
<td>objects </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> SC?     
</td>
</tr>

<tr>
  <td/>
<td>|</td>
<td> object SC? objects  
</td>
</tr>

<tr>
<td>variables </td>
<td> <m:math><m:mo>&#8594;</m:mo></m:math> </td>
<td> SC?   
</td>
</tr>

<tr>
  <td/>
<td>|</td>
<td> variable SC? variables  
</td>
</tr>

</table>


</p>

<p><b>Note:</b> This schema 
specifies names as being of the <small><code>xsd:NCName</code></small>
type. At the time of writing, W3C Schema types are defined in terms of
XML 1 <a href="#xml_98">[15]</a>.  This limits the characters allowed
in a name to a subset of the characters available in Unicode 2.0, which
is far more restrictive than the definition for an
<i>OpenMath</i> name given in <a href="#sec_names">Section 2.3</a>.
It is expected that W3C Schema types will be augmented to match the
new XML 1.1 recommendation <a href="#xml_04">[16]</a>, but for portability
reasons applications
should avoid  using the new XML 1.1 name characters unless they are
absolutely required.
The XML 1.1 specification has a useful appendix giving
advice on good strategies to use when naming identifiers.</p>

</div>

<div><h4 name="sec_xml-desc" id="sec_xml-desc">3.1.2 <span class="new">Informal</span> description of
the <span class="del">Grammar</span><span class="new"><acronym>XML</acronym> Encoding</span></h4>


<p>An encoded <i>OpenMath</i> object is placed inside an <small><code>OMOBJ</code></small> element.  This 
element can contain the elements (and integers) described above.
<span class="new"> It can take an optional
<small><code>version</code></small> (<acronym>XML</acronym>) attribute which indicates to
which version of the <i>OpenMath</i> standard it conforms.  In previous versions of
this standard this attribute did not exist, so any <i>OpenMath</i> object without
such an attribute must conform to version 1 (or equivalently 1.1) of the
<i>OpenMath</i> standard.  Objects which conform to the description given in this
document should have <small><code>version="2.0"</code></small>.
</span></p>

<p>We briefly discuss the <acronym>XML</acronym> encoding for each type of <i>OpenMath</i> object
starting from the basic objects.</p>

<dl>
<dt>Integers</dt>
<dd>
 <p>are encoded using the
<small><code>OMI</code></small> element around the sequence of their
digits in base 10 or 16 (most significant digit first).  White space
may be inserted between the characters of the integer representation,
this will be ignored.  After ignoring white space, integers written in
base 10 match the regular expression
<small><code>-?[0-9]+</code></small>.  Integers written in base 16 match
<small><code>-?x[0-9A-F]+</code></small>.  The integer 10 can be thus
encoded as <small><code>&lt;OMI&gt; 10 &lt;/OMI&gt; </code></small> or as
<small><code>&lt;OMI&gt; xA &lt;/OMI&gt; </code></small> but neither
<small><code>&lt;OMI&gt; +10 &lt;/OMI&gt;</code></small> nor
<small><code>&lt;OMI&gt; +xA &lt;/OMI&gt;</code></small> can be used.</p>

<p>The negative integer <m:math><m:mn>-120</m:mn></m:math> can be encoded
       as either as decimal <small><code>&lt;OMI&gt; -120
       &lt;/OMI&gt;</code></small> or as hexadecimal <small><code>&lt;OMI&gt;
       -x78 &lt;/OMI&gt;</code></small>.</p>

  
</dd>

<dt>Symbols</dt><dd><p>are encoded using
  the <small><code>OMS</code></small> element. This element has
  <span class="del">two</span>
  <span class="new">three</span>
  (<acronym>XML</acronym>) attributes <small><code>cd</code></small>,
  <small><code>name</code></small><span class="new">,  and
    <small><code>cdbase</code></small></span>. The value of
  <small><code>cd</code></small> is the name of the Content Dictionary in
  which the symbol is defined and the value of
  <small><code>name</code></small> is the name of the symbol.
  <span class="new">The optional <small><code>cdbase</code></small>
    attribute is a URI that can be used to disambiguate between two  content
    dictionaries with the same name.
  If a symbol does not have an explicit <small><code>cdbase</code></small>
attribute, then it inherits its <small><code>cdbase</code></small> from the
first ancestor in the <acronym>XML</acronym> tree with one, should such an element
exist.  In this document we have tended to omit the
<small><code>cdbase</code></small> for clarity.
  </span>
<span class="del">
  The name
  of the Content Dictionary is compulsory, but a future revision of
  the <i>OpenMath</i> standard might introduce a defaulting mechanism.
</span> For
  example:
<blockquote class="del"><p><small><code>&lt;OMS
 cd="transc" name="sin"/&gt;</code></small></p>
</blockquote>
<blockquote class="new"><p><small><code>&lt;OMS
 cdbase="http://www.openmath.org/cd" cd="transc1" name="sin"/&gt;</code></small></p>
</blockquote>
  is the encoding of the symbol named <small><code>sin</code></small> in
  the Content Dictionary named <small><code>transc1</code></small>,
<span class="new">which is part of the collection
maintained by the <i>OpenMath</i> Society</span>.</p>

<p class="new">As described in <a href="#sec_names">Section 2.3</a>,
the three attributes of the
  <small><code>OMS</code></small> can be used to build a URI reference for the symbol,
for use in contexts where URI-based referencing mechanisms are used.
For example the URI for the above symbol is
 <small><code>http://www.openmath.org/cd/transc1#sin</code></small>.
</p>
<p class="new">
Note that the role attribute described in <a href="#sec_roles">Section 2.1.4</a> is contained in the Content Dictionary and is not
part of the encoding of a symbol, also the <small><code>cdbase</code></small> attribute need not
be explicit on each <small><code>OMS</code></small> as it is inherited
from any ancestor element.</p>
</dd>

<dt>Variables</dt><dd><p>are encoded using
  the <small><code>OMV</code></small> element, with only one
  (<acronym>XML</acronym>) attribute, <small><code>name</code></small>, whose value is the
  variable name. <span class="del">
The variable name is a subset of the printable
  <acronym>ASCII</acronym> set of characters.  In particular, neither
  spaces nor double-quote <small><code>"</code></small> are allowed
  in variable names.</span>  For instance, the encoding of the object
  representing the variable <m:math><m:mi>x</m:mi></m:math> is:
  <small><code>&lt;OMV name="x"/&gt;</code></small></p>

 
</dd>

<dt>Floating-point numbers</dt><dd><p>are
  encoded using the <small><code>OMF</code></small> element that has
  either the (<acronym>XML</acronym>) attribute <small><code>dec</code></small> or the
  (<acronym>XML</acronym>) attribute <small><code>hex</code></small>. The two
  (<acronym>XML</acronym>) attributes cannot be present simultaneously. The value of
  <small><code>dec</code></small> is the floating-point number expressed
  in base 10, using the common syntax:</p>
  
  <blockquote><p>
  <small><code class="chg">(-?)([0-9]+)?("."[0-9]+)?([eE](-?)[0-9]+)?</code></small>.
  </p>
  <p class="new">or one of the special values: INF, -INF or
  NaN.</p>
</blockquote>
  <p class="chg">The value of
  <small><code>hex</code></small> is a base 16 representation of the 
 64 bits of the <acronym>IEEE</acronym> Double.
 Thus the number represents mantissa, exponent, and sign from lowest
  to highest bits using a  least significant byte ordering.
 This consists of a string of 16 digits <small><code>0</code></small>-<small><code>9</code></small>, <small><code>A</code></small>-<small><code>F</code></small>.
  </p>
  <p class="chg">For example, both <small><code>&lt;OMF
    dec="1.0e-10"/&gt;</code></small> and 
   <small><code>&lt;OMF hex="3DDB7CDFD9D7BDBB"/&gt;</code></small>
  are valid representations of the floating point number
  <m:math><m:mn>1</m:mn><m:mo>×</m:mo>
<m:msup><m:mn>10</m:mn><m:mn>-10</m:mn></m:msup></m:math>.</p>
 
 <p class="new"> The symbols <small><code>INF</code></small>,
<small><code>-INF</code></small> and <small><code>NaN</code></small> represent
positive and negative infinity, and <i>not a number</i> as
defined in <a href="#ieee754_85">[6]</a>.  Note that while infinities
have a unique representation, it is possible for NaNs to contain extra
information about how they were generated and if this informations is to
be preserved then the hexadecimal representation must be used.  For
example
<small><code>&lt;OMF hex="FFF8000000000000"/&gt;</code></small> and
<small><code>&lt;OMF hex="FFF8000000000001"/&gt;</code></small> are both
hexadecimal representations of NaNs.
</p>


</dd>

<dt>Character strings</dt><dd><p>are encoded using the <small><code>OMSTR</code></small> element.
  Its content is  a Unicode text <span class="del">(The default encoding 
  is <acronym>UTF-8</acronym><a href="#utf8">[25]</a>, although <acronym>XML</acronym> encoded <i>OpenMath</i> may be embedded
 in a containing <acronym>XML</acronym> document that specifies alternative encoding in
  the <acronym>XML</acronym> declaration</span>. Note that as always in <acronym>XML</acronym> the
  characters <small><code>&lt;</code></small> and <small><code>&amp;</code></small>  need to be represented by the
  entity references <small><code>&amp;lt;</code></small> and
<small><code>&amp;amp;</code></small> respectively.</p>
  
</dd>

<dt>Bytearrays</dt><dd><p>are encoded using the <small><code>OMB</code></small> element. Its content
  is a sequence of characters that is a base64 encoding of the data.
  The base64 encoding is defined in <acronym>RFC</acronym>
<span class="del">1521 <a href="#rfc1521">[26]</a></span>
<span class="new">2045 <a href="#rfc2045">[1]</a></span>.
  Basically, it represents an arbitrary sequence of octets using 64
  <span>"digits"</span> (<small><code>A</code></small> through <small><code>Z</code></small>, <small><code>a</code></small> through <small><code>z</code></small>, <small><code>0</code></small> through <small><code>9</code></small>, <small><code>+</code></small> and /, in order of increasing
  value). Three octets are represented as four digits (the <small><code>=</code></small>
  character is used for padding at the end of the data). All line
  breaks and carriage return, space, form feed and horizontal
  tabulation characters are ignored. The reader is referred to
  <a href="#rfc1521">[26]</a>
  <a href="#rfc2045">[1]</a>
for more detailed information.</p>

</dd>

</dl>
 
<p class="del">In detail the encoding of an <i>OpenMath</i> object is described below.</p>

<dl>
<dt>Applications</dt><dd><p>are encoded using the <small><code>OMA</code></small> element. The
  application whose head is the <i>OpenMath</i> object <m:math><m:msub><m:mi>e</m:mi><m:mn>0</m:mn></m:msub></m:math> and whose arguments
  are the <i>OpenMath</i> objects <m:math><m:msub><m:mi>e</m:mi><m:mn>1</m:mn></m:msub></m:math>, <span>&#8230;</span>, <m:math><m:msub><m:mi>e</m:mi><m:mi>n</m:mi></m:msub></m:math> is encoded as <small><code>&lt;OMA&gt;</code></small>
  <m:math><m:msub><m:mi>C</m:mi><m:mn>0</m:mn></m:msub></m:math> <m:math><m:msub><m:mi>C</m:mi><m:mn>1</m:mn></m:msub></m:math><span>&#8230;</span> <m:math><m:msub><m:mi>C</m:mi><m:mi>n</m:mi></m:msub></m:math> <small><code>&lt;/OMA&gt;</code></small> where <m:math><m:msub><m:mi>C</m:mi><m:mi>i</m:mi></m:msub></m:math> is the encoding of
  <m:math><m:msub><m:mi>e</m:mi><m:mi>i</m:mi></m:msub></m:math>.</p>

<p>For example, <m:math><m:mi mathvariant="bold">application</m:mi><m:mo>(</m:mo><m:mi>sin</m:mi><m:mo>,</m:mo><m:mi>x</m:mi> <m:mo>)</m:mo></m:math> is encoded as:
<div class="literal"><pre>&lt;OMA&gt;  
  &lt;OMS cd="transc1" name="sin"/&gt; 
  &lt;OMV name="x"/&gt;  
&lt;/OMA&gt;</pre></div>
  provided that the symbol <small><code>sin</code></small> is defined to be a function
  symbol in a Content Dictionary named <small><code>transc1</code></small>.</p>

  
</dd>

<dt>Binding</dt><dd><p>is encoded using the <small><code>OMBIND</code></small> element.  The binding
  by the <i>OpenMath</i> object <m:math><m:mi>b</m:mi></m:math> of the <i>OpenMath</i> variables <m:math><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:math>, <m:math><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub></m:math>,
  <m:math><m:mi>&#8230;</m:mi></m:math>, <m:math><m:msub><m:mi>x</m:mi><m:mi>n</m:mi></m:msub></m:math> in the object <m:math><m:mi>c</m:mi></m:math> is encoded as <small><code>&lt;OMBIND&gt;</code></small> <m:math><m:mi>B</m:mi></m:math>   <small><code>&lt;OMBVAR&gt;</code></small> <m:math><m:msub><m:mi>X</m:mi><m:mn>1</m:mn></m:msub></m:math> <m:math><m:mi>&#8230;</m:mi></m:math> <m:math><m:msub><m:mi>X</m:mi><m:mi>n</m:mi></m:msub></m:math> <small><code>&lt;/OMBVAR&gt;</code></small> <m:math><m:mi>C</m:mi></m:math> <small><code>&lt;/OMBIND&gt;</code></small> where <m:math><m:mi>B</m:mi></m:math>, <m:math><m:mi>C</m:mi></m:math>, and <m:math><m:msub><m:mi>X</m:mi><m:mi>i</m:mi></m:msub></m:math> are the encodings of <m:math><m:mi>b</m:mi></m:math>, <m:math><m:mi>c</m:mi></m:math>   and <m:math><m:msub><m:mi>x</m:mi><m:mi>i</m:mi></m:msub></m:math>, respectively.</p>

<p>For instance the encoding of
  <m:math><m:mi mathvariant="bold">binding</m:mi>
       <m:mo>(</m:mo><m:mi>lambda</m:mi><m:mo>,</m:mo>
  <m:mi>x</m:mi><m:mo>,</m:mo><m:mi mathvariant="bold">application</m:mi>
     <m:mo>(</m:mo><m:mi>sin</m:mi><m:mo>,</m:mo> <m:mi>x</m:mi><m:mo>)</m:mo><m:mo>)</m:mo></m:math> is:
<div class="literal"><pre>&lt;OMBIND&gt;
  &lt;OMS cd="fns1" name="lambda"/&gt;  
  &lt;OMBVAR&gt;&lt;OMV name="x"/&gt;&lt;/OMBVAR&gt;  
  &lt;OMA&gt;
    &lt;OMS cd="transc1" name="sin"/&gt; 
    &lt;OMV name="x"/&gt;  
  &lt;/OMA&gt;
&lt;/OMBIND&gt;</pre></div></p>
  
<p>Binders are defined in  Content Dictionaries, in particular,
  the symbol <small><code>lambda</code></small> is defined in the Content Dictionary
  <small><code>fns1</code></small> for functions over functions.</p>
  
</dd>

<dt>Attributions</dt><dd><p>are encoded using the <small><code>OMATTR</code></small> element.  If
  the <i>OpenMath</i> object <m:math><m:mi>e</m:mi></m:math> is attributed with (<m:math><m:msub><m:mi>s</m:mi><m:mn>1</m:mn></m:msub></m:math>, <m:math><m:msub><m:mi>e</m:mi><m:mn>1</m:mn></m:msub></m:math>), <span>&#8230;</span>, 
  (<m:math><m:msub><m:mi>s</m:mi><m:mi>n</m:mi></m:msub></m:math>, <m:math><m:msub><m:mi>e</m:mi><m:mi>n</m:mi></m:msub></m:math>) pairs (where <m:math><m:msub><m:mi>s</m:mi><m:mi>i</m:mi></m:msub></m:math> are the attributes), it is encoded
  as <small><code>&lt;OMATTR&gt;</code></small> <small><code>&lt;OMATP&gt;</code></small> <m:math><m:msub><m:mi>S</m:mi><m:mn>1</m:mn></m:msub></m:math> <m:math><m:msub><m:mi>C</m:mi><m:mn>1</m:mn></m:msub></m:math> <span>&#8230;</span> <m:math><m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub></m:math> <m:math><m:msub><m:mi>C</m:mi><m:mi>n</m:mi></m:msub></m:math> <small><code>&lt;/OMATP&gt;</code></small> <m:math><m:mi>E</m:mi></m:math> <small><code>&lt;/OMATTR&gt;</code></small> where <m:math><m:msub><m:mi>S</m:mi><m:mi>i</m:mi></m:msub></m:math> is the encoding of the
  symbol <m:math><m:msub><m:mi>s</m:mi><m:mi>i</m:mi></m:msub></m:math>, <m:math><m:msub><m:mi>C</m:mi><m:mi>i</m:mi></m:msub></m:math> of the object <m:math><m:msub><m:mi>e</m:mi><m:mi>i</m:mi></m:msub></m:math> and <m:math><m:mi>E</m:mi></m:math> is the encoding of
  <m:math><m:mi>e</m:mi></m:math>.</p>

<p>Examples are the use of attribution to decorate a group by its
  automorphism group:
<div class="literal"><pre>&lt;OMATTR&gt;    
  &lt;OMATP&gt;
    &lt;OMS cd="groups" name="automorphism_group" /&gt;  
    [..group-encoding..] 
  &lt;/OMATP&gt;  
  [..group-encoding..] 
&lt;/OMATTR&gt;</pre></div>
or to express the type of a variable:
<div class="literal"><pre>&lt;OMATTR&gt;    
  &lt;OMATP&gt;
    &lt;OMS cd="ecc" name="type" /&gt; 
    &lt;OMS cd="ecc" name="real" /&gt;
  &lt;/OMATP&gt; 
  &lt;OMV name="x" /&gt;
&lt;/OMATTR&gt;</pre></div></p>

  
<p class="new">
A special use of attributions is to associate non-<i>OpenMath</i> data with an
<i>OpenMath</i> object.  This is done using the
<small><code>OMFOREIGN</code></small> element.  The children of this
element must be well-formed <acronym>XML</acronym>.  For example the attribution of the
<i>OpenMath</i> object 
  <m:math>
     <m:mi>sin</m:mi><m:mfenced><m:mi>x</m:mi></m:mfenced></m:math> with its
representation in Presentation MathML is:
<div class="literal"><pre>&lt;OMATTR&gt;
  &lt;OMATP&gt;
    &lt;OMS cd="annotations1" name="presentation-form"/&gt;  
    &lt;OMFOREIGN encoding="MathML-Presentation"&gt;
      &lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;
        &lt;mi&gt;sin&lt;/mi&gt;&lt;mfenced&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mfenced&gt;
      &lt;/math&gt;
    &lt;/OMFOREIGN&gt;  
  &lt;/OMATP&gt;
  &lt;OMA&gt;
   &lt;OMS cd="transc1" name="sin"/&gt; 
   &lt;OMV name="x"/&gt;  
  &lt;/OMA&gt;
&lt;/OMATTR&gt;</pre></div>
Of course not everything has a natural XML encoding in this way and
often the contents of a <small><code>OMFOREIGN</code></small> will just
be data or some kind of encoded string.  For example the attribution
of the previous object with its <span>LaTeX</span> representation could be achieved
as follows:
<div class="literal"><pre>&lt;OMATTR&gt;
  &lt;OMATP&gt;
    &lt;OMS cd="annotations1" name="presentation-form"/&gt;  
    &lt;OMFOREIGN encoding="text/x-latex"&gt;\sin(x)&lt;/OMFOREIGN&gt;  
  &lt;/OMATP&gt;
  &lt;OMA&gt;
    &lt;OMS cd="transc1" name="sin"/&gt; 
    &lt;OMV name="x"/&gt;  
  &lt;/OMA&gt;
&lt;/OMATTR&gt;</pre></div>
For a discussion on the use of the <small><code>encoding</code></small>
attribute see <a href="#sec_compl_omforeign">Section 5.2</a>.
</p>
</dd>




 <dt>Errors</dt> 
 <dd><p>are encoded using the <small><code>OME</code></small> element. The error whose
  symbol is <m:math><m:mi>s</m:mi></m:math> and whose arguments are the <i>OpenMath</i> objects
<span class="new">or <i>OpenMath</i> derived objects</span>
 <m:math><m:msub><m:mi>e</m:mi><m:mn>1</m:mn></m:msub></m:math>,
  <span>&#8230;</span>, <m:math><m:msub><m:mi>e</m:mi><m:mi>n</m:mi></m:msub></m:math> is encoded as <small><code>&lt;OME&gt;</code></small> <m:math><m:msub><m:mi>C</m:mi><m:mi>s</m:mi></m:msub></m:math> <m:math><m:msub><m:mi>C</m:mi><m:mn>1</m:mn></m:msub></m:math><span>&#8230;</span> <m:math><m:msub><m:mi>C</m:mi><m:mi>n</m:mi></m:msub></m:math> <small><code>&lt;/OME&gt;</code></small> where <m:math><m:msub><m:mi>C</m:mi><m:mi>s</m:mi></m:msub></m:math> is the encoding of <m:math><m:mi>s</m:mi></m:math> and <m:math><m:msub><m:mi>C</m:mi><m:mi>i</m:mi></m:msub></m:math> the encoding
  of <m:math><m:msub><m:mi>e</m:mi><m:mi>i</m:mi></m:msub></m:math>.</p>

<p>If an <small><code>aritherror</code></small> Content Dictionary contained a
  <small><code>DivisionByZero</code></small> symbol, then the object
  <m:math><m:mi mathvariant="bold">error</m:mi><m:mo>(</m:mo><m:mi>DivisionByZero</m:mi><m:mo>,</m:mo> <m:mi mathvariant="bold">application</m:mi>
  <m:mo>(</m:mo><m:mi>divide</m:mi><m:mo>,</m:mo> 
  <m:mi>x</m:mi><m:mo>,</m:mo> <m:mn>0</m:mn><m:mo>)</m:mo><m:mo>)</m:mo></m:math> would be encoded as follows:

<div class="literal"><pre>&lt;OME&gt;
  &lt;OMS cd="aritherror" name="DivisionByZero"/&gt;  
  &lt;OMA&gt;
    &lt;OMS cd="arith1" name="divide" /&gt;
    &lt;OMV name="x"/&gt;  
    &lt;OMI&gt; 0 &lt;/OMI&gt;
  &lt;/OMA&gt; 
 &lt;/OME&gt;</pre></div></p>
  
<p class="new">
If a <small><code>mathml</code></small> Content Dictionary contained an
  <small><code>unhandled_csymbol</code></small> symbol, then an <i>OpenMath</i> to
MathML translator might return an error such as:
<div class="literal"><pre>&lt;OME&gt;
  &lt;OMS cd="mathml" name="unhandled_csymbol"/&gt;  
  &lt;OMFOREIGN encoding="MathML-Content"&gt;
    &lt;mathml:csymbol xmlns:mathml="http://www.w3.org/1998/Math/MathML/"
                    definitionURL="http://www.nag.co.uk/Airy#A"&gt;
      &lt;mathml:mo&gt;Ai&lt;/mathml:mo&gt;
    &lt;/mathml:csymbol&gt;
  &lt;/OMFOREIGN&gt; 
 &lt;/OME&gt;</pre></div></p>

<p class="new"> Note that it is possible to embed fragments
of valid <i>OpenMath</i> inside an <small><code>OMFOREIGN</code></small> element but that it
cannot contain invalid <i>OpenMath</i>.  In addition, the arguments to an
<small><code>OMERROR</code></small> must be well-formed <acronym>XML</acronym>.  If an
application wishes to signal that the <i>OpenMath</i> it has received is invalid or
is not well-formed then the offending data must be encoded as a string.
For example:
<div class="literal"><pre>&lt;OME&gt;
  &lt;OMS cd="parser" name="invalid_XML"/&gt;  
  &lt;OMSTR&gt;
    &amp;ltOMA&amp;gt; &amp;lt;OMS name="cos" cd="transc1"&amp;gt;
      &amp;lt;OMV name="v"&amp;gt; &amp;lt;/OMA&amp;gt;
  &lt;/OMSTR&gt; 
 &lt;/OME&gt;</pre></div>
Note that the <span>"&lt;"</span> and <span>"&gt;"</span> characters have been escaped as is usual in
an <acronym>XML</acronym> document.
</p>

</dd>



 <dt class="new">References</dt>
 <dd class="new"><p>
 <i>OpenMath</i> integers, floating point numbers, character strings,
 bytearrays, applications, binding, attributions can also be encoded
 as an empty <small><code>OMR</code></small> element with an <small><code>href</code></small>
 attribute whose value is the value of a URI referencing an id
 attribute of an <i>OpenMath</i> object of that type.
The <i>OpenMath</i> element represented by this <small><code>OMR</code></small>
 reference is a copy of the <i>OpenMath</i> element referenced
 <small><code>href</code></small> attribute. Note that this copy
 is <i>structurally equal</i>, but not identical
 to the element referenced. <span class="finaledit">These URI
 refererences will often be relative, in which case they are resolved using
 the base URI of the document containing the <i>OpenMath</i>.</span></p>

 <p>For instance, the <i>OpenMath</i> object

 <m:math id="nestedap" display="block">
   <m:mrow>
     <m:mi mathvariant="bold">application</m:mi>
     <m:mrow>
       <m:mo fence="true">(</m:mo>
       <m:mrow>
         <m:mi>f</m:mi>
         <m:mo separator="true">,</m:mo>
         <m:mi mathvariant="bold">application</m:mi>
         <m:mrow>
           <m:mo fence="true">(</m:mo>
           <m:mrow>
             <m:mi>f</m:mi>
             <m:mo separator="true">,</m:mo>
             <m:mi mathvariant="bold">application</m:mi>
             <m:mrow>
               <m:mo fence="true">(</m:mo>
               <m:mrow><m:mi>f</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi></m:mrow>
               <m:mo fence="true">)</m:mo>
             </m:mrow>
             <m:mo separator="true">,</m:mo>
             <m:mi mathvariant="bold">application</m:mi>
             <m:mrow>
               <m:mo fence="true">(</m:mo>
               <m:mrow><m:mi>f</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi></m:mrow>
               <m:mo fence="true">)</m:mo>
             </m:mrow>
             <m:mo fence="true">)</m:mo>
           </m:mrow>
           <m:mo separator="true">,</m:mo>
           <m:mi mathvariant="bold">application</m:mi>
           <m:mrow>
             <m:mo fence="true">(</m:mo>
             <m:mrow>
               <m:mi>f</m:mi>
               <m:mo separator="true">,</m:mo>
               <m:mi mathvariant="bold">application</m:mi>
               <m:mrow>
                 <m:mo fence="true">(</m:mo>
                 <m:mrow><m:mi>f</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi></m:mrow>
                 <m:mo fence="true">)</m:mo>
               </m:mrow>
               <m:mo separator="true">,</m:mo>
               <m:mi mathvariant="bold">application</m:mi>
               <m:mrow>
                 <m:mo fence="true">(</m:mo>
                 <m:mrow><m:mi>f</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi><m:mo separator="true">,</m:mo><m:mi>a</m:mi></m:mrow>
                 <m:mo fence="true">)</m:mo>
               </m:mrow>
               <m:mo fence="true">)</m:mo>
             </m:mrow>
           </m:mrow>
           <m:mo fence="true">)</m:mo>
         </m:mrow>
       </m:mrow>
     </m:mrow>
   </m:mrow>
 </m:math>
</p>
<p>can be encoded in the <acronym>XML</acronym> encoding as either one of the
<acronym>XML</acronym> encodings given in <a href="#fig_shared_vs_unshared">Figure 4.1</a>
(and some intermediate versions as well).</p>
</dd>  </dl>

<div class="figure"><a name="fig_shared_vs_unshared" id="fig_shared_vs_unshared"/>
    
    
 <div class="literal"><pre>&lt;OMOBJ version="2.0"&gt;         &lt;OMOBJ version="2.0"&gt;
  &lt;OMA&gt;                         &lt;OMA&gt;
    &lt;OMV name="f"/&gt;               &lt;OMV name="f"/&gt; 
    &lt;OMA&gt;                         &lt;OMA id="t1"&gt;
      &lt;OMV name="f"/&gt;               &lt;OMV name="f"/&gt;
      &lt;OMA&gt;                         &lt;OMA id="t11"&gt;
        &lt;OMV name="f"/&gt;               &lt;OMV name="f"/&gt;
        &lt;OMV name="a"/&gt;               &lt;OMV name="a"/&gt;
        &lt;OMV name="a"/&gt;               &lt;OMV name="a"/&gt;
      &lt;/OMA&gt;                        &lt;/OMA&gt;
      &lt;OMA&gt;                         &lt;OMR href="#t11"/&gt;
        &lt;OMV name="f"/&gt;
        &lt;OMV name="a"/&gt; 
        &lt;OMV name="a"/&gt;
      &lt;/OMA&gt;                                
    &lt;/OMA&gt;                      &lt;/OMA&gt;
    &lt;OMA&gt;                       &lt;OMR href="#t1"/&gt;
      &lt;OMV name="f"/&gt;
      &lt;OMA&gt;
        &lt;OMV name="f"/&gt;
        &lt;OMV name="a"/&gt;
        &lt;OMV name="a"/&gt;
      &lt;/OMA&gt;
      &lt;OMA&gt;
        &lt;OMV name="f"/&gt;
        &lt;OMV name="a"/&gt;
        &lt;OMV name="a"/&gt;
      &lt;/OMA&gt;
    &lt;/OMA&gt;
  &lt;/OMA&gt;
&lt;/OMOBJ&gt;                     &lt;/OMOBJ&gt;
</pre></div>
<div class="caption">
  Figure 4.1 Shared vs. unshared representations</div></div>
</div>

<div class="new"><h4 name="sec_references" id="sec_references">3.1.3 Some Notes on References</h4>


<p>We say that an <i>OpenMath</i> element dominates all its children and all elements
they dominate. An <small><code>OMR</code></small> element dominates its target,
i.e. the element that carries the <small><code>id</code></small> attribute pointed to
by the <small><code>xref</code></small> attribute. For instance in the representation
in <a href="#fig_shared_vs_unshared">Figure 4.1</a>, the
<small><code>OMA</code></small> element with <small><code>id="t1"</code></small> and
also the second <small><code>OMR</code></small> dominate the
<small><code>OMA</code></small> element with <small><code>id="t11"</code></small>.
</p>

<div class="new"><h5 name="sec_acyclicity" id="sec_acyclicity">3.1.3.1 An Acyclicity Constraint</h5>


<p class="new">The occurrences of the <small><code>OMR</code></small> element must obey the following global
<i>acyclicity constraint</i>: An <i>OpenMath</i> element may not dominate itself.</p>

<p class="new">Consider for instance the following (illegal) <acronym>XML</acronym> representation
<div class="literal"><pre>&lt;OMOBJ version="2.0"&gt;
  &lt;OMA id="foo"&gt;
    &lt;OMS cd="arith1" name="divide"/&gt;
    &lt;OMI&gt;1&lt;/OMI&gt;
    &lt;OMA&gt;
       &lt;OMS cd="arith1" name="plus"/&gt;
       &lt;OMI&gt;1&lt;/OMI&gt;
       &lt;OMR xref="foo"/&gt;
    &lt;/OMA&gt; 
  &lt;/OMA&gt;
&lt;/OMOBJ&gt;
</pre></div>
</p>

<p class="new">Here, the <small><code>OMA</code></small> element with
<small><code>id="foo"</code></small> dominates its third child, which dominates the
<small><code>OMR</code></small> element, which dominates its target: the element with
<small><code>id="foo"</code></small>. So by transitivity, this element dominates itself, and
by the acyclicity constraint, it is not the <acronym>XML</acronym> representation of an <i>OpenMath</i>
element. Even though it could be given the interpretation of the continued fraction
<m:math display="block">
 <m:mfrac>
   <m:mn>1</m:mn>
   <m:mrow>
     <m:mn>1</m:mn>
     <m:mo>+</m:mo>
     <m:mfrac>
       <m:mn>1</m:mn>
       <m:mrow>
         <m:mn>1</m:mn>
         <m:mo>+</m:mo>
         <m:mfrac><m:mn>1</m:mn><m:mi>...</m:mi></m:mfrac>
       </m:mrow>
     </m:mfrac>
   </m:mrow>
 </m:mfrac>
</m:math> this would correspond to an infinite tree of applications,
which is not admitted by the structure of <i>OpenMath</i> objects described
in <a href="#cha_obj">Chapter 2</a>.</p>

<p class="new">Note that the acyclicity constraints is not restricted
to such simple cases, as the example in <a href="#fig_sharing_between">Figure 4.2</a>
shows.</p>

<div class="new"><a name="fig_sharing_between" id="fig_sharing_between"/>
    
<div class="literal"><pre>&lt;OMOBJ version="2.0"&gt;                   &lt;OMOBJ version="2.0"&gt;
  &lt;OMA id="bar"&gt;                         &lt;OMA id="baz"&gt;
    &lt;OMS cd="arith1" name="plus"/&gt;         &lt;OMS cd="arith1" name="plus"/&gt;
    &lt;OMI&gt;1&lt;/OMI&gt;                           &lt;OMI&gt;1&lt;/OMI&gt;
    &lt;OMR xref="baz"/&gt;                      &lt;OMR xref="bar"/&gt;
  &lt;/OMA&gt;                                 &lt;/OMA&gt;
&lt;/OMOBJ&gt;                               &lt;/OMOBJ&gt;
</pre></div><div class="caption">
  Figure 4.2 Sharing between <i>OpenMath</i> objects (A cycle of order <m:math><m:mn>2</m:mn></m:math>).</div></div>

<p class="new"> Here, the <small><code>OMA</code></small> with
<small><code>id="bar"</code></small> dominates its third child, the
<small><code>OMR</code></small> with <small><code>xref="baz"</code></small>,
which dominates its target <small><code>OMA</code></small> with
<small><code>id="baz"</code></small>, which in turn dominates its third
child, the <small><code>OMR</code></small> with
<small><code>xref="bar"</code></small>, this finally dominates its
target, the original <small><code>OMA</code></small> element with
<small><code>id="bar"</code></small>. So this pair of <i>OpenMath</i> objects
violates the acyclicity constraint and is not the <acronym>XML</acronym>
representation of an <i>OpenMath</i> object.</p>
</div>


<div class="new"><h5 name="sec_sharing_bvars" id="sec_sharing_bvars">3.1.3.2 Sharing and Bound Variables</h5>


<p>Note that the <small><code>OMR</code></small> element is a
<i>syntactic</i> referencing mechanism: an
<small><code>OMR</code></small> element stands for the exact <acronym>XML</acronym>
element it points to. In particular, referencing does not interact
with binding in a semantically intuitive way, since it allows for
variable capture. Consider for instance the following <acronym>XML</acronym>
representation: <div class="literal"><pre>&lt;OMBIND id="outer"&gt;
  &lt;OMS cd="fns1" name="lambda"/&gt;
  &lt;OMBVAR&gt;&lt;OMV name="X"/&gt;&lt;/OMBVAR&gt;
  &lt;OMA&gt;
    &lt;OMV name="f"/&gt;
    &lt;OMBIND id="inner"&gt;
      &lt;OMS cd="fns1" name="lambda"/&gt;
      &lt;OMBVAR&gt;&lt;OMV name="X"/&gt;&lt;/OMBVAR&gt;
      &lt;OMR id="copy" href="#orig"/&gt;
    &lt;/OMBIND&gt;
    &lt;OMA id="orig"&gt;&lt;OMV name="g"/&gt;&lt;OMV name="X"/&gt;&lt;/OMA&gt;
  &lt;/OMA&gt;
&lt;/OMBIND&gt;
</pre></div>
it represents the <i>OpenMath</i> object
<m:math display="block">
  <m:mi mathvariant="bold">binding</m:mi>
  <m:mrow>
    <m:mo fence="true">(</m:mo>
    <m:mo>&#955;</m:mo>
      <m:mo separator="true">,</m:mo>
    <m:mi>X</m:mi>
    <m:mo separator="true">,</m:mo>
    <m:mrow>
      <m:mi mathvariant="bold">application</m:mi>
      <m:mo fence="true">(</m:mo>
      <m:mi>f</m:mi>
      <m:mo separator="true">,</m:mo>
      <m:mi mathvariant="bold">binding</m:mi>
      <m:mrow>
        <m:mo fence="true">(</m:mo>
        <m:mo>&#955;</m:mo>
        <m:mo separator="true">,</m:mo>
        <m:mi>X</m:mi>
        <m:mo separator="true">,</m:mo>
        <m:mrow>
          <m:mi mathvariant="bold">application</m:mi>
          <m:mo fence="true">(</m:mo>
          <m:mi>g</m:mi>
          <m:mo separator="true">,</m:mo>
          <m:mi>X</m:mi>
          <m:mo fence="true">)</m:mo>
        </m:mrow>
        <m:mo fence="true">)</m:mo>
      </m:mrow>
      <m:mo separator="true">,</m:mo>
      <m:mrow>
        <m:mi mathvariant="bold">application</m:mi>
        <m:mo fence="true">(</m:mo>
        <m:mi>g</m:mi>
        <m:mo separator="true">,</m:mo>
        <m:mi>X</m:mi>
        <m:mo fence="true">)</m:mo>
      </m:mrow>
      <m:mo fence="true">)</m:mo>
    </m:mrow>
    <m:mo fence="true"/>
  </m:mrow>
  </m:math> which has two sub-terms of the form
<m:math>
  <m:mi mathvariant="bold">application</m:mi>
  <m:mo fence="true">(</m:mo>
  <m:mi>g</m:mi>
  <m:mo separator="true">,</m:mo>
  <m:mi>X</m:mi>
  <m:mo fence="true">)
  </m:mo> </m:math>, one with <small><code>id="orig"</code></small> (the one explicitly
represented) and one with <small><code>id="copy"</code></small>, represented by the
<small><code>OMR</code></small> element. In the original, the variable
<m:math><m:mi>X</m:mi></m:math> is bound by the <i>outer</i>
<small><code>OMBIND</code></small> element, and in the copy, the variable
<m:math><m:mi>X</m:mi></m:math> is bound by the <i>inner</i>
<small><code>OMBIND</code></small> element. We say that the inner
<small><code>OMBIND</code></small> has captured the variable <m:math><m:mi>X</m:mi></m:math>.
</p>

<p>It is well-known that variable capture does not conserve semantics. For
  instance, we could use <m:math><m:mi>&#945;</m:mi></m:math>-conversion to rename the inner occurrence of
  <m:math><m:mi>X</m:mi></m:math> into, say, 
  <m:math><m:mi>Y</m:mi></m:math> arriving at the (same) object
<m:math display="block">
  <m:mi mathvariant="bold">binding</m:mi>
  <m:mrow>
    <m:mo fence="true">(</m:mo>
    <m:mo>&#955;</m:mo>
      <m:mo separator="true">,</m:mo>
    <m:mi>X</m:mi>
    <m:mo separator="true">,</m:mo>
    <m:mrow>
      <m:mi mathvariant="bold">application</m:mi>
      <m:mo fence="true">(</m:mo>
      <m:mi>f</m:mi>
      <m:mo separator="true">,</m:mo>
      <m:mi mathvariant="bold">binding</m:mi>
      <m:mrow>
        <m:mo fence="true">(</m:mo>
        <m:mo>&#955;</m:mo>
        <m:mo separator="true">,</m:mo>
        <m:mi mathcolor="red">Y</m:mi>
        <m:mo separator="true">,</m:mo>
        <m:mrow>
          <m:mi mathvariant="bold">application</m:mi>
          <m:mo fence="true">(</m:mo>
          <m:mi>g</m:mi>
          <m:mo separator="true">,</m:mo>
          <m:mi mathcolor="red">Y</m:mi>
          <m:mo fence="true">)</m:mo>
        </m:mrow>
        <m:mo fence="true">)</m:mo>
      </m:mrow>
      <m:mo separator="true">,</m:mo>
      <m:mrow>
        <m:mi mathvariant="bold">application</m:mi>
        <m:mo fence="true">(</m:mo>
        <m:mi>g</m:mi>
        <m:mo separator="true">,</m:mo>
        <m:mi>X</m:mi>
        <m:mo fence="true">)</m:mo>
      </m:mrow>
      <m:mo fence="true">)</m:mo>
    </m:mrow>
    <m:mo fence="true">)</m:mo>
  </m:mrow>
  </m:math>
 Using references that
capture variables in this way can easily lead to representation errors, and is not
  recommended.
</p>
</div>
</div>

<div><h4 name="xmldoc" id="xmldoc">3.1.4 Embedding <i>OpenMath</i> in <acronym>XML</acronym> Documents</h4>


     
<p>The above encoding of <acronym>XML</acronym> encoded <i>OpenMath</i> specifies the grammar to be
used in files that encode a single <i>OpenMath</i> object, and specifies the
character streams that a conforming <i>OpenMath</i> application should be able
to accept or produce.</p>

<p>When embedding <acronym>XML</acronym> encoded <i>OpenMath</i> objects into a larger <acronym>XML</acronym> document
one may wish, or need, to use other <acronym>XML</acronym> features. For example use of
extra <acronym>XML</acronym> attributes to specify <acronym>XML</acronym> Namespaces <a href="#xmlns">[14]</a>
or <small><code>xml:lang</code></small> attributes to specify the language used in
strings <a href="#xml_04">[16]</a>. 
<span class="del">
Also, the encoding used in the larger document may not be
<acronym>UTF-8</acronym>.</span>
</p>

 <p class="del">In particular, if <i>OpenMath</i> is used with applications that use the
<acronym>XML</acronym> Namespace Recommendation  <a href="#xmlns">[14]</a> then they should ensure
that <i>OpenMath</i> elements are in the <span class="new">namespace
</span> <code>http://www.openmath.org/OpenMath</code>.
This is most conveniently achieved by adding the namespace declaration <div class="literal"><pre>
xmlns="http://www.openmath.org/OpenMath" </pre></div> as an attribute to each
<small><code>OMOBJ</code></small> element in the document.</p>



<p>If such <acronym>XML</acronym> features are used then the <acronym>XML</acronym> application controlling the
document must, if passing the <i>OpenMath</i> fragment to an <i>OpenMath</i> application,
remove any such extra attributes and must ensure that the
fragment is encoded according to the <span class="del">grammar</span><span class="new">schema</span> specified above.</p>
</div>
</div>

<div><h3 name="sec_binary" id="sec_binary">3.2 The Binary Encoding</h3>


<p>The binary encoding was essentially designed to be more compact than
the <acronym>XML</acronym> encodings, so that it can be more efficient if large
amounts of data are involved. For the current encoding, we tried to
keep the right balance between compactness, speed of encoding and
decoding and simplicity (to allow a simple specification and easy
implementations).</p>

<div><h4 name="sec_binary_grammar" id="sec_binary_grammar">3.2.1 A Grammar for the Binary Encoding</h4>


     

<div class="figure"><a name="fig_bin-enc" id="fig_bin-enc"/>
    
    
    <table>
          <tr>
            <td>start </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [24] object [25] </td>
            <td class="new">|</td>
            <td class="new">
	      [24+64]
	      [<m:math><m:mi>m</m:mi></m:math>]
              [<m:math><m:mi>n</m:mi></m:math>]
	      object [25]</td>
          </tr>
          
          <tr>
            <td>object </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> basic </td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> compound</td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td>cdbase</td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td>foreign</td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td>reference</td>
          </tr>
          
          <tr>
            <td>basic</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> integer </td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> float</td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> variable</td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> symbol</td>
          </tr>

          <tr>
            <td/>
            <td>|</td>
            <td> string</td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> bytearray</td>
          </tr>
          
          <tr>
            <td>integer </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [1] [_] </td>
            <td class="new">|</td>
            <td class="new"> [1+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              id:<m:math><m:mi>n</m:mi></m:math>               [_]
            </td>
          </tr>

          <tr class="new">
            <td/>
            <td><m:math><m:mo>|</m:mo></m:math></td>
            <td> [1+32] [_] </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [1+128] {_} </td>
            <td class="new">|</td>
            <td class="new"> [1+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              id:<m:math><m:mi>n</m:mi></m:math>               {_}
            </td>
          </tr>

          <tr class="new">
            <td/>
            <td>|</td>
            <td> [1+32+128] {_} </td>
            <td/>
            <td/>
          </tr>

          <tr>
            <td/>
            <td>|</td>
            <td> [2]
              [<m:math><m:mi>n</m:mi></m:math>]
              [_] digits:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [2+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              [_] digits:<m:math><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>

          <tr class="new">
            <td/>
            <td>|</td>
            <td> [2+32]
              [<m:math><m:mi>n</m:mi></m:math>]
              [_] digits:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [2+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              [_] digits:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [2+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>n</m:mi></m:math>}
              [_]
              digits:<m:math><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>n</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [2+32+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              [_] digits:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td>float </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [3] {_}{_} </td>
            <td class="new">|</td>
            <td class="new"> [3+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              id:<m:math><m:mi>n</m:mi></m:math>               {_}{_}</td>
          </tr>
          
          <tr>
            <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [3+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              id:<m:math><m:mi>n</m:mi></m:math>               {_}{_}</td>
          </tr>
          
          <tr>
            <td>variable </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [5]
              [<m:math><m:mi>n</m:mi></m:math>]
              varname:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [5+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              varname:<m:math><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [5+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              varname:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td>|</td>
            <td class="new"> [5+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              varname:<m:math><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>
          
          <tr>
            <td>symbol</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [8]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              cdname:<m:math><m:mi>n</m:mi></m:math>               symbname:<m:math><m:mi>m</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [8+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              [<m:math><m:mi>k</m:mi></m:math>]
              cdname:<m:math><m:mi>n</m:mi></m:math>               symbname:<m:math><m:mi>m</m:mi></m:math>               id:<m:math><m:mi>k</m:mi></m:math>             </td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [8+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              cdname:<m:math><m:mi>n</m:mi></m:math>               symbname:<m:math><m:mi>m</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [8+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              {<m:math><m:mi>k</m:mi></m:math>}
              cdname:<m:math><m:mi>n</m:mi></m:math>               symbname:<m:math><m:mi>m</m:mi></m:math>               id:<m:math><m:mi>k</m:mi></m:math></td>
          </tr>
          
          <tr>
            <td>string </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [6]
              [<m:math><m:mi>n</m:mi></m:math>]
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [6+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mi>n</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td><m:math><m:mo>|</m:mo></m:math></td>
            <td> [6+32]
              [<m:math><m:mi>n</m:mi></m:math>]
              <span>bytes</span>:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [6+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [6+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [6+32+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              <span>bytes</span>:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [7]
              [<m:math><m:mi>n</m:mi></m:math>]
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mn>2</m:mn><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [7+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mn/><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [7+32]
              [<m:math><m:mi>n</m:mi></m:math>]
              <span>bytes</span>:<m:math><m:mn>2</m:mn><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [7+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mn>2</m:mn><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [7+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              <span class="del">chars</span>
              <span class="new">bytes</span>:<m:math><m:mn>2</m:mn><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>
          
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [7+32+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              <span>bytes</span>:<m:math><m:mn>2</m:mn><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td>bytearray </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [4]
              [<m:math><m:mi>n</m:mi></m:math>]
              bytes:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [4+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              bytes:<m:math><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td><m:math><m:mo>|</m:mo></m:math></td>
            <td> [4+32]
              [<m:math><m:mi>n</m:mi></m:math>]
              bytes:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [4+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              bytes:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [4+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              bytes:<m:math><m:mi>n</m:mi></m:math>               id:<m:math><m:mi>m</m:mi></m:math>             </td>
          </tr>
          
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [4+32+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              bytes:<m:math><m:mi>n</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr class="new">
            <td>cdbase</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [9]
              [<m:math><m:mi>n</m:mi></m:math>]
              uri:<m:math><m:mi>n</m:mi></m:math> 	      object
            </td>
	  </tr>

	  <tr class="new">
            <td/>
            <td>|</td>
            <td> [9+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              uri:<m:math><m:mi>n</m:mi></m:math> 	      object
            </td>
          </tr>

          <tr class="new">
            <td>foreign</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [12]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              bytes:<m:math><m:mi>n</m:mi></m:math>               bytes:<m:math><m:mi>m</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [12+64]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              [<m:math><m:mi>k</m:mi></m:math>]
              bytes:<m:math><m:mi>n</m:mi></m:math>               bytes:<m:math><m:mi>m</m:mi></m:math>               id:<m:math><m:mi>k</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td><m:math><m:mo>|</m:mo></m:math></td>
            <td> [12+32]
              [<m:math><m:mi>n</m:mi></m:math>]
              [<m:math><m:mi>m</m:mi></m:math>]
              bytes:<m:math><m:mi>n</m:mi></m:math>               bytes:<m:math><m:mi>m</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [12+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              bytes:<m:math><m:mi>n</m:mi></m:math>               bytes:<m:math><m:mi>m</m:mi></m:math>             </td>
            <td class="new">|</td>
            <td class="new"> [12+64+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              {<m:math><m:mi>k</m:mi></m:math>}
              bytes:<m:math><m:mi>n</m:mi></m:math>               bytes:<m:math><m:mi>m</m:mi></m:math>               id:<m:math><m:mi>k</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [12+32+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              {<m:math><m:mi>m</m:mi></m:math>}
              bytes:<m:math><m:mi>n</m:mi></m:math>               bytes:<m:math><m:mi>m</m:mi></m:math>             </td>
            <td/>
            <td/>
          </tr>
          
          <tr>
            <td>compound</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td>application</td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td>binding</td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td>attribution</td>
          </tr>

          <tr>
            <td/>
            <td>|</td>
            <td>error</td>
          </tr>
          
          <tr>
            <td>application</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [16] object objects [17] </td>
            <td class="new">|</td>
            <td class="new"> [16+64]
              [<m:math><m:mi>m</m:mi></m:math>]
              id:<m:math><m:mi>m</m:mi></m:math>               object objects [17]
            </td>
          </tr>
          
          <tr>
            <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [16+64+128]
              {<m:math><m:mi>m</m:mi></m:math>}
              id:<m:math><m:mi>m</m:mi></m:math>               object objects [17]
            </td>
          </tr>
          
          <tr>
	    <td>binding</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [26] object bvars object [27] </td>
            <td class="new">|</td>
            <td class="new"> [26+64]
              [<m:math><m:mi>m</m:mi></m:math>]
              id:<m:math><m:mi>m</m:mi></m:math>               object bvars object [27]
            </td>
          </tr>
          
          <tr>
	    <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [26+64+128]
              {<m:math><m:mi>m</m:mi></m:math>}
              id:<m:math><m:mi>m</m:mi></m:math>               object bvars object [27]
            </td>
          </tr>
          
          <tr>
	    <td>attribution</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [18] attrpairs object [19] </td>
            <td class="new">|</td>
            <td class="new"> [18+64]
              [<m:math><m:mi>m</m:mi></m:math>]
              id:<m:math><m:mi>m</m:mi></m:math>               attrpairs object [19]
            </td>
          </tr>
          
          <tr>
	    <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [18+64+128]
              {<m:math><m:mi>m</m:mi></m:math>}
              id:<m:math><m:mi>m</m:mi></m:math>               attrpairs object [19]
            </td>
          </tr>
          
          <tr>
	    <td>error</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [22] symbol objects [23] </td>
            <td class="new">|</td>
            <td class="new"> [22+64]
              [<m:math><m:mi>m</m:mi></m:math>]
              id:<m:math><m:mi>m</m:mi></m:math>               symbol objects [23]</td>
          </tr>
          
          <tr>
	    <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [22+64+128]
              {<m:math><m:mi>m</m:mi></m:math>}
              id:<m:math><m:mi>m</m:mi></m:math>               symbol objects [23]</td>
          </tr>
          
          <tr>
            <td>attrpairs </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [20] pairs [21] </td>
            <td class="new">|</td>
            <td class="new"> [20+64]
              [<m:math><m:mi>m</m:mi></m:math>]
              id:<m:math><m:mi>m</m:mi></m:math>               pairs [21]
            </td>
          </tr>
          
          <tr>
            <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [20+64+128]
              {<m:math><m:mi>m</m:mi></m:math>}
              id:<m:math><m:mi>m</m:mi></m:math>               pairs [21]
            </td>
          </tr>
          
          <tr>
            <td>pairs </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> symbol object</td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> symbol object pairs</td>
          </tr>
          
          <tr>
            <td>bvars </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [28] vars [29] </td>
            <td class="new">|</td>
            <td class="new"> [28+64]
              [<m:math><m:mi>m</m:mi></m:math>]
              id:<m:math><m:mi>m</m:mi></m:math>               vars [29]
            </td>
          </tr>
          
          <tr>
            <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [28+64+128]
              {<m:math><m:mi>m</m:mi></m:math>}
              id:<m:math><m:mi>m</m:mi></m:math>               vars [29]
            </td>
          </tr>
          
          <tr>
            <td>vars </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td>
	      <span class="finaledit">attrvar</span>
	      <i class="new">empty</i>
	    </td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> attrvar vars</td>
          </tr>
          
          <tr>
            <td>attrvar </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> variable</td>
          </tr>
          
          <tr>
            <td/>
            <td>|</td>
            <td> [18] attrpairs attrvar [19] </td>
            <td class="new">|</td>
            <td class="new"> [18+64]
              [<m:math><m:mi>m</m:mi></m:math>]
              id:<m:math><m:mi>m</m:mi></m:math>               attrpairs attrvar [19]
            </td>
          </tr>
          
          <tr>
            <td/>
            <td/>
            <td/>
            <td class="new">|</td>
            <td class="new"> [18+64+128]
              {<m:math><m:mi>m</m:mi></m:math>}
              id:<m:math><m:mi>m</m:mi></m:math>               attrpairs attrvar [19]
            </td>
          </tr>
          
          <tr>
            <td>objects </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td class="new"> <i>empty</i> </td>
          </tr>

          <tr>
            <td/>
            <td>|</td>
            <td> object objects</td>
          </tr>
          
          <tr class="new">
	    <td>reference</td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td>internal_reference</td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td>external_reference</td>
          </tr>
          
          <tr class="new">
            <td>internal_reference </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [30] [_] </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [30+128] {_}</td>
          </tr>
          
          <tr class="new">
            <td>external_reference </td>
            <td><m:math><m:mo>&#8594;</m:mo></m:math></td>
            <td> [31]
              [<m:math><m:mi>n</m:mi></m:math>]
              uri:<m:math><m:mi>n</m:mi></m:math>             </td>
          </tr>
          
          <tr class="new">
            <td/>
            <td>|</td>
            <td> [31+128]
              {<m:math><m:mi>n</m:mi></m:math>}
              uri:<m:math><m:mi>n</m:mi></m:math>             </td>
          </tr>
        </table>
  <div class="caption">
  Figure 4.3 Grammar of the binary encoding of <i>OpenMath</i> objects.</div></div>
  
  <p><a href="#fig_bin-enc">Figure 4.3</a> gives a grammar for the binary
    encoding <span class="new"> (<span>"start"</span> is the start
      symbol).</span>.</p>
  <p>The following conventions are used in this section:
    [<m:math><m:mi>n</m:mi></m:math>] denotes a byte whose value is the integer
    <m:math><m:mi>n</m:mi></m:math> (<m:math><m:mi>n</m:mi></m:math> can range from 0 to 255),
    {<m:math><m:mi>m</m:mi></m:math>} denotes four bytes representing the (unsigned) integer
    <m:math><m:mi>m</m:mi></m:math> in network byte order, [_] denotes an arbitrary byte, {_}
    denotes an arbitrary sequence of four bytes.
    <span class="new">Finally,
      <i>empty</i> stands for the empty list of tokens.</span>
    <span class="del">
      <i>name</i>:<m:math><m:mi>n</m:mi></m:math> denotes a sequence of
      <m:math><m:mi>n</m:mi></m:math> bytes named <i>name</i>.
      <i>name</i>:2<m:math><m:mi>n</m:mi></m:math> denotes a sequence of
      <m:math><m:mn>2</m:mn><m:mi>n</m:mi></m:math> bytes.  <span>"start"</span> is the start symbol of the
      grammar.</span></p>
  
  <p class="new"><i>xxxx</i>:<m:math><m:mi>n</m:mi></m:math>,
    where <i>xxxx</i> is one of <i>symbname</i>,
    <i>cdname</i>, <i>varname</i>,
    <i>uri</i>, <i>id</i>, <i>digits</i>, or
    <i>bytes</i> denotes a sequence of <m:math><m:mi>n</m:mi></m:math> bytes
    that conforms to the constraints on <i>xxxx</i> strings. For
    instance, for <i>symbname</i>, <i>varname</i>, or
    <i>cdname</i> this is the regular expression described in
    <a href="#sec_names">Section 2.3</a>, for <i>uri</i> it is the grammar for
    URIs in <a href="#IETF2396">[7]</a>.</p>
</div>

<div><h4 name="sec_bin-desc" id="sec_bin-desc">3.2.2 Description of the Grammar</h4>
  
  
<p>An <i>OpenMath</i> object is encoded as a sequence of bytes starting with the begin object tag
(<span class="del">value 24</span>
<span class="new">values 24 and 88</span>) and ending with the end
object tag (value 25). These are similar to
the <small><code>&lt;OMOBJ&gt;</code></small> and <small><code>&lt;/OMOBJ&gt;</code></small> tags of
the <acronym>XML</acronym> encoding. <span class="new">Objects with start token [88]
  have two additional bytes <m:math><m:mi>m</m:mi></m:math> and <m:math><m:mi>n</m:mi></m:math> that characterize the version
(<m:math><m:mrow><m:mi>m</m:mi><m:mo>.</m:mo><m:mi>n</m:mi></m:mrow></m:math>) of the encoding
directly after the start token. This is similar to <small><code>&lt;OMOBJ
  version="m.n"&gt;</code></small></span></p> 

<p>The encoding of each kind of <i>OpenMath</i> object begins with a tag that is a single byte,
holding a <span><i>token identifier</i></span>
<span class="new"> that describes the kind of object</span>, 
<span class="del"> and two flags, the <span><i>long</i></span> flag and the
<span><i>shared</i></span> flag. </span><span class="new">two
  flags, and a status bit.</span>
The identifier is stored in the first <span class="del">6 bits (1 to
  6). The long flag is the eighth bit </span><span class="new">five
  bits (1 to 5). Bit 6 is used as a 
  <span><i>status bit</i></span> which is currently only used for managing
  streaming of some basic objects. Bits 7 and 8 are the <span><i>sharing
    flag</i></span> and the <span><i>long flag</i></span>. The sharing flag
  indicates that the encoded object may be shared in another (part of an) object
  somewhere else (see <a href="#sec_sharing_references">Section 3.2.4.2</a>). Note that if the sharing
  flag is set (in the right column of the grammar in 
  <a href="#fig_bin-enc">Figure 4.3</a>, then the encoding includes a representation of
  an identifier that serves as the target of a reference (internal with token
  identifier 30 or external with token identifier 31). If the long
  flag is set, this signifies that  the names, strings, and data fields in the
  encoded <i>OpenMath</i> object are longer than 255 bytes or characters. </span>
</p>

<p class="new">The concept of structure sharing in <i>OpenMath</i> encodings and
  in particular the sharing bit in the binary encoding has been
  introduced in <i>OpenMath</i> 2 (see section <a href="#sec_sharing_references">Section 3.2.4.2</a> for
  details). The binary encoding in <i>OpenMath</i> 2 leaves the tokens with sharing flag 0
  unchanged to ensure <i>OpenMath</i> 1 compatibility. To make use of functionality like
  the version attribute on the <i>OpenMath</i> object
  introduced in <i>OpenMath</i> 2, the tokens with sharing flag 1 should be used.</p>

<p class="new">To facilitate the streaming of <i>OpenMath</i> objects, some basic
  objects (integers, strings, bytearrays, and foreign objects) have variant token
  identifiers with the fifth bit set. The idea behind this is that these basic
  objects can be split into packets. If the fifth bit is not set, this packet is
  the final packet of the basic object. If the bit is set, then more packets of
  the basic object will follow directly after this one. Note that all packets
  making up a basic object must have the same token identifier (up to the fifth
  bit). In <a href="#fig_bin-enc_stream">Figure 4.4</a> we have represented an integer
  that is split up into three packets.  </p>

<p>Here is a description of the binary encodings of every kind of <i>OpenMath</i> object:

<dl>

  <dt>Integers</dt><dd><p>are encoded depending on how large they
      are. There are four possible formats.  Integers between -128 and 127 are
      encoded as the small integer tags (<span class="new">token
	identifier</span> 1) followed by a single byte that is the 
      value of the integer (interpreted as a signed character). For
      example 16 is encoded as <small><code>0x01 0x10</code></small>.  Integers between
      <m:math>
	<m:msup>
          <m:mn>-2</m:mn>
          <m:mn>31</m:mn>
        </m:msup>
      </m:math>       (<m:math><m:mn>-2147483648</m:mn></m:math>) and
      <m:math>
        <m:msup>
          <m:mn>2</m:mn>
          <m:mn>31</m:mn>
        </m:msup>
        <m:mo>-</m:mo>
        <m:mn>1</m:mn>
      </m:math>       (<m:math><m:mn>2147483647</m:mn></m:math>) are encoded as
      the small integer tag with the long flag set followed by the integer
      encoded in little endian format in four bytes (network byte order:
      the most significant byte comes first). For example, 128 is encoded
      as <small><code>0x81</code></small> <small><code>0x00000080</code></small>.  The most
      general encoding begins 
      with the big integer tag (token identifier 2) with the long flag set
      if the number of bytes in the encoding of the digits is greater or
      equal than 256. It is followed by the length (in bytes) of the
      sequence of digits, encoded on one byte (0 to 255, if the long flag
      was not set) or four bytes (network byte order, if the long flag was
      set).  It is then followed by a byte describing the sign and the
      base.  This 'sign/base' byte is <small><code>+</code></small>
      (<small><code>0x2B</code></small>) or <small><code>-</code></small>
      (<small><code>0x2D</code></small>) for the sign or-ed with the base mask bits
      that can be <small><code>0</code></small> for base 10 
      or <small><code>0x40</code></small> for base 16 <span class="new">or
	<small><code>0x80</code></small> for <span>"base 256"</span></span>.  It is
      followed by the <span class="del">strings</span>
      <span class="new">sequence</span> of digits (as 
      characters <span class="new">for bases 10 and 16 as in the <acronym>XML</acronym>
	encoing, and as bytes for base 256</span>) in their natural
      order<span class="del"> (as in the <acronym>XML</acronym> 
      encoding)</span>.  For example, <span class="new">the decimal
	number</span> 8589934592
      (<m:math><m:msup><m:mn>2</m:mn><m:mn>33</m:mn></m:msup></m:math>) is encoded  as
      <small><code class="new">0x02 
        0x0A 0x2B 0x38 0x35 0x38 0x39 0x39 0x33 0x34 0x35 0x39 0x32</code></small>
      <small><code class="del">0x02 
	0x0A 0x2B 0x38353839393334353932</code></small> and the
      <span class="new">hexadecimal number</span>
      <small><code>xfffffff1</code></small> is 
      encoded as <small><code class="del">0x02 0x08 0x6b
	0x6666666666666631</code></small><small><code class="new">0x02 0x08
	0x6b 0x66 0x66 0x66 0x66 0x66 0x66 0x66 0x31</code></small>
      <span class="new"> in the base 16
      character encoding and as <small><code>0x02 0x04
	0xFF 0xFF 0xFF 0xFI</code></small> in the byte encoding (base 256)</span>.</p>
    <p> Note that it is    
      permitted to encode a <span>"small"</span> integer in any <span>"bigger"</span>
      format.</p>
    <p class="new">To splice sequences of integer packets into
      integers, we have to consider three cases: In the case of token identifiers
      1, 33, and 65 the sequence of packets is treated as a sequence of integer digits
      to the base of <m:math><m:msup><m:mn>2</m:mn><m:mn>7</m:mn></m:msup></m:math> (most
      significant first). The case of token identifiers 129, 161, and 193 is analogous
      with digits of base <m:math><m:msup><m:mn>2</m:mn><m:mn>31</m:mn></m:msup></m:math>. In the
      case of token identifiers 2, 34, 66, 130, 162, and 194 the integer is assembled by 
      concatenating the string of decimal digits in the packets in sequence order
      (which corresponds to most significant first).  Note that in all cases only
      the sequence-initial packet may contain a signed
      integer. The sign of this packet determines the sign of the overall
      integer.</p>

    <div class="new"><a name="fig_bin-enc_stream" id="fig_bin-enc_stream"/>
      

      <table>
	    <tr>
	      <th>Byte</th><th>Hex</th><th>Meaning</th>
              <th>   </th>
	      <th>Byte</th><th>Hex</th><th>Meaning</th>
	    </tr>
	  
	    <tr>
	      <td>1</td><td>22</td><td>begin streamed big integer tag</td>
              <td>   </td>
	      <td>7</td><td>2B</td><td>sign + (disregarded)</td>
	    </tr>
	    <tr>
	      <td>2</td><td>FF</td><td>255 digits in packet</td>
              <td>   </td>
	      <td>8</td><td>...</td><td> the 255 digits as characters</td>
	    </tr>
	    <tr>
	      <td>3</td><td>2B</td><td>sign +</td>
              <td>   </td>
	      <td>9</td><td>2</td><td>begin final big integer tag</td>
	    </tr>
	    <tr>
	      <td>4</td><td>...</td><td> the 255 digits as characters</td>
              <td>   </td>
	      <td>10</td><td>42</td><td>68 digits in packet</td>
	    </tr>
	    <tr>
	      <td>5</td><td>22</td><td>begin streamed big integer tag</td>
              <td>   </td>
	      <td>11</td><td>2B</td><td>sign + (disregarded)</td>
	    </tr>
	    <tr>
	      <td>6</td><td>FF</td><td>255 digits in packet</td>
              <td>   </td>
	      <td>12</td><td>...</td><td> the 68 digits as characters</td>
	    </tr>
	  </table>
    <div class="caption">
  Figure 4.4 Streaming a large Integer in the Binary Encoding.</div></div>
</dd>



<dt>Symbols</dt>
<dd><p>are encoded as the symbol tags
    (<span class="new">token identifier</span> 8) with the long flag
    set if the maximum of the length <span class="new">in bytes in the <acronym>UTF-8</acronym> encoding</span> of the Content Dictionary name
    or the symbol name is greater than or equal to 256<span class="del"> (note that this
  should never be the case if the rules on symbols and Content
  Dictionary names are applied), followed by the length of the
  Content Dictionary name as a byte (if the long flag was not set)
  or a four byte integer (in network byte order) followed by the
  length of the symbol name as a byte (if the long flag was not set)
  or a four byte integer (in network byte order), followed by the
  characters of the Content Dictionary name, followed by the
  characters of the symbol name.</span>
<span class="new">. The symbol tag is  followed by the
  length in bytes in the <acronym>UTF-8</acronym> encoding of the Content Dictionary name, the symbol
  name, and the <small><code>id</code></small> (if the shared bit was set) as a byte
  (if the long flag was not set) or a four byte integer (in network byte
  order). These are followed by the bytes of the <acronym>UTF-8</acronym> encoding of the Content
  Dictionary name, the symbol name, and the <small><code>id</code></small>.</span>
</p>
</dd>



<dt>Variables</dt>
<dd><p>are encoded using the variable tags
    (<span class="new">token identifiers</span> 5) with the long
  flag set if the number of bytes in the <acronym>UTF-8</acronym> encoding of the variable name is
  greater than or equal to 256.  Then, there is the number of characters
  as a byte (if the long flag was not set) or a four byte integer
  (in network byte order), followed by the characters of the name of
  the variable. For example, the variable x is encoded as <small><code>0x05
    0x01 0x78</code></small>.</p>
</dd>



<dt>Floating-point number</dt>
<dd><p>are encoded using the floating-point
  number tags (<span class="new">token identifier</span> 3) followed by eight bytes that are the IEEE 754
  representation <a href="#ieee754_85">[6]</a>, most significant bytes first. For
  example, 0.1 is encoded as <small><code>0x03 0x000000000000f03f</code></small>.</p>
</dd>



<dt>Character string</dt>
<dd><p>are encoded in two ways depending on whether
  <span class="del">the string contains <acronym>UTF-16</acronym> characters or not. If the
  string contains only 8 bit characters</span>,
  <span class="new">the string is encoded in
  <acronym>UTF-16</acronym> or <acronym>ISO-8859-1</acronym>
  (<acronym>LATIN-1</acronym>).
  In the case of <acronym>LATIN-1</acronym></span> it is encoded as the one
  byte character string tags (<span class="new">token identifier</span> 6) with the long flag set if the number
  of bytes (characters) in the string is greater than or equal to 256.
  Then, there is the number of characters as a byte (if the length
  flag was not set) or a four byte integer (in network byte order),
  followed by the characters in the string. If the string <span class="del">contains two
  byte characters, it is encoded as the two byte</span><span class="new"> is encoded in
  <acronym>UTF-16</acronym>, it is encoded as the <acronym>UTF-16</acronym></span> character string
  tags (<span class="new">token identifier</span> 7) with the long flag set if the number of characters in the
  string is greater or equal to 256. Then, there is the number of
  <span class="del">characters</span><span class="new"><acronym>UTF-16</acronym> units, which will be the
  number of characters unless characters in the higher planes of
  Unicode are used,</span> as a byte (if the long flag was not set) or a four byte
  integer (in network byte order), followed by the characters
  (<acronym>UTF-16</acronym> encoded  Unicode).</p>

<p class="new">Sequences of string packets are assumed to have the
  same encoding for every packet. They are assembled into strings by 
      concatenating the strings in the packets in sequence order.</p>

</dd>



  <dt>Bytearrays</dt>
  <dd><p>are encoded using the bytearray tags (<span class="new">token identifier</span> 4) with the
      long flag set if the number <span class="del">of bytes in the
	number of </span> elements is
      greater than or equal to 256. Then, there is the number of elements,
      as a byte (if the long flag was not set) or a four byte integer
      (in network byte order), followed by the elements of the arrays in
      their normal order.</p>

    <p class="new">Sequences of bytearray packets are assembled into
      byte arrays by
      concatenating the bytearrays in the packets in sequence order.
    </p>

  </dd>


 <dt class="new">Foreign Objects</dt>
  <dd class="new">
    <p>are encoded using the foreign object tags (token identifier 12) with the
      long flag set if the number of bytes is greater than or equal to 256 and the
      streaming bit set for dividing it up into packets. Then, there is the number
      <m:math><m:mi>n</m:mi></m:math> of bytes used to encode the encoding, and the
      number <m:math><m:mi>m</m:mi></m:math> of bytes used to encode the foreign
      object. <m:math><m:mi>n</m:mi></m:math> and <m:math><m:mi>m</m:mi></m:math> are represented as a
      byte (if the long flag was not set) or a four byte integer (in network byte
      order). These numbers are followed by an <m:math><m:mi>n</m:mi></m:math>-byte
      representation of the encoding attribute and an <m:math><m:mi>m</m:mi></m:math> byte
      sequence of bytes encoding the foreign object in their normal order (we call these
      the payload bytes). The encoding attribute is encoded in <acronym>UTF-8</acronym>.</p>
    <p>Sequences of foreign object
      packets are assembled into foreign objects by concatenating the payload bytes in
      the packets in sequence order.</p>
     <p>Note that the foreign object is encoded as a stream of
      bytes, not a stream of characters. Character based formats
  (including XML based formats) should be encoded in <acronym>UTF-8</acronym> to produce
  a stream of bytes to use as the payload of the foreign object.</p>
  </dd>



  <dt class="new">cdbase scopes</dt>
  <dd class="new">
    <p>are encoded using the token identifier 9. The purpose of these
      scoping devices is to associate a <small><code>cdbase</code></small> with an
      object. The start token [9] (or [137] if the long flag is set) is followed
      by a single-byte (or 4-byte- if the long flag is set) number
      <m:math><m:mi>n</m:mi></m:math> and then by a seqence of <m:math><m:mi>n</m:mi></m:math>       bytes that represent the value of the <small><code>cdbase</code></small>
      attribute (a URI) in <acronym>UTF-8</acronym> encoding. This is then followed by the binary
      encoding of a single object: the object over which this
  <small><code>cdbase</code></small> attribute has scope. </p>
  </dd>




  <dt>Applications</dt>
  <dd><p>are encoded using the application tags (<span class="new">token identifiers</span> 16 and 17). More
  precisely, the application of <m:math><m:msub><m:mi>E</m:mi><m:mn>0</m:mn></m:msub></m:math> to
  <m:math><m:msub><m:mi>E</m:mi><m:mn>1</m:mn></m:msub></m:math><span>&#8230;</span>
  <m:math><m:msub><m:mi>E</m:mi><m:mi>n</m:mi></m:msub></m:math> is encoded
  using the application tags (<span class="new">token
    identifier</span> 16), the sequence of the encodings of 
  <m:math><m:msub><m:mi>E</m:mi><m:mn>0</m:mn></m:msub></m:math> to
  <m:math><m:msub><m:mi>E</m:mi><m:mi>n</m:mi></m:msub></m:math> and the end application tags
  (<span class="new">token identifier</span> 17).</p> 
</dd>


 
  <dt>Bindings</dt>
  <dd><p>are encoded using the binding
 tags (<span class="new">token identifiers</span> 26 and 27). More precisely,
 the binding by <m:math><m:mi>B</m:mi></m:math> of variables
 <m:math><m:msub><m:mi>V</m:mi><m:mn>1</m:mn></m:msub></m:math><span>&#8230;</span>
 <m:math><m:msub><m:mi>V</m:mi><m:mi>n</m:mi></m:msub></m:math> in <m:math><m:mi>C</m:mi></m:math> is
 encoded as the binding tag (<span class="new">token
 identifier</span> 26), followed by the encoding of <m:math><m:mi>B</m:mi></m:math>,
 followed by the binding variables tags (<span class="new">token
 identifier</span> 28), followed by the encodings of the variables
 <m:math><m:msub><m:mi>V</m:mi><m:mn>1</m:mn></m:msub></m:math> <span>&#8230;</span>
 <m:math><m:msub><m:mi>V</m:mi><m:mi>n</m:mi></m:msub></m:math>, followed by the end binding
 variables tags (<span class="new">token identifier</span> 29),
 followed by the encoding of <m:math><m:mi>C</m:mi></m:math>, followed by the end binding
 tags (<span class="new">token identifier</span> 27).</p>
 </dd> 


 <dt>Attributions</dt>
 <dd><p>are encoded using the attribution
     tags (<span class="new">token identifiers </span> 18 and 19). More
     precisely, attribution of the object <m:math><m:mi>E</m:mi></m:math> with
     (<m:math><m:msub><m:mi>S</m:mi><m:mn>1</m:mn></m:msub></m:math>,
     <m:math><m:msub><m:mi>E</m:mi><m:mn>1</m:mn></m:msub></m:math>),
     <m:math><m:mi>&#8230;</m:mi></m:math>      (<m:math><m:msub><m:mi>S</m:mi><m:mi>n</m:mi></m:msub></m:math>,
     <m:math><m:msub><m:mi>E</m:mi><m:mi>n</m:mi></m:msub></m:math>) pairs (where
     <m:math><m:msub><m:mi>S</m:mi><m:mi>i</m:mi></m:msub></m:math> are the attributes) is 
     encoded as the attributed object tag (<span class="new">token
       identifier</span> 18), followed by the encoding 
     of the attribute pairs as the attribute pairs tags
     (<span class="new">token identifier</span> 20), followed by 
     the encoding of each symbol and value, followed by the end attribute
     pairs tag (<span class="new">token identifier</span> 21),
     followed by the encoding of <m:math><m:mi>E</m:mi></m:math>, followed by the end 
     attributed object tag (<span class="new">token identifier</span> 19).</p>
 </dd>



  <dt>Errors</dt>
  <dd><p>are encoded using the error tags
      (<span class="new">token identifiers</span> 22 and 23). More precisely, 
  <m:math><m:msub><m:mi>S</m:mi><m:mn>0</m:mn></m:msub></m:math> applied to
  <m:math><m:msub><m:mi>E</m:mi><m:mn>1</m:mn></m:msub></m:math><span>&#8230;</span>
  <m:math><m:msub><m:mi>E</m:mi><m:mi>n</m:mi></m:msub></m:math> is encoded as the error tag
  (<span class="new">token identifier</span> 22), 
  the encoding of <m:math><m:msub><m:mi>S</m:mi><m:mn>0</m:mn></m:msub></m:math>, the sequence of
  the encodings of <m:math><m:msub><m:mi>E</m:mi><m:mn>0</m:mn></m:msub></m:math> to
  <m:math><m:msub><m:mi>E</m:mi><m:mi>n</m:mi></m:msub></m:math> and the end error tag
  (<span class="new">token identifier</span> 23).</p> 
</dd>



<dt class="new">Internal References</dt>
<dd class="new">
  <p>are encoded using the internal reference tags [30] and [30+128] (the sharing flag cannot
  be set on this tag, since chains of references are not allowed in the <i>OpenMath</i>
  binary encoding) with long flag set if the number of <i>OpenMath</i> sub-objects in the
  encoded <i>OpenMath</i> is
  greater than or equal to 256. Then, there is the ordinal number of the
  referenced <i>OpenMath</i> object as a byte (if the long flag was not set) or a four byte integer
  (in network byte order).</p>
</dd>



<dt class="new">External References</dt>
<dd class="new">
  <p>are encoded using the external reference tags [31] and [31+128] (the sharing flag cannot
  be set on this tag, since chains of references are not allowed in the <i>OpenMath</i>
  binary encoding) with the
  long flag set if the number of bytes in the reference URI is
  greater than or equal to 256. Then, there is the number of bytes in the URI used
  for the external reference 
  as a byte (if the long flag was not set) or a four byte integer
  (in network byte order), followed by the URI.</p>
</dd>


</dl> 
</p>

</div>

<div><h4 name="sec_bin_example" id="sec_bin_example">3.2.3 Example of Binary Encoding</h4>


<p>As <span class="del">an</span>
<span class="new">a simple</span>
example of the binary encoding, we can consider the <i>OpenMath</i> object
<m:math display="block" revisionflag="added">
  <m:mi mathvariant="bold">application</m:mi>
  <m:mo fence="true">(</m:mo>
  <m:mi>times</m:mi>
  <m:mo separator="true">,</m:mo>
  <m:mrow>
    <m:mi mathvariant="bold">application</m:mi>
    <m:mo fence="true">(</m:mo>
    <m:mi>plus</m:mi>
    <m:mo separator="true">,</m:mo>
    <m:mi>x</m:mi>
    <m:mo separator="true">,</m:mo>
    <m:mi>y</m:mi>
    <m:mo fence="true">)</m:mo>
  </m:mrow>
  <m:mo separator="true">,</m:mo>
  <m:mrow>
    <m:mi mathvariant="bold">application</m:mi>
    <m:mo fence="true">(</m:mo>
    <m:mi>plus</m:mi>
    <m:mo separator="true">,</m:mo>
    <m:mi>x</m:mi>
    <m:mo separator="true">,</m:mo>
    <m:mi>z</m:mi>
    <m:mo fence="true">)</m:mo>
  </m:mrow>
  <m:mo fence="true">)</m:mo>
</m:math>
<span class="del">
whose <acronym>XML</acronym> encoding is</span>
<div class="delliteral"><pre>&lt;OMOBJ version="2.0" cdbase="http://www.openmath.org/cd"&gt;
  &lt;OMA&gt;
    &lt;OMS name="times" cd="arith1"/&gt;
    &lt;OMA&gt;
      &lt;OMS name="plus" cd="arith1"/&gt;
      &lt;OMV name="x"/&gt;
      &lt;OMV name="y"/&gt;
    &lt;/OMA&gt;
    &lt;OMA&gt;
      &lt;OMS name="plus" cd="arith1"/&gt;
      &lt;OMV name="x"/&gt;
      &lt;OMV name="z"/&gt;
    &lt;/OMA&gt;
  &lt;/OMA&gt;
&lt;/OMOBJ&gt;</pre></div> 
It is binary encoded as the sequence of bytes given in <a href="#fig_bin-enc_ex">Figure 4.5</a>.</p>

<div class="figure"><a name="fig_bin-enc_ex" id="fig_bin-enc_ex"/>
    

    <table>
	  <tr>
	    <th>Byte</th><th>Hex</th><th>Meaning</th>
	    <th>Byte</th><th>Hex</th><th>Meaning</th>
	    <th>Byte</th><th>Hex</th><th>Meaning</th>
	  </tr>
	
	  <tr>
	    <td>1</td><td>58</td><td>begin object tag</td>
	    <td>19</td><td>10</td><td>begin application tag</td>
	    <td>40</td><td>10</td><td>begin application tag </td>
	  </tr>
	  <tr>
	    <td>2</td><td>2</td><td> version 2.0 (major)</td>
	    <td>20</td><td>08</td><td>symbol tag</td>
	    <td>41</td><td>48</td><td>symbol tag (with share bit on) </td>
	  </tr>
	  <tr>
	    <td>3</td><td>0</td><td> version 2.0 (minor)</td>
	    <td>21</td><td>06</td><td>cd length</td>
	    <td>42</td><td>01</td><td>reference to second symbol seen (arith1:plus)</td>
	  </tr>
	  <tr>
	    <td>4</td><td>10</td><td>begin application tag</td>
	    <td>22</td><td>04</td><td>name length</td>
	    <td>43</td><td>45</td><td>variable tag (with share bit on) </td>
	  </tr>
	  <tr>
	    <td>5</td><td>08</td><td>symbol tag</td>
	    <td>23</td><td>61</td><td>a (cd name begin</td>
	    <td>44</td><td>00</td><td>reference to first variable seen (x) </td>
	  </tr>
	  <tr>
	    <td>6</td><td>06</td><td>cd length </td>
	    <td>24</td><td>72</td><td>r  .</td>
	    <td>45</td><td>05</td><td>variable tag </td>
	  </tr>
	  <tr>
	    <td>7</td><td>05</td><td>name length</td>
	    <td>25</td><td>69</td><td>i  .</td>
	    <td>46</td><td>01</td><td>name length </td>
	  </tr>
	  <tr>
	    <td>8</td><td>61</td><td>a (cd name begin</td>
	    <td>26</td><td>74</td><td>t  .</td>
	    <td>47</td><td>7a</td><td>z (variable name) </td>
	  </tr>
	  <tr>
	    <td>9</td><td>72</td><td>r  .</td>
	    <td>27</td><td>68</td><td>h  .</td>
	    <td>48</td><td>11</td><td>end application tag </td>
	  </tr>
	  <tr>
	    <td>10</td><td>69</td><td>i  .</td>
	    <td>28</td><td>31</td><td>1  .)</td>
	    <td>49</td><td>11</td><td>end application tag </td>
	  </tr>
	  <tr>
	    <td>11</td><td>74</td><td>t  .</td>
	    <td>29</td><td>70</td><td>p (symbol name begin</td>
	    <td>50</td><td>11</td><td>end application tag </td>
	  </tr>
	  <tr>
	    <td>12</td><td>68</td><td>h  .</td>
	    <td>30</td><td>6c</td><td>l  .</td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td>13</td><td>31</td><td>1  .)</td>
	    <td>31</td><td>75</td><td>u  . </td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td>14</td><td>74</td><td>t (symbol name begin</td>
	    <td>32</td><td>73</td><td>s  .) </td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td>15</td><td>69</td><td>i  .</td>
	    <td>33</td><td>05</td><td>variable tag</td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td>16</td><td>6d</td><td>m  .</td>
	    <td>34</td><td>01</td><td>name length </td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td>17</td><td>65</td><td>e  .</td>
	    <td>35</td><td>78</td><td>x (name) </td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td>18</td><td>73</td><td>s  .)</td>
	    <td>36</td><td>05</td><td>variable tag </td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td/><td/><td/>
	    <td>37</td><td>01</td><td>name length </td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td/><td/><td/>
	    <td>38</td><td>79</td><td>y (variable name) </td>
	    <td/><td/><td/>
	  </tr>
	  <tr>
	    <td/><td/><td/>
	    <td>39</td><td>11</td><td>end application tag </td>
	    <td/><td/><td/>
	  </tr>
	</table> 
  <div class="caption">
  Figure 4.5 A Simple example of the <i>OpenMath</i> binary encoding.</div></div>
  
</div>

<div><h4 name="sec_both_sharing" id="sec_both_sharing">3.2.4 Sharing</h4>
  
  
  <p class="new">
    <i>OpenMath</i> 2 introduced a new sharing mechanism, described below.  First however
    we describe the original <i>OpenMath</i> 1 mechanism.
  </p>
  
  <div><h5 name="sec_sharing" id="sec_sharing">3.2.4.1 Sharing <span class="new">in Objects beginning with the identifier [24]</span></h5>
    
    
    <p>This
      <span class="new">form of sharing is deprecated but included for
	backwards compatibility with <i>OpenMath</i> 1.  It</span>
      <span class="del">binary encoding</span>
      supports the sharing of symbols, variables and strings
      (up to a certain length for strings) within one object. That is, sharing between
      objects is not supported.  A reference to a shared symbol, variable or string is
      encoded as the corresponding tag with the long flag not set and the shared flag
      set, followed by a positive integer <m:math><m:mi>n</m:mi></m:math> encoded as one byte (0
      to 255). This integer references the <m:math><m:mi>n</m:mi> <m:mo>+</m:mo>
	<m:mn>1</m:mn></m:math>-th such sharable sub-object (symbol, variable or string up to
      255 characters) in the current <i>OpenMath</i> object (counted in the order they are
      generated by the encoding).  For example, <small><code>0x48 0x01</code></small>
      references a symbol that is identical to the second symbol that was found in the
      current object.  Strings with 8 bit characters and strings with 16 bit characters
      are two different kinds of objects for this sharing. Only strings containing less
      than 256 characters can be shared (i.e. only strings up to 255 characters).</p>
  </div>
  
  <div class="new"><h5 name="sec_sharing_references" id="sec_sharing_references">3.2.4.2 Sharing with References (beginning with [24+64])</h5>
    
    
    <p>In the binary encoding specified in the last section (which we keep
      for compatibility reasons, but deprecate in favor of the more
      efficient binary encoding specified in this section) only symbols,
      variables, and short strings could be shared. In this section, we will
      present a second binary encoding, which shares most of the identifiers
      with the one in the last one, but handles sharing differently. This
      encoding is signaled by the shared object tag [88].</p>
    
    <p>The main difference is the interpretation of the sharing flag (bit 7),
      which can be set on all objects that allow it. Instead of encoding a reference to a
      previous occurrence of an object of the same type, it indicates
      whether an object will be referenced later in the encoding. This
      corresponds to the information, whether an <small><code>id</code></small>
      attribute is set
      in the <acronym>XML</acronym> encoding. On the object identifier (where sharing does not
      make sense), the shared flag signifies the encoding described here
      ([88]=[24+64]).
    </p>
    
    <p>Otherwise integers, floats, variables, symbols, strings, bytearrays, and constructs
      are treated exactly as in the binary encoding described in the last section.</p>
    
    <p>The binary encoding with references uses the additional reference tags [30]
      for (short) internal references, [30+128] for long internal references, [31] for
      (short) external references, [31+128] for long external references. Internal
      references are used to share sub-objects in the encoded object (see <a href="#fig_bin-enc2">Figure 4.6</a> for an example) by referencing their position; external
      references allow to reference <i>OpenMath</i> objects in other documents by a URI.</p>
    
    <p>Identifiers [30+64] and [30+64+128] are not used, since they would encode
      references that are shared themselves. Chains of references are redundant, and
      decrease both space and time efficiency, therefore they are not allowed in the
      <i>OpenMath</i> binary encoding.</p>
    
    <p>References consist of the identifier [30] ([30+128] for long references)
      followed by a positive integer <m:math><m:mi>n</m:mi></m:math> coded on one byte (4 bytes for long
      references). This integer references the
      <m:math><m:mrow><m:mi>n</m:mi><m:mo>+</m:mo><m:mn>1</m:mn></m:mrow></m:math>th shared sub-object (one
      where the 
      shared flag is set) in the current object (counted in the order they are generated
      in the encoding). For example <small><code>Ox7E Ox01</code></small> references the
      second shared sub-object. <a href="#fig_bin-enc2">Figure 4.6</a> shows the binary
      encoding of the object in <a href="#fig_shared_vs_unshared">Figure 4.1</a>
      above.</p>
    
    <div class="new"><a name="fig_bin-enc2" id="fig_bin-enc2"/>
      
      <table>
	    <tr>
	      <th>Byte</th><th>Hex</th><th>Meaning</th>
	      <th>Byte</th><th>Hex</th><th>Meaning</th>
	      <th>Byte</th><th>Hex</th><th>Meaning</th>
	    </tr>
	  
	    <tr>
	      <td>1</td><td>58</td><td>begin object tag</td>
	      <td>12</td><td>50</td><td>begin application tag (shared)</td>
	      <td>23</td><td>1E</td><td>short reference</td>
	    </tr>
	    <tr>
	      <td>2</td><td>2</td><td> version 2.0 (major)</td>
	      <td>13</td><td>05</td><td>variable tag</td>
	      <td>24</td><td>00</td><td>to the first shared object</td>
	    </tr>
	    <tr>
	      <td>3</td><td>0</td><td> version 2.0 (minor)</td>
	      <td>14</td><td>01</td><td>variable length</td>
	      <td>25</td><td>11</td><td>end application tag</td>
	    </tr>
	    <tr>
	      <td>4</td><td>10</td><td>begin application tag</td>
	      <td>15</td><td>66</td><td>f  (variable name)</td>
	      <td>26</td><td>1E</td><td>short reference</td>
	    </tr>
	    <tr>
	      <td>5</td><td>05</td><td>variable tag</td>
	      <td>16</td><td>05</td><td>variable tag</td>
	      <td>27</td><td>00</td><td>to the second shared object</td>
	    </tr>
	    <tr>
	      <td>6</td><td>01</td><td>variable length</td>
	      <td>17</td><td>01</td><td>variable length</td>
	      <td>28</td><td>11</td><td>end application tag</td>
	    </tr>
	    <tr>
	      <td>7</td><td>66</td><td>f  (variable name)</td>
	      <td>18</td><td>61</td><td>a  (variable name)</td>
	      <td/>
	    </tr>
	    <tr>
	      <td>8</td><td>50</td><td>begin application tag (shared)</td>
	      <td>19</td><td>05</td><td>variable tag</td>
	      <td/>
	    </tr>
	    <tr>
	      <td>9</td><td>05</td><td>variable tag</td>
	      <td>20</td><td>01</td><td>variable length</td>
	      <td/>
	    </tr>
	    <tr>
	      <td>10</td><td>01</td><td>variable length</td>
	      <td>21</td><td>61</td><td>a  (variable name)</td>
	      <td/>
	    </tr>
	    <tr>
	      <td>11</td><td>66</td><td>f  (variable name)</td>
	      <td>22</td><td>11</td><td>end application tag</td>
	      <td/>
	    </tr>
	  </table>
    <div class="caption">
  Figure 4.6 A binary encoding of the <i>OpenMath</i> object from <a href="#fig_shared_vs_unshared">Figure 4.1</a>.</div></div>
    
    <p>It is easy to see that in this binary encoding, the size of the encoding is
      <m:math><m:mn>13</m:mn><m:mo>+</m:mo><m:mn>7</m:mn>
	<m:mo fence="true">(</m:mo><m:mi>d</m:mi><m:mo>-</m:mo><m:mn>1</m:mn><m:mo fence="true">)</m:mo></m:math> bytes,
      where <m:math><m:mi>d</m:mi></m:math> is the depth of the tree, while a totally unshared encoding
      is <m:math><m:mn>8</m:mn><m:mo>*</m:mo><m:msup><m:mn>2</m:mn><m:mi>d</m:mi></m:msup><m:mo>-</m:mo><m:mn>8</m:mn></m:math>       bytes (sharing variables saves up to 256 bytes for trees up to depth 8 and wastes space
      for greater depths). The shared <acronym>XML</acronym> encoding only uses
      <m:math><m:mn>32</m:mn><m:mi>d</m:mi><m:mo>+</m:mo><m:mn>29</m:mn></m:math> bytes, which is more space
      efficient starting at depth 9.</p>
    
    <p>Note that in the conversion from the <acronym>XML</acronym> to the
      binary encoding the identifiers on the
      objects are not preserved. Moreover, even though the <acronym>XML</acronym> encoding
      allows references across objects, as in <a href="#fig_sharing_between">Figure 4.2</a>, the binary
      encoding does not (the binary encoding has no notion of a multi-object
      collection, while in the <acronym>XML</acronym> encoding this would naturally correspond to
      e.g. the embedding of multiple <i>OpenMath</i> objects into a single <acronym>XML</acronym>
      document).</p>
    
    <p>Note that objects need not be fully shared (or shared at all) in the
      binary encoding with sharing.</p>
  </div>
</div>

<div><h4 name="sec_impl_note" id="sec_impl_note">3.2.5 Implementation Note</h4>
  
  
  <p>A typical implementation of the binary encoding comes in two parts. The
    first part deals with the unshared encodings, i.e. objects starting with the
    identifier <small><code>[24]</code></small>.</p>
  
  <p>This part uses four tables, each of 256 entries, for symbol, variables, 8
    bit character strings whose lengths are less than 256 characters and 16 bit
    character strings whose lengths are less than 256 characters.  When an object is
    read, all the tables are first flushed. Each time a sharable sub-object is read,
    it is entered in the corresponding table if it is not full. When a reference to
    the shared <m:math><m:mi>i</m:mi></m:math>-th object of a given type is read, it stands
    for the <m:math><m:mi>i</m:mi></m:math>-th entry in the corresponding table. It is an
    encoding error if the <m:math><m:mi>i</m:mi></m:math>-th position in the table has not
    already been assigned (i.e. forward references are not allowed).  Sharing is not
    mandatory, there may be duplicate entries in the tables (if the application that
    wrote the object chose not to share optimally).
  </p>
  
  <p class="new">
    The part for the shared representations of <i>OpenMath</i> objects uses an unbounded
    array for storing shared sub-objects. Whenever an object has the shared flag
    set, then it is read and a pointer to the generated data structure is stored at
    the next position of the array. Whenever a reference of the form 
    <small><code>[30] [_]</code></small> is
    encountered, the array is queried for the value at <small><code>[_]</code></small>
    and analogously for <small><code>[30+128] {_}</code></small>. Note that the
    application can decide to copy the value or share it among sub-terms as long as
    it respects the identity conditions given by the tree-nature of the <i>OpenMath</i>
    objects.  The implementation must take care to ensure that no variables
    are captured during this process (see section
    <a href="#sec_sharing_bvars">Section 3.1.3.2</a>), and possibly have methods for recovering
    from cyclic dependency relations (this can be done by standard loop-checking
    methods).
  </p>
  
  <p>Writing an object is simple. The tables are first flushed. Each time a
    sharable sub-object is encountered (in the natural order of output given by the
    encoding), it is either entered in the corresponding table (if it is not full) and
    output in the normal way or replaced by the right reference if it is already
    present in the table.</p>
</div>


<div class="new"><h4 name="sec_relation_OM1_binary" id="sec_relation_OM1_binary">3.2.6 Relation to the <i>OpenMath</i> 1 binary encoding</h4>
  
  <p>The <i>OpenMath</i> 2 binary encoding significantly extends the
    <i>OpenMath</i> 1 binary encoding to accommodate the new features and in particular sharing of
    sub-objects. The tags and structure of the  <i>OpenMath</i> 1 binary encoding are still
    present in the current <i>OpenMath</i> binary encoding, so that binary encoded <i>OpenMath</i> 1 objects
    are still valid in the <i>OpenMath</i> 2 binary encoding and correspond to the same abstract
    <i>OpenMath</i> objects. In some cases, the binary encoding tags without the shared flag
    can still be used as more compact representations of the objects (which are
    not shared, and do not have an identifier).
  </p>
  <p>As the binary encoding is geared towards compactness, <i>OpenMath</i> objects
    should be constructed so as to maximise internal sharing
    (if computationally feasible). Note that since
    sharing is done only at the
    encoding level, this does not alter the meaning of an <i>OpenMath</i> object, only
    allows it to be represented more compactly.
  </p>
</div>
</div>

<div><h3 name="sec_enc_summary" id="sec_enc_summary">3.3 Summary</h3>
  
  
  <p>The key points of this chapter are:
    <ul>
      <li><p>The <acronym>XML</acronym> encoding for <i>OpenMath</i> objects uses most common
	  character sets.</p></li>
      <li><p>The <acronym>XML</acronym> encoding is readable, writable and can be
	  embedded in most documents and transport protocols.</p></li>
      <li><p>The binary encoding for <i>OpenMath</i> objects should be used when
	  efficiency is a key issue. It is compact yet simple enough to allow
	  fast encoding and decoding of objects.</p></li>
    </ul>
  </p>
</div>
</div>

<div><h2 name="cha_cd" id="cha_cd">
  Chapter 4<br/>Content Dictionaries</h2>
  
  
  
  <p>In this chapter we give a brief overview of Content Dictionaries
    before explicitly stating their functionality and encoding.</p>
  <div><h3 name="sec_cd_summary" id="sec_cd_summary">4.1 Introduction</h3>
    
    
    <p>Content Dictionaries (CDs) are central to the <i>OpenMath</i> philosophy of
      transmitting mathematical information. It is the <i>OpenMath</i> Content
      Dictionaries which actually hold the meanings of the objects being
      transmitted.</p>
    
    <p>For example if application <m:math><m:mi>A</m:mi></m:math> is talking to
      application <m:math><m:mi>B</m:mi></m:math>, and sends, say, an equation
      involving multiplication of matrices, then <m:math><m:mi>A</m:mi></m:math> and
      <m:math><m:mi>B</m:mi></m:math> must agree on what a matrix is, and on what
      matrix multiplication is, and even on what constitutes an
      equation. All this information is held within some Content
      Dictionaries which both applications agree upon.</p>
    
    <p>A <i> Content Dictionary</i> holds the meanings of
      (various) mathematical <span>"words"</span>. These words are <i>OpenMath</i>
      basic objects referred to as <i>symbols</i> in <a href="#sec_omabs">Section 2.1</a>.</p>
    
    <p>With a set of symbol definitions (perhaps from several Content
      Dictionaries), <m:math><m:mi>A</m:mi></m:math> and <m:math><m:mi>B</m:mi></m:math> can
      now talk in a common <span>"language"</span>.</p>
    
    <p>It is important to stress that it is not Content Dictionaries
      themselves which are being transmitted, but some <span>"mathematics"</span>
      whose definitions are held within the Content Dictionaries. This means
      that the applications must have already agreed on a set of Content
      Dictionaries which they <span>"understand"</span> (i.e., can cope with
      to some degree).</p>
    
    <p>In many cases, the Content
      Dictionaries that an application understands will be constant, and be
      intrinsic to the application's mathematical use. However the above
      approach can also be used for applications which can handle every
      Content Dictionary (such as an <i>OpenMath</i> parser, or perhaps a typesetting
      system), or alternatively for applications which understand a
      changeable number of Content Dictionaries (perhaps after being sent
      Content Dictionaries in some way).</p>
    
    <p>The primary use of Content Dictionaries is thought to be for
      designers of Phrasebooks, the programs which translate between the <i>OpenMath</i>
      mathematical object and the corresponding (often internal) structure
      of the particular application in question. For such a use the Content
      Dictionaries have themselves been designed to be as readable and
      precise as possible.</p>
    
    <p>Another possible use for <i>OpenMath</i> Content Dictionaries could rely on
      their automatic comprehension by a machine (e.g., when given
      definitions of objects defined in terms of previously understood
      ones), in which case Content Dictionaries may have to be passed as
      data. Towards this end, a Content Dictionary has been written which
      contains a set of symbols sufficient to represent any other Content
      Dictionary. This means that Content Dictionaries may be passed in the
      same way as other (<i>OpenMath</i>) mathematical data.</p>
    
    <p>Finally, the syntax of the
      <span class="new">reference encoding for</span>
      Content Dictionaries has been designed to be relatively easy to learn
      and to write, and also free from the need for any specialist
      software. This is because it is acknowledged that there is an enormous
      amount of mathematical information to represent, and so most 
      <span class="del">of the</span>
      Content Dictionaries 
      <span class="del">will be</span>
      <span class="new">are</span> 
      written by <span>"ordinary"</span>
      mathematicians, encoding their particular fields of expertise.  A
      further reason is that the mathematics conveyed by a specific Content
      Dictionary should be understandable independently of any
      application.</p>
    
    <p>The key points from this section are:
      <ul>
	<li><p>Content Dictionaries should be readable and precise to help
	    Phrasebook designers,</p></li>
	<li><p>Content Dictionaries should be readily write-able to encourage
	    widespread use,</p></li>
	<li><p>It ought to be possible for a machine to understand a Content
	    Dictionary to some degree.</p></li>
      </ul>
    </p>
  </div>
  
  <div><h3 name="sect_func" id="sect_func">4.2 Abstract Content Dictionaries</h3>
    
    
    <p>In this section we define the <span class="del">overall</span><span class="new">abstract</span> structure of Content
      Dictionaries.</p>
    
    
    <p class="del">Other than Content Dictionary comments (which have no real semantics),
      Content Dictionaries have been designed to hold two types of
      information: that which is pertinent to the whole Content Dictionary,
      and that which is restricted to a particular symbol definition.
      Specific information pertaining to the symbols like the signature and
      the defining mathematical properties is conveyed in additional files
      associated to Content Dictionaries.</p>
    
    <p class="del">Information that is pertinent to the whole Content Dictionary
      includes:
      <ul class="del">
	<li><p>The name of the Content Dictionary.</p></li>
	<li><p>A description of the Content Dictionary.</p></li>
	<li><p>A date when the Content Dictionary is next planned to be reviewed.</p></li>
	<li><p>A date on which the Content Dictionary was last edited.</p></li>
	<li><p>The current version and revision  numbers of the Content Dictionary.</p></li>
	<li><p>The status of the Content Dictionary.</p></li>
	<li><p>An optional URL for this Content Dictionary.</p></li>
	<li><p>An optional list of Content Dictionaries on which this Content
	    Dictionary depends. That is, those named in Examples and FMPs
	    in this Content Dictionary.</p></li>
	<li><p>An optional comment, possibly containing the author's name.</p></li>
      </ul>
    </p>
    
    <p class="del">Information that is restricted to a particular symbol includes:
      <ul class="del">
	<li><p>The name of the symbol.</p></li>
	<li><p>A description of this symbol.</p></li>
	<li><p>An optional comment.</p></li>
	<li><p>Optional properties that this symbol should obey.</p></li>
	<li><p>Optional examples of the use of this symbol.</p></li>
      </ul>
    </p>
    
    
    
    
    
    <p class="new">A Content Dictionary consists of the
      following mandatory pieces of information:
      <ol class="new">
	<li><p>A <i>name</i> corresponding to the rules
	    described in <a href="#sec_names">Section 2.3</a>.</p></li>
	<li><p>A <i>description</i> of the Content
	    Dictionary.
	  </p></li>
	<li><p>A <i>revision date</i>, the date of the
	    last change to the Content Dictionary.  Dates should be stored in the
	    ISO-compliant format YYYY-MM-DD, e.g. 1966-02-03. 
	  </p></li>
	<li><p>A <i>review date</i>, a date until which
	    the content dictionary is guaranteed to remain unchanged. 
	  </p></li>
	<li><p>A <i>version number</i> which consists
	    of a major and minor part (see <a href="#sec_version">Section 4.2.2</a>). 
	  </p></li>
	<li><p>A <i>status</i>, as described in <a href="#sec_status">Section 4.2.1</a>. 
	  </p></li>
	<li><p>A <i>CD base</i> which, when combined
	    with the CD name, forms a unique
	    identifier for the Content Dictionary. It may or may not refer to an
	    actual location from which it can be retrieved.   
	  </p></li>
	<li><p>A series of one or more
	    <i>symbol definitions</i> as
	    described below.
	  </p></li>
      </ol>
    </p>
    
    <p class="new">A symbol definition consists of the
      following pieces of information:
      <ol class="new">
	<li><p>A mandatory <i>name</i> corresponding to the rules
	    described in <a href="#sec_names">Section 2.3</a>.</p></li>
	<li><p>A mandatory <i>description</i> of the symbol,
	    which can be as formal or informal as the author likes.
	  </p></li>
	<li><p>An optional <i>role</i> as described in
	    <a href="#sec_roles">Section 2.1.4</a>.
	  </p></li>
	<li><p>Zero or more <i>commented mathematical
	      properties</i> which are mathematical properties of the symbol
	    expressed in a mechanism other than <i>OpenMath</i>.
	  </p></li>
	<li><p>Zero or more <i>formal mathematical
	      properties</i> which are mathematical properties of the symbol
	    expressed in <i>OpenMath</i>.  Note that it is common for commented and formal
	    mathematical properties to be introduced in pairs, with the former
	    describing the latter.
	  </p><p>A Formal Mathematical Property may be given an optional
	    <i>kind</i> attribute.  An author of a Content Dictionary
	    may use this to indicate whether, for example, the property provides an
	    algorithm for evaluation of the concept it is associated with.  At
	    present no fixed scheme is mandated for how this information should be
	    encoded or used by an application.
	  </p></li>
	<li><p>Zero or more <i>examples</i> which are
	    intended to demonstrate the use of the symbol within an <i>OpenMath</i> object.
	  </p></li>
      </ol>
    </p>
    
    <p class="del">As mentioned earlier, certain kinds of data pertaining to
      symbols may be conveyed in files other than a Content Dictionary.  In
      particular, information on signatures according to a type system may
      be described in <i>Signature Files</i> whose format is
      given in <a href="#sigfiles">Section 4.4.1</a>. Other information such as
      presentation forms, extra defining mathematical properties may be
      associated with Content Dictionaries using files whose format is not
      specified by this standard. It is expected that a common method of
      defining the presentation for <i>OpenMath</i> symbols is via
      <acronym>XSL</acronym> <a href="#XSLT_99">[24]</a> stylesheets
      giving transformations to MathML.</p>
    
    <p class="new">
      Some pieces of information which might logically be thought to be part
      of a Content Dictionary, such as the types or signatures of symbols,
      are better represented externally.  This allows for new variants to be
      associated with Content Dictionaries without the Dictionaries
      themselves being changed.  A model for signatures is given in <a href="#sigfiles">Section 4.4.1</a>.</p>
    
    
    <p>Content Dictionaries may be grouped into <i>CD
	Groups</i>. These groups allow applications to easily refer to
      collections of Content Dictionaries. One particular CDGroup of
      interest is the <span>"MathML CDGroup"</span>. This group consists of
      the collection of core Content Dictionaries that is designed to
      have the same semantic scope as the content elements of
      MathML 2 <a href="#MathML_2003">[17]</a>.  <i>OpenMath</i> objects
      built from symbols that come from Content Dictionaries in this CDGroup
      may be expected to be easily transformed between <i>OpenMath</i> and MathML
      encodings.  The detailed structure of a CDGroup is described in
      <a href="#ssec_cdgroups">Section 4.4.2</a> below.</p>
    
    <div class="new"><h4 name="sec_status" id="sec_status">4.2.1 Content Dictionary Status</h4>
      
      
      <p>The status of a Content Dictionary can be either
	<ul>
	  <li><p>
	      <small><code>official</code></small>: approved by the <i>OpenMath</i> Society
	      according to the procedure outlined in <a href="#cdapprove">Section 4.5</a>;
	    </p></li>
	  
	  <li><p>
	      <small><code>experimental</code></small>: under development and thus
	      liable to change;
	    </p></li>
	  <li><p>
	      <small><code>private</code></small>: used by a private group of <i>OpenMath</i>
	      users;
	    </p></li>
	  <li><p>
	      <small><code>obsolete</code></small>: an obsolete Content
	      Dictionary kept only for archival purposes.
	    </p></li>
	</ul>
      </p>
    </div>
    
    <div class="new"><h4 name="sec_version" id="sec_version">4.2.2 Content Dictionary Version Numbers</h4>
      
      
      <p>A version number must consist of two parts, a major version and
	a revision, both of which should be non-negative integers.  In CDs
	that do not have status <i>experimental</i>, the version
	number should be a positive integer.</p>
      
      <p>Unless a CD has status <i>experimental</i>,
	no changes should ever be
	introduced that invalidate objects built with previous versions.
	Any change that influences phrasebook compliance, like adding a new
	symbol to a Content Dictionary, is considered a major change
	and should be reflected by an increase in the major version number. Other
	changes, like adding an example or correcting a description, are
	considered minor changes. For minor changes the version number is not
	changed, but an increase should be made to the revision number.
	Note that a change such as removing a symbol should
	not be made unless the CD has status
	<i>experimental</i>.
	Should this be required then a new CD with a different name should be
	produced so as not to invalidate existing objects.</p>
      
      <p>
	When the major version number
	is increased, the revision number is normally reset to zero.</p>
      
      <p>As detailed in <a href="#cha_comp">Chapter 5</a>, <i>OpenMath</i>
	compliant applications state which versions of which CDs they support.
      </p>
      
    </div>
    
  </div>
  
  <div><h3 name="sec_xml_cd" id="sec_xml_cd">4.3 The <span class="del"><acronym>XML</acronym></span><span class="new">Reference</span> Encoding for Content Dictionaries</h3>
    
    
    
    
    
    <p><span class="new">The reference encoding of</span>
      Content Dictionaries are as <acronym>XML</acronym> documents.  A valid Content Dictionary
      document should 
      <ul class="del">
	<li><p>be valid according to the DTD given in <a href="#fig_cd-dtd">Figure </a>,</p></li>
	<li><p>adhere to the extra conditions on the
	    content of the elements given in <a href="#sect_pcdata">Section 4.3.2</a>.</p></li>
      </ul>
      <span class="new">conform to the Relax NG Schema for
	Content Dictionaries given in <a href="#sec_cd_schema">Section 4.3.1</a>.
      </span>
    </p>
    
    
    
    <p>An example of a complete Content Dictionary is given in
      Appendix <a href="#app_cdcd">Appendix A.1</a>, which is the
      <small><code>Meta</code></small> Content Dictionary for describing
      Content Dictionaries themselves. A more typical Content Dictionary is
      given in <a href="#arith1.ocd">Appendix A.2</a>, the
      <small><code>arith1</code></small> Content Dictionary for basic
      arithmetic functions.</p>
    
    <div class="new"><h4 name="sec_cd_schema" id="sec_cd_schema">4.3.1 The Relax NG Schema for Content Dictionaries</h4>
      
      
      <div class="literal"><pre>
	<span style="color:brown;"># *********************************************</span>
<span style="color:brown;"># </span>
<span style="color:brown;"># Relax NG Schema for OpenMath CD</span>
<span style="color:brown;"># </span>
<span style="color:brown;"># *********************************************</span>

<span style="font-weight:bold;">default</span> <span style="font-weight:bold;">namespace</span> = "http://www.openmath.org/OpenMathCD"

<span style="font-weight:bold;">include</span> "openmath2.rnc" {<a name="rncsec_cd_schemastart" style="color:blue;">start</a> = <a href="#rncsec_cd_schemaCD">CD</a>}

<a name="rncsec_cd_schemaCDComment" style="color:blue;">CDComment</a> = <span style="font-weight:bold;">element</span> CDComment { <span style="font-weight:bold;">text</span> }
<a name="rncsec_cd_schemaCDName" style="color:blue;">CDName</a> = <span style="font-weight:bold;">element</span> CDName { <span style="font-weight:bold;">xsd:NCName</span> }
<a name="rncsec_cd_schemaCDUses" style="color:blue;">CDUses</a> = <span style="font-weight:bold;">element</span> CDUses { <a href="#rncsec_cd_schemaCDName">CDName</a>* }
<a name="rncsec_cd_schemaCDURL" style="color:blue;">CDURL</a> = <span style="font-weight:bold;">element</span> CDURL { <span style="font-weight:bold;">xsd:anyURI</span> }
<a name="rncsec_cd_schemaCDBase" style="color:blue;">CDBase</a> = <span style="font-weight:bold;">element</span> CDBase { <span style="font-weight:bold;">xsd:anyURI</span> }
<a name="rncsec_cd_schematext-or-om" style="color:blue;">text-or-om</a> = (<span style="font-weight:bold;">text</span> | <a href="#rncOMOBJ">OMOBJ</a>)*
<a name="rncsec_cd_schemaCDReviewDate" style="color:blue;">CDReviewDate</a> = <span style="font-weight:bold;">element</span> CDReviewDate { <span style="font-weight:bold;">xsd:date</span> }
<a name="rncsec_cd_schemaCDDate" style="color:blue;">CDDate</a> = <span style="font-weight:bold;">element</span> CDDate { <span style="font-weight:bold;">xsd:date</span> }
<a name="rncsec_cd_schemaCDVersion" style="color:blue;">CDVersion</a> = <span style="font-weight:bold;">element</span> CDVersion { <span style="font-weight:bold;">xsd:nonNegativeInteger</span> }
<a name="rncsec_cd_schemaCDRevision" style="color:blue;">CDRevision</a> = <span style="font-weight:bold;">element</span> CDRevision { <span style="font-weight:bold;">xsd:nonNegativeInteger</span> }
<a name="rncsec_cd_schemaCDStatus" style="color:blue;">CDStatus</a> = <span style="font-weight:bold;">element</span> CDStatus {
   "official" |
   "experimental" |
   "private" |
   "obsolete"}
<a name="rncsec_cd_schemaDescription" style="color:blue;">Description</a> = <span style="font-weight:bold;">element</span> Description { <span style="font-weight:bold;">text</span> }
<a name="rncsec_cd_schemaName" style="color:blue;">Name</a> = <span style="font-weight:bold;">element</span> Name { <span style="font-weight:bold;">xsd:NCName</span> }
<a name="rncsec_cd_schemaRole" style="color:blue;">Role</a> = <span style="font-weight:bold;">element</span> Role {
   "binder" |
   "attribution" |
   "semantic-attribution" |
   "error" |
   "application" |
   "constant" }
<a name="rncsec_cd_schemaCMP" style="color:blue;">CMP</a> = <span style="font-weight:bold;">element</span> CMP { <span style="font-weight:bold;">text</span> }
<a name="rncsec_cd_schemaFMP" style="color:blue;">FMP</a> = <span style="font-weight:bold;">element</span> FMP { 
  <span style="font-weight:bold;">attribute</span> kind {<span style="font-weight:bold;">xsd:string</span>}?,
  <a href="#rncOMOBJ">OMOBJ</a>
  }
<span style="color:brown;"># allow embedded OM</span>
<a name="rncsec_cd_schemaExample" style="color:blue;">Example</a> = <span style="font-weight:bold;">element</span> Example { <a href="#rncsec_cd_schematext-or-om">text-or-om</a> }
<a name="rncsec_cd_schemaCDDefinition" style="color:blue;">CDDefinition</a> =
  <span style="font-weight:bold;">element</span> CDDefinition {
    <a href="#rncsec_cd_schemaCDComment">CDComment</a>*,
    (<a href="#rncsec_cd_schemaName">Name</a> &amp; <a href="#rncsec_cd_schemaRole">Role</a>? &amp; <a href="#rncsec_cd_schemaDescription">Description</a>),
   (<a href="#rncsec_cd_schemaCDComment">CDComment</a> | <a href="#rncsec_cd_schemaExample">Example</a> | <a href="#rncsec_cd_schemaFMP">FMP</a> | <a href="#rncsec_cd_schemaCMP">CMP</a>)*
  }
<a name="rncsec_cd_schemaCD" style="color:blue;">CD</a> =
  <span style="font-weight:bold;">element</span> CD {
    (<a href="#rncsec_cd_schemaCDComment">CDComment</a>* &amp; <a href="#rncsec_cd_schemaDescription">Description</a>? &amp;
     <a href="#rncsec_cd_schemaCDName">CDName</a> &amp; <a href="#rncsec_cd_schemaCDURL">CDURL</a>? &amp; <a href="#rncsec_cd_schemaCDBase">CDBase</a>? &amp;
     <a href="#rncsec_cd_schemaCDReviewDate">CDReviewDate</a>? &amp; <a href="#rncsec_cd_schemaCDDate">CDDate</a> &amp; <a href="#rncsec_cd_schemaCDStatus">CDStatus</a> &amp; 
     <a href="#rncsec_cd_schemaCDUses">CDUses</a>? &amp; 
     <a href="#rncsec_cd_schemaCDVersion">CDVersion</a> &amp; <a href="#rncsec_cd_schemaCDRevision">CDRevision</a>),
    ( <a href="#rncsec_cd_schemaCDDefinition">CDDefinition</a>,<a href="#rncsec_cd_schemaCDComment">CDComment</a>* )+
  }


      </pre></div>
      
    </div>
    <div class="del"><h4 name="sec_dtd_cd" id="sec_dtd_cd"> The DTD Specification of  Content Dictionaries</h4>
      


<div class="del"><a name="fig_cd-dtd" id="fig_cd-dtd"/>
    
<div class="literal"><pre>
&lt;!-- omcd.dtd --&gt;
&lt;!-- ********************************************* --&gt;
&lt;!--                                               --&gt;
&lt;!-- DTD for OpenMath CD                           --&gt;
&lt;!-- (c) EP24969 the ESPRIT OpenMath Consortium    --&gt;
&lt;!-- date = 28.aug.1998                            --&gt;
&lt;!-- author = s.buswell sb@stilo.demon.co.uk       --&gt;
&lt;!--                                               --&gt;
&lt;!-- edited by n.howgrave-graham 30.aug.98         --&gt;
&lt;!-- edited by sb 4.sep.98                         --&gt;
&lt;!-- edited by nh-g 4.sep.98                       --&gt;
&lt;!-- edited by sb 1.nov.98                         --&gt;
&lt;!-- edited by sb 1.nov.98                         --&gt;
&lt;!-- edited by dpc 1999-04-13                      --&gt;
&lt;!--                                               --&gt;
&lt;!--                                               --&gt;
&lt;!-- ********************************************* --&gt;
&lt;!ELEMENT CDComment      (#PCDATA) &gt;
&lt;!ELEMENT CDName         (#PCDATA) &gt;
&lt;!ELEMENT CDURL          (#PCDATA) &gt;
&lt;!ELEMENT CDUses         (CDName)*  &gt;
&lt;!ENTITY % inhel        "(#PCDATA)" &gt;
&lt;!ENTITY % inhel2       "(#PCDATA | OMOBJ)*" &gt;
&lt;!ELEMENT CDReviewDate   %inhel; &gt;
&lt;!ELEMENT CDStatus       %inhel; &gt;
&lt;!ELEMENT Description    %inhel; &gt;
&lt;!ELEMENT Name           %inhel; &gt;
&lt;!ELEMENT Signature      %inhel; &gt;
&lt;!ELEMENT Presentation   %inhel; &gt;
&lt;!ELEMENT CMP            %inhel; &gt;
&lt;!-- include dtd for OM objects --&gt;
&lt;!ENTITY  % omobjectdtd SYSTEM "omobj.dtd" &gt;
%omobjectdtd;
&lt;!ELEMENT FMP            %inhel2; &gt;             &lt;!-- allow embedded OM --&gt;
&lt;!ELEMENT Example        %inhel2; &gt;
&lt;!ELEMENT CDDefinition    (CDComment | Name | Description |  PartOf |
                          FunctorClass | Signature | Example | FMP |
                          CMP | Presentation)* &gt;
&lt;!ELEMENT CD             (CDComment | CDName | Description | CDReviewDate |
                         CDStatus | CDURL | CDUses |  CDDefinition |
Example)* &gt;
&lt;!-- end of DTD for OM CD --&gt;

</pre></div>


<div class="caption">
  Figure  DTD Specification of  Content Dictionaries</div></div>


<p>The <acronym>XML</acronym> DTD for Content Dictionaries is given in
<a href="#fig_cd-dtd">Figure </a>. The allowed elements are further
described in the following section.</p>
</div>

<div><h4 name="sect_pcdata" id="sect_pcdata">4.3.2 Further <span class="del">Requirements of an <i>OpenMath</i>
Content Dictionary</span><span class="new">Description of
the CD Schema</span></h4>



<p class="del">The notion of being a valid Content Dictionary is stronger than merely
being successfully parsed by the DTD. This is because the content of
the elements, referred to in <a href="#fig_cd-dtd">Figure </a> as PCDATA and
CDATA, must actually make sense to, say, a Phrasebook designer. In
this section we define exactly the format of the elements used in
Content Dictionaries.</p>

<p class="new">
We now describe the elements used in the above schema in terms of the
abstract description of CDs in <a href="#sect_func">Section 4.2</a>.  Unless
stated otherwise information is encoded as the content of the relevant
element.
</p>



<dl>
<dt><small><code>CDName</code></small></dt><dd><p>The
<span class="del">
  text occurring in the <small><code>CDName</code></small> element
  corresponds to the</span> name of the Content Dictionary.
</p>

</dd>


<dt><small><code>Description</code></small></dt>
<dd><p>The text occurring in the <small><code>Description</code></small>
  element is used to give a description of the enclosing element, which
  could be a symbol or the entire Content Dictionary. The content of
  this element can be any <acronym>XML</acronym> text.</p>
  
</dd>

<dt><small><code>CDReviewDate</code></small></dt><dd><p>The
<span class="del">
  text occurring in the <small><code>CDReviewDate</code></small> element
  corresponds to the earliest possible
</span>
review date of the Content
  Dictionary. <span class="del">The date formats should be ISO-compliant in the form
  YYYY-MM-DD, e.g. 1953-09-26.</span></p>
  
</dd>

<dt><small><code>CDDate</code></small></dt><dd><p>The
<span class="del">
text occurring in the <small><code>CDDate</code></small> element
  corresponds to the
</span>
revision date of this version of the Content Dictionary.
<span class="del">
  The date formats should be ISO-compliant in the form YYYY-MM-DD,
  e.g. 1953-09-26.
</span>
</p>
  
</dd>

<dt><small><code>CDVersion</code></small></dt><dd>
   
   

<p class="new">The major version number of the CD.</p>
   <p class="del">The text occurring in the <small><code>CDVersion</code></small> element corresponds to
   the version number of the current version of a Content Dictionary.
   It should be a non negative integer.</p>

<p class="del">In CDs that do not have status <i>experimental</i>, CD version
  numbering should adhere to the following. The version number should
  be a positive integer.</p>

<p class="del">No changes can be
  introduced that invalidate objects built with previous versions.
  Any change that influences phrasebook compliance, like adding a new
  symbol to a Content Dictionary, is considered a major change.
  and should be reflected by an increase in this version number. Other
  changes, like adding an example or correcting a description, are
  considered minor changes. For minor changes the version number is not
  changed, but an increase should be made to the revision number, as
  described below. A change such as removing a symbol should
  not be made, instead a new CD, with a different name should be
  produced, so as not to invalidate existing objects.</p>

<p class="del">As detailed in chapter <a href="#cha_comp">Chapter 5</a>, <i>OpenMath</i> compliant applications
  state which versions of which CDs they support.

  <i>Experimental</i> CDs may expect to have changes such as adding
  or removing symbols as they are developed, without requiring the name
  of the CD to be changed.</p>

  
</dd>

<dt><small><code>CDRevision</code></small></dt><dd>
    <p class="del">The text
   occurring in the <small><code>CDRevision</code></small> element
   corresponds to the revision, or <span>"minor version number"</span> of the
   current version of a Content Dictionary.  It should be a non
   negative integer.</p>

<p class="del">Minor changes to a CD that do not warrant the release of a CD with
   an increased version number should be marked by increasing the
   revision number specified in this field. When the Cd Version number
   is increased, the Revision number is normally reset to zero.</p>

<p class="new">The minor version number of the
CD.</p>
  
</dd>

<dt><small><code>CDStatus</code></small></dt><dd><p>The
<span class="del">
  text occurring in the <small><code>CDStatus</code></small> element
  corresponds to the
</span>
status of the Content Dictionary.
<span class="del">
, and can be either
  <small><code>official</code></small> (approved by the <i>OpenMath</i> Society
  according to the procedure outlined in <a href="#cdapprove">Section 4.5</a>),
  <small><code>experimental</code></small> (currently being tested),
  <small><code>private</code></small> (used by a private group of <i>OpenMath</i>
  users) or <small><code>obsolete</code></small> (an obsolete Content
  Dictionary kept only for archival purposes).
</span>
</p>
  
</dd>

<dt class="new"><small><code>CDBase</code></small></dt><dd class="new"><p>The
CD base of the CD.

</p>
</dd>

<dt><small><code>CDURL</code></small></dt><dd><p>The
  text occurring in the <small><code>CDURL</code></small> element should
  be a valid URL where the source file for the Content Dictionary
  encoding can be found (if it exists). The filename should conform to
  ISO 9660 <a href="#iso9660">[11]</a>.

</p>

</dd>

<dt><small><code>CDUses</code></small></dt><dd>
    <p>The content of this element should
   be a series of <small><code>CDName</code></small> elements, each
   naming a Content Dictionary used in the
   <small><code>Example</code></small> and <small><code>FMP</code></small>s
   of the current Content Dictionary. <span class="new">This element is optional and deprecated since
the information can easily be extracted automatically.</span></p>
   
 </dd>

<dt><small><code>CDComment</code></small></dt><dd><p>The
   content of this element should be text that does not convey any
   crucial information concerning the current Content Dictionary. It
   can be used in the Content Dictionary header to report the author
   of the Content Dictionary and to log change information. In the
   body of the Content Dictionary, it can be used to attach extra
   remarks to certain symbols.</p> 
   
 </dd>

<dt class="new"><small><code>CDDefinition</code></small></dt><dd class="new"><p>The
element which contains the definition of an individual symbol.
</p>
  
</dd>

<dt><small><code>Name</code></small></dt><dd><p>The
<span class="del">
  text occurring in the <small><code>Name</code></small> element
  corresponds to the
</span>
name of a symbol.
<span class="del">
, and is specified as in <a href="#cha_enco">Chapter 3</a>.
</span>
</p>
  
</dd>


<dt class="new"><small><code>Role</code></small></dt>
<dd class="new"><p>The role of a symbol: it must be one of
<i>binder</i>, 
<i>attribution</i>, 
<i>semantic-attribution</i>, 
<i>error</i>, 
<i>application</i>, or
<i>constant</i>. 
</p>
</dd>


<dt><small><code>Example</code></small></dt>
<dd>
 <p>The text occurring in the
<small><code>Example</code></small> element is used to give examples of
the enclosing symbol, and can be any <acronym>XML</acronym> text. In addition to text
the element may contain examples as <acronym>XML</acronym> encoded <i>OpenMath</i>, inside
<small><code>OMOBJ</code></small> elements.  Note that
<small><code>Examples</code></small> must be with respect to some symbol
and cannot be <span>"loose"</span> in the Content Dictionary.</p>
  
</dd>

<dt><small><code>CMP</code></small></dt>
<dd><p>

<span class="del">
The text occurring in the <small><code>CMP</code></small> element
  corresponds to a property of the symbol. An application which says
  it understands a Content Dictionary symbol need not understand a
  commented property of the symbol.
</span>
<span class="new">
A Commented Mathematical Property.
</span>

</p>
  
</dd>

<dt><small><code>FMP</code></small></dt><dd><p>

<span class="del">
The
  content of the <small><code>FMP</code></small> element also corresponds
  to a property<sup><a href="#ftn_theory">*2</a></sup> of the
  symbol, however the content of this element must be a valid <i>OpenMath</i>
  object in the <acronym>XML</acronym> encoding.  An application which says it
  understands a Content Dictionary symbol need not understand a formal
  property of the symbol.
</span>
<span class="new">
A Formal Mathematical Property.  It may take an optional
<small><code>kind</code></small> attribute.
</span>

</p><p class="footnote"><a name="ftn_theory" id="ftn_theory"/><sup>*2</sup>It corresponds to a
  theorem of a theory in some formal system.</p>
</dd>

</dl>
</div>
</div>


<div><h3 name="addfiles" id="addfiles">4.4 Additional Information</h3>



  <p>Content Dictionaries contain just one part of the
information that can be associated to a symbol in order to <span class="del">stepwise</span> define its meaning and its
functionality. <i>OpenMath</i> Signature <span class="del">files</span><span class="new">dictionaries</span>, CDGroups, and possibly <span class="del">files</span><span class="new">collections</span> of extra mathematical properties, are
used to convey the different aspects that as a whole make up a mathematical
definition.</p>

<div><h4 name="sigfiles" id="sigfiles">4.4.1 Signature
<span class="del">Files</span><span class="new">Dictionaries</span>
</h4>





<p><i>OpenMath</i> may be used with any type system. One just needs to produce
a Content Dictionary which gives the constructors of the type system,
and then one may build <i>OpenMath</i> objects representing types in the given
type system. These are typically associated with <i>OpenMath</i> objects via the
<i>OpenMath</i> <b>attribution</b> constructor.</p>

<p>A Small Type System, called STS, has been designed to give
semi-formal signatures to <i>OpenMath</i> symbols and is documented
in <a href="#OM_D132c">[4]</a>.  The signature file given in
<a href="#arith1.sts">Appendix A.3</a> is based on this formalism. Using the
same mechanism, <a href="#OMD132b">[3]</a> shows how pure type
systems can also be employed to assign types to <i>OpenMath</i> symbols.</p>


<div class="del"><h5 name="sec_dtd_sig" id="sec_dtd_sig"> The  DTD Specification of Signature Files</h5>


<p>Signature Files are <acronym>XML</acronym> documents, hence a valid Signature
 File should
<ul>
<li><p>be valid according to the <acronym>DTD</acronym> given in
  <a href="#fig_omcdsig.dtd">Figure </a>,</p></li>
<li><p>adhere to the extra conditions on the content of the elements
  given in <a href="#sect_sigpcdata">Section 4.4.1.1</a>.</p></li>
</ul></p>


<p>Signature files have a header which specifies the Content
Dictionary and determines the type system being used and the Content
Dictionary which contains the symbols for which the signatures are
being given. Each signature takes the form of an <acronym>XML</acronym> encoded <i>OpenMath</i>
object.</p>


<div class="del"><a name="fig_omcdsig.dtd" id="fig_omcdsig.dtd"/>
    
<div class="literal"><pre>
&lt;!-- omcdsig.dtd --&gt;
&lt;!-- ********************************************* --&gt;
&lt;!--                                               --&gt;
&lt;!-- DTD for OpenMath CD Signatures                --&gt;
&lt;!-- (c) EP24969 the ESPRIT OpenMath Consortium    --&gt;
&lt;!-- David Carlisle 1999-04-13                     --&gt;
&lt;!-- David Carlisle 1999-05-21                     --&gt;
&lt;!-- David Carlisle 1999-06-22                     --&gt;
&lt;!--                                               --&gt;
&lt;!--                                               --&gt;
&lt;!-- ********************************************* --&gt;

&lt;!-- include dtd for OM objects --&gt;
&lt;!ENTITY  % omobjectdtd SYSTEM "omobj.dtd" &gt;
%omobjectdtd;

&lt;!ELEMENT CDSComment      (#PCDATA) &gt;
&lt;!ELEMENT CDSReviewDate    (#PCDATA) &gt;
&lt;!ELEMENT CDSStatus    (#PCDATA) &gt;

&lt;!ELEMENT CDSignatures   (CDComment |CDSComment | CDSReviewDate |
                         CDSStatus | Signature )* &gt;

&lt;!ATTLIST CDSignatures cd CDATA #REQUIRED
                       type CDATA #REQUIRED &gt;

&lt;!ELEMENT Signature      (OMOBJ?) &gt;

&lt;!ATTLIST  Signature  name CDATA #REQUIRED &gt;

&lt;!-- end of DTD for OM CD Signatures --&gt;
</pre></div>
<div class="caption">
  Figure  DTD Specification of Signature Files</div></div>
</div>

<div><h5 name="sect_sigpcdata" id="sect_sigpcdata">4.4.1.1 <span class="del">Further
Requirements</span><span class="new">Abstract Specification</span>
 of a Signature Dictionary</h5>




<p class="new">Signature dictionaries
have a header which specifies the
type system being used and the Content
Dictionary containing the symbols for which signatures are
being given. Each signature takes the form of an <i>OpenMath</i>
object in an appropriate encoding.</p>

<p class="del">The notion of being a valid Signature File is stronger than
merely being successfully parsed by the <acronym>DTD</acronym> in
<a href="#fig_omcdsig.dtd">Figure </a>.  In this section we define exactly
the format of the elements used in Signature Files. Several of the
requirements are the same as those on elements of Contents
Dictionaries.</p>


<dl class="del">
<dt><small><code>CDSignatures</code></small></dt><dd><p>The
  outermost element of the Signature is characterized by two
  required attributes that identify the type system and the Content
  Dictionary whose signatures are defined. The value of the <acronym>XML</acronym>
  attribute <small><code>type</code></small> is the name of the Content
  Dictionary or of the CDGroup (see <a href="#ssec_cdgroups">Section 4.4.2</a>)
  that represents the type system. The value of the <acronym>XML</acronym> attribute
  <small><code>cd</code></small> is the name of the Content Dictionary
  whose symbols are assigned signatures in this Signature File. Both
  values are of the form specified in <a href="#cha_enco">Chapter 3</a>.</p>
  
</dd>

<dt><small><code>CDSComment</code></small></dt><dd><p>See
  <small><code>CDComment</code></small> in <a href="#sect_pcdata">Section 4.3.2</a>.</p>

</dd>


<dt><small><code>CDSreviewDate</code></small></dt><dd><p>The
  text occurring in the <small><code>CDSReviewDate</code></small> element
  corresponds to the earliest possible revision date of the Signature
  File.  The date formats should be ISO-compliant in the form
  YYYY-MM-DD, e.g. 2000-02-29.</p>
  </dd>


<dt><small><code>CDSStatus</code></small></dt><dd><p>The
  text occurring in the <small><code>CDSStatus</code></small> element
  corresponds to the status of the Signature File, and can be either
  <small><code>official</code></small> (approved by the <i>OpenMath</i> Society
  according to the procedure outlined in <a href="#cdapprove">Section 4.5</a>),
  <small><code>experimental</code></small> (currently being tested),
  <small><code>private</code></small> (used by a private group of <i>OpenMath</i>
  users) or <small><code>obsolete</code></small> (an obsolete Signature
  File kept only for archival purposes).</p>
  
</dd>

<dt><small><code>Signature</code></small></dt>
<dd>

<p>The content of the <small><code>Signature</code></small> element
  has to be a valid <i>OpenMath</i> object in <acronym>XML</acronym> encoding as specified in
  <a href="#cha_enco">Chapter 3</a>. Additionally, the object must represent
  a valid type in the type system identified by the <acronym>XML</acronym> attribute
  <small><code>type</code></small> of the
  <small><code>CDSignature</code></small> element. See <a href="#sect_sigex">Section 4.4.1.3</a> for examples.</p>

</dd>

</dl>

<ol class="new">
<li><p>
A <i>type definition</i>: the
  name of the Content
  Dictionary or of the CDGroup (cfg. <a href="#ssec_cdgroups">Section 4.4.2</a>)
  that represents the type system being used.

</p></li>
<li><p>
A <i>CD name</i>: the name of the CD for which
signatures are being defined.

</p></li>
<li><p>
A <i>review date</i>
as defined in <a href="#sect_func">Section 4.2</a>.
</p></li>
<li><p>
A <i>status</i>:
as defined in <a href="#sect_func">Section 4.2</a>.
</p></li>
<li><p>
A series of <i>signatures</i> which are <i>OpenMath</i> objects in
some encoding.  The objects must represent types as defined by the
type definition.
</p></li>
</ol>

</div>


<div class="new"><h5 name="sect_sigschema" id="sect_sigschema">4.4.1.2 A Relax NG Schema for a Signature Dictionary</h5>


<p>
The following is a reference encoding of a signature dictionary,
designed to be used with Content Dictionaries in the <acronym>XML</acronym> encoding.
</p>

<div class="literal"><pre>
<span style="color:brown;"># *********************************************</span>
<span style="color:brown;"># </span>
<span style="color:brown;"># Relax NG Schema for OpenMath CD Signatures</span>
<span style="color:brown;"># </span>
<span style="color:brown;"># *********************************************</span>

<span style="font-weight:bold;">default</span> <span style="font-weight:bold;">namespace</span> = "http://www.openmath.org/OpenMathCDS"

<span style="font-weight:bold;">include</span> "openmath2.rnc" { <a name="rncsect_sigschemastart" style="color:blue;">start</a> = <a href="#rncsect_sigschemaCDSignatures">CDSignatures</a> }

<a name="rncsect_sigschemaCDSComment" style="color:blue;">CDSComment</a> = <span style="font-weight:bold;">element</span> CDSComment { <span style="font-weight:bold;">text</span> }
<a name="rncsect_sigschemaCDSReviewDate" style="color:blue;">CDSReviewDate</a> = <span style="font-weight:bold;">element</span> CDSReviewDate { <span style="font-weight:bold;">text</span> }
<a name="rncsect_sigschemaCDSStatus" style="color:blue;">CDSStatus</a> = <span style="font-weight:bold;">element</span> CDSStatus {
   "official" |
   "experimental" |
   "private" |
   "obsolete"}
<a name="rncsect_sigschemaCDSignatures" style="color:blue;">CDSignatures</a> =
  <span style="font-weight:bold;">element</span> CDSignatures {
    <a href="#rncsect_sigschemaattlist.CDSignatures">attlist.CDSignatures</a>,
    (<a href="#rncsect_sigschemaCDSComment">CDSComment</a>)*,
    (<a href="#rncsect_sigschemaCDSReviewDate">CDSReviewDate</a>? &amp; <a href="#rncsect_sigschemaCDSStatus">CDSStatus</a>),
    (<a href="#rncsect_sigschemaCDSComment">CDSComment</a> | <a href="#rncsect_sigschemaSignature">Signature</a>)*
  }
<a name="rncsect_sigschemaattlist.CDSignatures" style="color:blue;">attlist.CDSignatures</a> =
  <span style="font-weight:bold;">attribute</span> cd { <span style="font-weight:bold;">xsd:NCName</span> },
  <span style="font-weight:bold;">attribute</span> type { <span style="font-weight:bold;">xsd:NCName</span> }
<a name="rncsect_sigschemaSignature" style="color:blue;">Signature</a> = <span style="font-weight:bold;">element</span> Signature { <a href="#rncsect_sigschemaattlist.Signature">attlist.Signature</a>, <a href="#rncOMOBJ">OMOBJ</a>? }
<a name="rncsect_sigschemaattlist.Signature" style="color:blue;">attlist.Signature</a> = <span style="font-weight:bold;">attribute</span> name { <span style="font-weight:bold;">text</span> }


</pre></div>

</div>


<div><h5 name="sect_sigex" id="sect_sigex">4.4.1.3 Examples</h5>


<p>An example of a signature dictionary for the type system STS and the
<small><code>arith1</code></small> Content Dictionary is given in <a href="#arith1.sts">Appendix A.3</a>. Each signature entry is similar to the
following one for the <i>OpenMath</i> symbol <small><code>&lt;OMS cd="arith1"
name="plus"/&gt;</code></small>: <div class="literal"><pre>
&lt;Signature name="plus"&gt;
&lt;OMOBJ version="2.0"&gt;
 &lt;OMA&gt;
  &lt;OMS name="mapsto" cd="sts"/&gt;
  &lt;OMA&gt;
   &lt;OMS name="nassoc" cd="sts"/&gt; 
   &lt;OMV name="AbelianSemiGroup"/&gt;
  &lt;/OMA&gt;
  &lt;OMV name="AbelianSemiGroup"/&gt;
 &lt;/OMA&gt;
&lt;/OMOBJ&gt;
&lt;/Signature&gt;
</pre></div>
</p>
</div>



</div>

<div><h4 name="ssec_cdgroups" id="ssec_cdgroups">4.4.2 CDGroups</h4>




  <p>The CD
Group mechanism is a convenience mechanism for identifying collections
of CDs.  A CD Group file is an <acronym>XML</acronym> document used in the (static or
dynamic) negotiation phase where communicating applications declare
and agree on the Content Dictionaries which they process.  It is a
complement, or an alternative, to the individual declaration of
Content Dictionaries understood by an application.  Note that CD
Groups do <i>not</i> affect the <i>OpenMath</i> objects themselves.
Symbols in an object always refer to content dictionaries, not
groups.</p>

 <p>For an application to declare that
it <span>"understands CDGroup G"</span> is exactly equivalent to, and
interchangeable with, the declaration that it <span>"understands
Content Dictionaries <m:math><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:math>,
<m:math><m:msub><m:mi>x</m:mi><m:mn>2</m:mn></m:msub></m:math>, 
<span>&#8230;</span> 
<m:math><m:msub><m:mi>x</m:mi><m:mi>n</m:mi></m:msub></m:math>"</span>, where
<m:math><m:msub><m:mi>x</m:mi><m:mn>1</m:mn></m:msub></m:math>, 
<span>&#8230;</span> 
<m:math><m:msub><m:mi>x</m:mi><m:mi>n</m:mi></m:msub></m:math> are the members of
CDGroup G.</p>


<div><h5 name="sec_dtd_cdg" id="sec_dtd_cdg">4.4.2.1 The Specification of CDGroups</h5>



<p>CDGroups are <acronym>XML</acronym> documents, hence  a valid  CDGroup
 should 
<ul>
<li><p>be valid according to the <span class="del">DTD</span><span class="new">schema</span> given in
  <a href="#fig_cdgroup.dtd">Figure 5.1</a>,</p></li>
<li><p>adhere to the extra conditions on the content of the elements
  given in <a href="#sect_cdgpcdata">Section 4.4.2.2</a>.</p></li>
</ul>
</p>

<p>Apart from some header information such as <small><code>CDGroupName</code></small> and
<small><code>CDGroup</code></small> version, a CDGroup is simply an unordered list of
CDs, identified by name and optionally version number and URL.</p>


<div class="figure"><a name="fig_cdgroup.dtd" id="fig_cdgroup.dtd"/>
    
<div class="literal"><pre>

<span style="color:brown;"># Schema for OpenMath CD groups</span>

<span style="color:brown;"># info on the CD group itself</span>

<span style="font-weight:bold;">default</span> <span style="font-weight:bold;">namespace</span> = "http://www.openmath.org/OpenMathCDG"

<a name="rncsec_dtd_cdgCDGroupName" style="color:blue;">CDGroupName</a> = <span style="font-weight:bold;">element</span> CDGroupName { <span style="font-weight:bold;">xsd:NCName</span> }
<a name="rncsec_dtd_cdgCDGroupVersion" style="color:blue;">CDGroupVersion</a> = <span style="font-weight:bold;">element</span> CDGroupVersion { <span style="font-weight:bold;">xsd:nonNegativeInteger</span> }
<a name="rncsec_dtd_cdgCDGroupRevision" style="color:blue;">CDGroupRevision</a> = <span style="font-weight:bold;">element</span> CDGroupRevision { <span style="font-weight:bold;">xsd:nonNegativeInteger</span> }
<a name="rncsec_dtd_cdgCDGroupURL" style="color:blue;">CDGroupURL</a> = <span style="font-weight:bold;">element</span> CDGroupURL { <span style="font-weight:bold;">text</span> }
<a name="rncsec_dtd_cdgCDGroupDescription" style="color:blue;">CDGroupDescription</a> = <span style="font-weight:bold;">element</span> CDGroupDescription { <span style="font-weight:bold;">text</span> }
<span style="color:brown;"># info on the CDs in the group</span>
<a name="rncsec_dtd_cdgCDComment" style="color:blue;">CDComment</a> = <span style="font-weight:bold;">element</span> CDComment { <span style="font-weight:bold;">text</span> }
<a name="rncsec_dtd_cdgCDGroupMember" style="color:blue;">CDGroupMember</a> =
  <span style="font-weight:bold;">element</span> CDGroupMember {
    <a href="#rncsec_dtd_cdgCDComment">CDComment</a>?, <a href="#rncsec_dtd_cdgCDName">CDName</a>, <a href="#rncsec_dtd_cdgCDVersion">CDVersion</a>?, <a href="#rncsec_dtd_cdgCDURL">CDURL</a>?
  }
<a name="rncsec_dtd_cdgCDName" style="color:blue;">CDName</a> = <span style="font-weight:bold;">element</span> CDName { <span style="font-weight:bold;">xsd:NCName</span> }
<a name="rncsec_dtd_cdgCDVersion" style="color:blue;">CDVersion</a> = <span style="font-weight:bold;">element</span> CDVersion { <span style="font-weight:bold;">xsd:nonNegativeInteger</span> }
<a name="rncsec_dtd_cdgCDURL" style="color:blue;">CDURL</a> = <span style="font-weight:bold;">element</span> CDURL { <span style="font-weight:bold;">text</span> }
<span style="color:brown;"># structure of the group</span>
<a name="rncsec_dtd_cdgCDGroup" style="color:blue;">CDGroup</a> =
  <span style="font-weight:bold;">element</span> CDGroup {
    <a href="#rncsec_dtd_cdgCDGroupName">CDGroupName</a>,
    <a href="#rncsec_dtd_cdgCDGroupVersion">CDGroupVersion</a>,
    <a href="#rncsec_dtd_cdgCDGroupRevision">CDGroupRevision</a>?,
    <a href="#rncsec_dtd_cdgCDGroupURL">CDGroupURL</a>,
    <a href="#rncsec_dtd_cdgCDGroupDescription">CDGroupDescription</a>,
    (<a href="#rncsec_dtd_cdgCDGroupMember">CDGroupMember</a> | <a href="#rncsec_dtd_cdgCDComment">CDComment</a>)*
  }
<a name="rncsec_dtd_cdgstart" style="color:blue;">start</a> = <a href="#rncsec_dtd_cdgCDGroup">CDGroup</a>


</pre></div>

<div class="caption">
  Figure 5.1 <span class="del">DTD</span><span class="new">Relax NG</span> Specification of CDGroups</div></div>
</div>

<div><h5 name="sect_cdgpcdata" id="sect_cdgpcdata">4.4.2.2 Further Requirements of a CDGroup</h5>





<p>The notion of being a valid CDGroup implies that the following
requirements on the content of the elements described by the <span class="del">DTD</span><span class="new">schema</span> given in
  <a href="#sect_sigschema">Section 4.4.1.2</a> are also met.</p>


<dl>
<dt><small><code>CDGroup</code></small></dt>
<dd><p>The <acronym>XML</acronym> element <small><code>CDGroup</code></small> is the outermost
  element in a CDGroup document.</p>
  
</dd>

<dt><small><code>CDGroupName</code></small></dt>
<dd>

<p>The text occurring in the <small><code>CDGroupName</code></small>
  element corresponds to the name of the CDGroup. For the syntactical
  requirements, see <small><code>CDName</code></small> in <a href="#sect_pcdata">Section 4.3.2</a>.</p>
  
</dd>

<dt class="new"><small><code>CDGroupVersion</code></small></dt>
<dt class="new"><small><code>CDGroupRevision</code></small></dt>
<dd class="new">
<p>The text occurring in these elements contains the major and minor
version numbers of the CDGroup.
</p>
</dd>

<dt><small><code>CDGroupURL</code></small></dt>
<dd><p>The text occurring in the <small><code>CDGroupURL</code></small>
  element identifies the location of the CDGroup file, not necessarily
  of the member Content Dictionaries. For the syntactical
  requirements, see <small><code>CDURL</code></small> in <a href="#sect_pcdata">Section 4.3.2</a>.</p>
  
</dd>

<dt><small><code>CDGroupDescription</code></small></dt>
<dd><p>The text occurring in the
<small><code>CDGroupDescription</code></small> element describes the
mathematical area of the CDGroup.</p>
  
</dd>

<dt><small><code>CDGroupMember</code></small></dt>
<dd><p>The <acronym>XML</acronym> element <small><code>CDGroupMember</code></small>
  encloses the data identifying each member of the CDGroup.</p>
  
</dd>

<dt><small><code>CDName</code></small></dt><dd><p>The
  text occurring in the <small><code>CDName</code></small> element
  corresponds to the name of a Content Dictionary in the CDGroup. For
  the syntactical requirements, see <small><code>CDName</code></small> in
  <a href="#sect_pcdata">Section 4.3.2</a>.</p>
  
</dd>

<dt><small><code>CDVersion</code></small></dt><dd><p>The
  text occurring in the <small><code>CDVersion</code></small> element
  identifies which version of the Content Dictionary is to be taken as
  member of the CDGroup. This element is optional. In case it is
  missing, the latest version is the one included in the CDGroup.  For
  the syntactical requirements, see <small><code>CDVersion</code></small>
  in <a href="#sect_pcdata">Section 4.3.2</a>.</p>
  
</dd>

<dt><small><code>CDURL</code></small></dt>
<dd>

<p>The text occurring in the <small><code>CDURL</code></small> element
  identifies the location of the Content Dictionary to be taken as
  member of the CDGroup. This element is optional. In case it is
  missing, the location of the CDGroup identified by the element
  <small><code>CDGroupURL</code></small> is assumed.  For the syntactical
  requirements, see <small><code>CDURL</code></small> in <a href="#sect_pcdata">Section 4.3.2</a>.</p>
  
</dd>

<dt><small><code>CDComment</code></small></dt><dd><p>See
  <small><code>CDComment</code></small> in <a href="#sect_pcdata">Section 4.3.2</a>.</p>



</dd>

</dl>








</div>
</div>
</div>

<div><h3 name="cdapprove" id="cdapprove">4.5 Content Dictionaries Reviewing Process</h3>




<p>The <i>OpenMath</i> Society is responsible  for implementing a
review and referee process to assess the accuracy of the mathematical
content of Content Dictionaries.  The status (see <small><code>CDStatus</code></small>)
and/or the version number (see <small><code>CDVersion</code></small> ) of a Content
Dictionary may change as a result of this review process.</p>
</div>
</div>





<div><h2 name="cha_comp" id="cha_comp">
  Chapter 5<br/><i>OpenMath</i> Compliance</h2>



<p>Applications that meet the requirements specified in this chapter may
label themselves as <i>OpenMath compliant</i>. <i>OpenMath</i> compliance is
defined so as to maximize the potential for interoperability amongst
<i>OpenMath</i> applications.</p>

<div><h3 name="sec_compl_encoding" id="sec_compl_encoding">5.1 Encodings</h3>

<p>This standard defines two reference encodings for <i>OpenMath</i>, the binary
encoding and <acronym>XML</acronym> encoding,  defined in <a href="#cha_enco">Chapter 3</a>.</p>

<p>As a minimum, an <i>OpenMath</i> compliant application, which accepts or generates
<i>OpenMath</i> objects, <i>must</i> be capable of doing so using  the <acronym>XML</acronym> encoding.
The ability to use other encodings is optional.</p>

<div class="new"><h4 name="sec_compl_xml_encoding" id="sec_compl_xml_encoding">5.1.1 The XML Encoding</h4>


<div><h5 name="sec_compl_xml_encoding_val" id="sec_compl_xml_encoding_val">5.1.1.1 Generating Valid XML</h5>


<p>

All <i>OpenMath</i> objects generated by a compliant <i>OpenMath</i> application must validate
against the Relax NG Schema given in <a href="#app_openmath.rng">Appendix B</a>.

</p>

</div>

<div><h5 name="sec_compl_xml_encoding_float" id="sec_compl_xml_encoding_float">5.1.1.2 Decimal versus Hexadecimal Float Representation</h5>


<p>
In the <acronym>XML</acronym> encoding, floating-point numbers may be defined using
either decimal or hexadecimal notation.  For numerical values, plus the
two infinities, the two representations may be used interchangeably since
there is a one-to-one correspondence between them.  The exceptional case
is that of <i>not a number</i> (NaN) which is defined in the
IEEE standard <a href="#ieee754_85">[6]</a> to be any number whose
exponent has the maximum possible value (in this case the exponent is 11
bits so the maximum value is 2047) and whose mantissa is non-zero.  The
standard explicitly notes the use of the 52 bits in the mantissa (and
also the sign bit) to store information about how the NaN was generated
in a system-specific way.  Thus in some cases the exact representation
of the NaN is significant.
</p>

<p>
The semantics of the <i>OpenMath</i> object
<small><code>&lt;OMF dec="NaN"/&gt;</code></small> is that it represents
<i>any</i> NaN, and a phrasebook may substitute any
specific NaN value when processing it.  The semantics of a NaN in
hexadecimal notation however, such as 
<small><code>&lt;OMF hex="FFF8000000000001"/&gt;</code></small>,
is that this is a specific NaN, as distinct from all others.
If a phrasebook author substitutes
another value for the NaN or maps all NaNs to a single object then he or
she must recognise that this process is not an identity transformation. 
</p>


</div>
</div>

</div>

<div><h3 name="sec_compl_omforeign" id="sec_compl_omforeign">5.2 <i>OpenMath</i> Foreign Objects</h3>


<p> An <i>OpenMath</i> Foreign Object may be attributed with a string indicating
the format of its contents.  Although this information is optional, an
<i>OpenMath</i>-compliant application which generates <i>OpenMath</i> Foreign Objects should
always include it where possible (see the discussion of MathML conversion
below for an example of a situation where it is not always possible).  It is
recommended that, where the contents of the Foreign Object are in an
<acronym>XML</acronym> dialect, the namespace <a href="#xmlns">[14]</a> of the
<acronym>XML</acronym> dialect is used as the value of the encoding.  For example
(using the <acronym>XML</acronym> encoding):
<div class="literal"><pre>&lt;OMATTR&gt;
  &lt;OMATP&gt;
    &lt;OMS cd="annotations1" name="description"/&gt;
    &lt;OMFOREIGN encoding="http://www.w3.org/1999/xhtml"&gt;
      &lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;
        &lt;head&gt;&lt;title&gt;E&lt;/title&gt;&lt;/head&gt;
        &lt;body&gt;
          &lt;p&gt;
            The base of the natural logarithms, approximately 2.71828.
          &lt;/p&gt;
        &lt;/body&gt;
      &lt;/html&gt;
    &lt;/OMFOREIGN&gt;
  &lt;/OMATP&gt;
  &lt;OMS cd="nums1" name="e"/&gt;
&lt;/OMATTR&gt;</pre></div>
Where the contents of the Foreign Object is a format other than <acronym>XML</acronym>,
it is recommended that its MIME type <a href="#rfc2046">[2]</a> is
used as the value of the encoding.
For example (again using the <acronym>XML</acronym> encoding):
<div class="literal"><pre>&lt;OMATTR&gt;
  &lt;OMATP&gt;
    &lt;OMS cd="annotations1" name="description"/&gt;
    &lt;OMFOREIGN encoding="text/latex"&gt;
      \documentclass{article}
      \begin{document}
      \title{E}
      \maketitle
      The base of the natural logarithms, approximately 2.71828.
      \end{document}
    &lt;/OMFOREIGN&gt;
  &lt;/OMATP&gt;
  &lt;OMS cd="nums1" name="e"/&gt;
&lt;/OMATTR&gt;</pre></div>
</p>

<p> An exception to the above guidelines occurs when a MathML object
is converted to <i>OpenMath</i>.  MathML also has an
<small><code>encoding</code></small> attribute which can appear in various
places and whose format is a string.  Only two values are predefined,
<small><code>MathML-Content</code></small> and
<small><code>MathML-Presentation</code></small>, and these may appear in
the resulting <i>OpenMath</i> object despite the fact that they are not namespaces
as recommended above. For example the following MathML expression:
<div class="literal"><pre>&lt;semantics xmlns="xmlns="http://www.w3.org/1998/Math/MathML"&gt;
  &lt;apply&gt;
    &lt;sin/&gt;
    &lt;ci&gt;x&lt;/ci&gt;
  &lt;/apply&gt;
  &lt;annotation encoding="MathML-Presentation"&gt;
    &lt;math&gt;
      &lt;mi&gt;sin&lt;/mi&gt;&lt;mfenced&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mfenced&gt;
    &lt;/math&gt;
  &lt;/annotation&gt;
&lt;/semantics&gt;</pre></div>
is equivalent to the <i>OpenMath</i> expression:
<div class="literal"><pre>&lt;OMATTR&gt;
  &lt;OMATP&gt;
    &lt;OMS cd="altenc" name="MathML_encoding"/&gt;
    &lt;OMFOREIGN encoding="MathML-Presentation"&gt;
      &lt;math xmlns="http://www.w3.org/1998/Math/MathML"&gt;
        &lt;mi&gt;sin&lt;/mi&gt;&lt;mfenced&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;/mfenced&gt;
      &lt;/math&gt;
    &lt;/OMFOREIGN&gt;
  &lt;/OMATP&gt;
  &lt;OMA&gt;
   &lt;OMS cd="transc1" name="sin"/&gt;
   &lt;OMV name="x"/&gt;
  &lt;/OMA&gt;
&lt;/OMATTR&gt;</pre></div>

Since in MathML the <small><code>encoding</code></small> attribute is in
effect optional (its default value is the empty string), a convertor
program may not in fact be able to provide a value for the <i>OpenMath</i>
<small><code>encoding</code></small> attribute.  This is unfortunate but
unavoidable.

</p>

</div>

<div><h3 name="sec_compl_cd" id="sec_compl_cd">5.3 Content Dictionaries</h3>


<p>An <i>OpenMath</i> compliant application <i>must</i> be able
to support the error Content Dictionary defined in <a href="#errorcd">Appendix A.5</a>.</p>

<p>A compliant application must declare the names and version numbers of
the Content Dictionaries that it supports. Equivalently it may declare
the Content Dictionary Group (or groups) and major version number (not
revision number), rather than listing individual Content Dictionaries.
Applications that support all Content Dictionaries (e.g. renderers)
should refer to the implicit CD Group <small><code>all</code></small>.</p>

<p>If a compliant application supports a Content Dictionary then it must
explicitly declare any symbols in the Content Dictionaries that are not
supported. Phrasebooks are encouraged to support every symbol in the 
Content Dictionaries.</p>

<p>Symbols which are not listed as unsupported are
<i>supported</i> by the application. The meaning of
<i>supported</i> will depend on the application
domain. For example an <i>OpenMath</i> renderer should provide a default display
for any <i>OpenMath</i> object that only references supported symbols, whereas a
Computer Algebra System will be expected to map such an object to a
suitable internal representation, in this system, of this mathematical
object. It is expected that the application's
<i>phrasebooks</i> for supported Content Dictionaries
will be constructed such that properties of the symbol expressed in the
Content Dictionary are respected as far as possible for the given
application domain. However <i>OpenMath</i> compliance does
<i>not</i> imply any guarantee by the <i>OpenMath</i> Society on
the accuracy of these representations.</p>


<p>Content Dictionaries available from the official <i>OpenMath</i> repository
at www.openmath.org need only be referenced by name, other Content
Dictionaries <i>should</i> be referenced <span class="del">by the URL declared in the
<small><code>CDURL</code></small> field of the Dictionary. This URL may
be used to retrieve the Content Dictionary.</span> <span class="new"/> using the
<small><code>CDBase</code></small> and the
<small><code>CDName</code></small>.  </p>

<p>When receiving an <i>OpenMath</i> symbol, e.g. <m:math><m:mi>s</m:mi></m:math>,
 that is not 
<span class="del">supported from</span>
<span class="new">defined in</span>
a supported Content Dictionary, a
 compliant application will act as if it had received the <i>OpenMath</i> object
 <m:math display="block"><m:mi mathvariant="bold">error</m:mi><m:mo>(</m:mo><m:mi>unhandled_symbol</m:mi><m:mo separator="true">,</m:mo><m:mi>s</m:mi><m:mo>)</m:mo></m:math> where
 <small><code>unhandled_symbol</code></small> is the symbol from the
 error Content Dictionary.</p>


<p>Similarly if it receives a symbol, e.g. <m:math><m:mi>s</m:mi></m:math>,
from an unsupported Content Dictionary, it will act as if it had
received the <i>OpenMath</i> object <m:math display="block"><m:mi mathvariant="bold">error</m:mi><m:mo>(</m:mo><m:mi>unsupported_cd</m:mi><m:mo separator="true">,</m:mo><m:mi>s</m:mi><m:mo>)</m:mo></m:math></p>

<p>Finally if the compliant application receives a symbol from a
supported Content Dictionary but with an unknown name, then this must
either be an incorrect object, or possibly the object has been built
using a later version of the Content Dictionary. In either case, the
application will act as if it had received the <i>OpenMath</i> object <m:math display="block"><m:mi mathvariant="bold">error</m:mi><m:mo>(</m:mo><m:mi>unexpected_symbol</m:mi><m:mo separator="true">,</m:mo><m:mi>s</m:mi><m:mo>)</m:mo></m:math></p>
</div>

<div><h3 name="sec_comp_lex" id="sec_comp_lex">5.4 Lexical Errors</h3>


<p>The previous section defines the behaviour of a compliant
application upon receiving well formed <i>OpenMath</i> objects containing
unexpected symbols.  This standard does not specify any behaviour for
an application upon receiving ill-formed objects.</p>
</div>


<div><h3 name="sec_compl_om1" id="sec_compl_om1">5.5 <i>OpenMath</i> 1 Objects</h3>

<p>
Compliant <i>OpenMath</i> 2 documents and Content Dictionary files using the
reference <acronym>XML</acronym> encodings must be valid
according to the specified schema, and so will use the namespaces
<small><code>http://www.openmath.org/OpenMath</code></small>
and 
<small><code>http://www.openmath.org/OpenMathCD</code></small>
respectively. Similarly CD Group and Signature files will use
<small><code>http://www.openmath.org/OpenMathCDG</code></small>
and
<small><code>http://www.openmath.org/OpenMathCDS</code></small>.
</p>

<p> Applications may also support <i>OpenMath</i> 1.
<acronym>XML</acronym>-encoded <i>OpenMath</i> 1 documents may be in either the 
<small><code>http://www.openmath.org/OpenMath</code></small>
namespace or in no-namespace (i.e., do not have any xmlns
declarations).
An application may accept either of
these forms. Note however that <i>OpenMath</i>  documents that have a version attribute
should validate against the schema for <i>OpenMath</i> 2 (or later versions) and
so should always use the <i>OpenMath</i> namespace.
<acronym>XML</acronym>-encoded <i>OpenMath</i> 1 CD files, CD Group files and CD Signature
files must be in no-namespace. An <i>OpenMath</i> 2 application may support
these files by implicitly converting the documents to their respective
namespace. Apart from this change of namespace (and the addition of a
version attribute on <small><code>OMOBJ</code></small>) the <i>OpenMath</i> 1
documents should conform to the schema specified in this standard.
</p>

<p>The use of documents in no-namespace should be
restricted to reading existing  <i>OpenMath</i> 1 files.
No <i>OpenMath</i> 2 application should generate documents in this form.
</p>
</div>

</div>

<div class="del"><h2 name="cha_conc" id="cha_conc">
  Chapter <br/>Conclusion</h2>



<p>The goal of this document is to define the <i>OpenMath</i> 2 standard. The issues
  addressed by the <i>OpenMath</i> 2 standard are:
  <ul>
    <li><p>Informal and formal definition of the <i>OpenMath</i> objects.</p></li>
    <li><p>Informal and formal definition of the notion of Content Dictionaries.</p></li>
  </ul>
  To do this, <i>OpenMath</i> objects are precisely defined and two encodings are described
to represent these objects using <acronym>XML</acronym> and binary
code. Furthermore, the Document Type Definition for validating Content
Dictionaries and <i>OpenMath</i> objects is given.</p>
</div>


<div><h2 name="app_cdfiles" id="app_cdfiles">
  Appendix A<br/>CD Files</h2>


<div><h3 name="app_cdcd" id="app_cdcd">A.1 The <b>meta</b> Content Dictionary</h3>


<div class="literal"><pre>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CD</span>
 xmlns="http://www.openmath.org/OpenMathCD"&gt;<a name="d0t14442"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t14444"/>

     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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t14445"/>


&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t14447"/> meta &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t14448"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDReviewDate</span>&gt;<a name="d0t14450"/>2006-03-30&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDReviewDate</span>&gt;<a name="d0t14451"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDate</span>&gt;<a name="d0t14453"/>2004-03-30&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDate</span>&gt;<a name="d0t14454"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDVersion</span>&gt;<a name="d0t14456"/>3&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDVersion</span>&gt;<a name="d0t14457"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDRevision</span>&gt;<a name="d0t14459"/>0&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDRevision</span>&gt;<a name="d0t14460"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDStatus</span>&gt;<a name="d0t14462"/> official &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDStatus</span>&gt;<a name="d0t14463"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t14465"/> http://www.openmath.org/cd/meta.ocd &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t14466"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDBase</span>&gt;<a name="d0t14468"/>http://www.openmath.org/cd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDBase</span>&gt;<a name="d0t14469"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14471"/> 
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".
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14472"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14474"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14476"/> CD &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14477"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14479"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14480"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14482"/>
The top level element for the Content Dictionary. It just acts
as a container for the elements described below.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14483"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14484"/>


&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14486"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14488"/> CDDefinition &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14489"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14491"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14492"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14494"/>
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. 
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14495"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14496"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14498"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14500"/> CDName &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14501"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14503"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14504"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14506"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14507"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14508"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14510"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14512"/> CDURL &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14513"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14515"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14516"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14518"/>
An optional element.
If it is used it contains a string representing the URL where the
canonical reference copy of this CD is stored.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14519"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14520"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14522"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14524"/> CDBase &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14525"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14527"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14528"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14530"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14531"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14532"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14534"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14536"/> Example &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14537"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14539"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14540"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14542"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14543"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14544"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14546"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14548"/> CDDate &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14549"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14551"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14552"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14554"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14555"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14556"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14558"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14560"/> CDVersion &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14561"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14563"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14564"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14566"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14567"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14568"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14570"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14572"/> CDRevision &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14573"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14575"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14576"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14578"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14579"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14580"/>


&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14582"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14584"/> CDReviewDate &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14585"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14587"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14588"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14590"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14591"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14592"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14594"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14596"/> CDStatus &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14597"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14599"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14600"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14602"/>
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).
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14603"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14604"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14606"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14608"/> CDComment &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14609"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14611"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14612"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14614"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14615"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14616"/>



&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14618"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14620"/> CDUses &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14621"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14623"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14624"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14626"/>
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. 
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14627"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14628"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14630"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14632"/> Description &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14633"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14635"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14636"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14638"/>
An element which contains a string corresponding to the
description of either the CD or the symbol
(depending on which is the enclosing element).
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14639"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14640"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14642"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14644"/> Name &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14645"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14647"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14648"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14650"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14651"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14652"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14654"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14656"/> Role &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14657"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14659"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14660"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14662"/>
An element containing the string  corresponding to the role of
the symbol being defined.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14663"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14664"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14666"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14668"/> CMP &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14669"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14671"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14672"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14674"/>
An optional element (which may be repeated many times) which contains
a string corresponding to a property of the symbol being
defined.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14675"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14676"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14678"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14680"/> FMP &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14681"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14683"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14684"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14686"/>
An optional element which contains an OpenMath Object.
This corresponds to a property of the symbol being defined.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14687"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14688"/>

&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CD</span>&gt;
</pre></div>
</div>

<div><h3 name="arith1.ocd" id="arith1.ocd">A.2 The  <b>arith1</b> Content Dictionary File</h3>
  
  
  
<div class="literal"><pre>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CD</span>
 xmlns="http://www.openmath.org/OpenMathCD"&gt;<a name="d0t14703"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t14705"/>

     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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t14706"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t14708"/> arith1 &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t14709"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDBase</span>&gt;<a name="d0t14711"/>http://www.openmath.org/cd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDBase</span>&gt;<a name="d0t14712"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t14714"/> http://www.openmath.org/cd/arith1.ocd &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t14715"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDReviewDate</span>&gt;<a name="d0t14717"/>2006-03-30&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDReviewDate</span>&gt;<a name="d0t14718"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDStatus</span>&gt;<a name="d0t14720"/> official &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDStatus</span>&gt;<a name="d0t14721"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDate</span>&gt;<a name="d0t14723"/>2004-03-30&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDate</span>&gt;<a name="d0t14724"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDVersion</span>&gt;<a name="d0t14726"/>3&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDVersion</span>&gt;<a name="d0t14727"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDRevision</span>&gt;<a name="d0t14729"/>0&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDRevision</span>&gt;<a name="d0t14730"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14732"/> 
This CD defines symbols for common arithmetic functions.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14733"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14735"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14737"/> lcm &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14738"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14740"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14741"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14743"/> 
The symbol to represent the n-ary function to return the least common
multiple of its arguments.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14744"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t14746"/> lcm(a,b) = a*b/gcd(a,b) &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t14747"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t14749"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t14751"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14753"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t14755"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14757"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="lcm"/&gt;<a name="d0t14759"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14761"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14763"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14764"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14766"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="divide"/&gt;<a name="d0t14768"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14770"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t14772"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14774"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14776"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14777"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14779"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="gcd"/&gt;<a name="d0t14781"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14783"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14785"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14786"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14787"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14788"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t14789"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t14790"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t14792"/>
for all integers a,b |
There does not exist a c&amp;gt;0 such that c/a is an Integer and c/b is an
Integer and lcm(a,b) &amp;gt; c.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t14793"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t14795"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t14797"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t14799"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t14801"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14803"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14805"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14807"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14808"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14810"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="implies"/&gt;<a name="d0t14812"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14814"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="and"/&gt;<a name="d0t14816"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14818"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t14820"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14822"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="Z"/&gt;<a name="d0t14824"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14825"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14827"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t14829"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14831"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="Z"/&gt;<a name="d0t14833"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14834"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14835"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14837"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="not"/&gt;<a name="d0t14839"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t14841"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="exists"/&gt;<a name="d0t14843"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14845"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t14847"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14848"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14850"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="and"/&gt;<a name="d0t14852"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14854"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="gt"/&gt;<a name="d0t14856"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t14858"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t14860"/>0&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t14861"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14862"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14864"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="integer1" name="factorof"/&gt;<a name="d0t14866"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14868"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t14870"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14871"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14873"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="integer1" name="factorof"/&gt;<a name="d0t14875"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14877"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t14879"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14880"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14882"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="lt"/&gt;<a name="d0t14884"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t14886"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14888"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="lcm"/&gt;<a name="d0t14890"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14892"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14894"/>
            &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14895"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14896"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14897"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t14898"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14899"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14900"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t14901"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t14902"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t14903"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14904"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t14906"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14908"/> gcd &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t14909"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14911"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t14912"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14914"/> 
The symbol to represent the n-ary function to return the gcd (greatest
common divisor) of its arguments.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t14915"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t14917"/>
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 &amp;gt; gcd(a,b).

Note that this implies that gcd(a,b) &amp;gt; 0
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t14918"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t14920"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t14922"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t14924"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t14926"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14928"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14930"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14932"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14933"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14935"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="implies"/&gt;<a name="d0t14937"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14939"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="and"/&gt;<a name="d0t14941"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14943"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t14945"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14947"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="Z"/&gt;<a name="d0t14949"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14950"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14952"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t14954"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t14956"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="Z"/&gt;<a name="d0t14958"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14959"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14960"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14962"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="not"/&gt;<a name="d0t14964"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t14966"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="exists"/&gt;<a name="d0t14968"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14970"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t14972"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t14973"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14975"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="and"/&gt;<a name="d0t14977"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14979"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t14981"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14983"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="divide"/&gt;<a name="d0t14985"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t14987"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t14989"/>
            &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14990"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="Z"/&gt;<a name="d0t14992"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14993"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14995"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t14997"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t14999"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="divide"/&gt;<a name="d0t15001"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15003"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t15005"/>
            &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15006"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="Z"/&gt;<a name="d0t15008"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15009"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15011"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="gt"/&gt;<a name="d0t15013"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t15015"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15017"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="gcd"/&gt;<a name="d0t15019"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15021"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15023"/>
            &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15024"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15025"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15026"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15027"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15028"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15029"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15030"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15031"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15032"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15034"/>
gcd(6,9) = 3
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15036"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15038"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15040"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15042"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="gcd"/&gt;<a name="d0t15044"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15046"/> 6 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15047"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15049"/> 9 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15050"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15051"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15053"/> 3 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15054"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15055"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15056"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15057"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15058"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15060"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15062"/> plus &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15063"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15065"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15066"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15068"/>
The symbol representing an n-ary commutative function plus.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15069"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15071"/> for all a,b | a + b = b + a &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15072"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15074"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15076"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15078"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15080"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15082"/>
       &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15084"/>
       &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15086"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15087"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15089"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15091"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15093"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15095"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15097"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15099"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15100"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15102"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15104"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15106"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15108"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15109"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15110"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15111"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15112"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15113"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15114"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15116"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15118"/> unary_minus &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15119"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15121"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15122"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15124"/> 
This symbol denotes unary minus, i.e. the additive inverse.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15125"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15127"/> for all a | a + (-a) = 0 &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15128"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15130"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15132"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15134"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15136"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15138"/>
       &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15140"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15141"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15143"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15145"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15147"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15149"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15151"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15153"/>
           &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="unary_minus"/&gt;<a name="d0t15155"/>
           &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15157"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15158"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15159"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="zero"/&gt;<a name="d0t15161"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15162"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15163"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15164"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15165"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15166"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15168"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15170"/> minus &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15171"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15173"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15174"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15176"/> 
The symbol representing a binary minus function. This is equivalent to
adding the additive inverse.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15177"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15179"/> for all a,b | a - b = a + (-b) &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15180"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15182"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15184"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15186"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15188"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15190"/>
       &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15192"/>
       &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15194"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15195"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15197"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15199"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15201"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="minus"/&gt;<a name="d0t15203"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15205"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15207"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15208"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15210"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15212"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15214"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15216"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="unary_minus"/&gt;<a name="d0t15218"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15220"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15221"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15222"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15223"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15224"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15225"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15226"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15227"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15229"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15231"/> times &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15232"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15234"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15235"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15237"/> 
The symbol representing an n-ary multiplication function.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15238"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15240"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15242"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15244"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15246"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15248"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15250"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15252"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrix"/&gt;<a name="d0t15254"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15256"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15258"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15260"/> 1 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15261"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15263"/> 2 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15264"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15265"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15267"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15269"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15271"/> 3 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15272"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15274"/> 4 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15275"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15276"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15277"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15279"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrix"/&gt;<a name="d0t15281"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15283"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15285"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15287"/> 5 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15288"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15290"/> 6 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15291"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15292"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15294"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15296"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15298"/> 7 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15299"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15301"/> 8 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15302"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15303"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15304"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15305"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15307"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrix"/&gt;<a name="d0t15309"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15311"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15313"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15315"/> 19 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15316"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15318"/> 22 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15319"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15320"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15322"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15324"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15326"/> 43 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15327"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15329"/> 50 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15330"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15331"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15332"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15333"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15334"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15335"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15337"/> for all a,b | a * 0 = 0 and a * b = a * (b - 1) + a &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15338"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15341"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15343"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15345"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15347"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15349"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15351"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15352"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15354"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="and"/&gt;<a name="d0t15356"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15358"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15360"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15362"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15364"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15366"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="zero"/&gt;<a name="d0t15368"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15369"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="zero"/&gt;<a name="d0t15371"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15372"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15374"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15376"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15378"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15380"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15382"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15384"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15385"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15387"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15389"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15391"/>
	  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15393"/>
	  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15395"/>
	  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15397"/>
	    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="minus"/&gt;<a name="d0t15399"/>
	    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15401"/>
	    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="one"/&gt;<a name="d0t15403"/>
	  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15404"/>
	&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15405"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15407"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15408"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15409"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15410"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15411"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15412"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15414"/> for all a,b,c | a*(b+c) = a*b + a*c &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15415"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15418"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15420"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15422"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15424"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15426"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15428"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t15430"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15431"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15433"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15435"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15437"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15439"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15441"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15443"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15445"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15447"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t15449"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15450"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15451"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15453"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15455"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15457"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15459"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15461"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="b"/&gt;<a name="d0t15463"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15464"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15466"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15468"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15470"/>
	&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="c"/&gt;<a name="d0t15472"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15473"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15474"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15475"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15476"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15477"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15478"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15480"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15482"/> divide &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15483"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15485"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15486"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15488"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15489"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15491"/> whenever not(a=0) then a/a = 1 &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15492"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15494"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15496"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15498"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15500"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15502"/>
       &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15504"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15505"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15507"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="implies"/&gt;<a name="d0t15509"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15511"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="neq"/&gt;<a name="d0t15513"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15515"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="zero"/&gt;<a name="d0t15517"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15518"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15520"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15522"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15524"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="divide"/&gt;<a name="d0t15526"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15528"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15530"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15531"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="one"/&gt;<a name="d0t15533"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15534"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15535"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15536"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15537"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15538"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15539"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15541"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15543"/> power &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15544"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15546"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15547"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15549"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15550"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15552"/>
x\in C implies x^a = exp(a ln x)
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15553"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15555"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15557"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15559"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="implies"/&gt;<a name="d0t15561"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15563"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t15565"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15567"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="C"/&gt;<a name="d0t15569"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15570"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15572"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15574"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15576"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="power" cd="arith1"/&gt;<a name="d0t15578"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15580"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15582"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15583"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15585"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="exp" cd="transc1"/&gt;<a name="d0t15587"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15589"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="times" cd="arith1"/&gt;<a name="d0t15591"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15593"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15595"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="ln" cd="transc1"/&gt;<a name="d0t15597"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15599"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15600"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15601"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15602"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15603"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15604"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15605"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15606"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15608"/>
  if n is an integer then
  x^0 = 1,
  x^n = x * x^(n-1)
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15609"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15611"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15613"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15615"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="implies"/&gt;<a name="d0t15617"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15619"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t15621"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15623"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="Z"/&gt;<a name="d0t15625"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15626"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15628"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="and"/&gt;<a name="d0t15630"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15632"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15634"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15636"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="power"/&gt;<a name="d0t15638"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15640"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15642"/>0&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15643"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15644"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="one"/&gt;<a name="d0t15646"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15647"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15649"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15651"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15653"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="power"/&gt;<a name="d0t15655"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15657"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15659"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15660"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15662"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15664"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15666"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15668"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="power"/&gt;<a name="d0t15670"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15672"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15674"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="minus"/&gt;<a name="d0t15676"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15678"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15680"/>1&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15681"/>
            &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15682"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15683"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15684"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15685"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15686"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15687"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15688"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15689"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15691"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15693"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15695"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15697"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15699"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="power"/&gt;<a name="d0t15701"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15703"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrix"/&gt;<a name="d0t15705"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15707"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15709"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15711"/> 1 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15712"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15714"/> 2 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15715"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15716"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15718"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15720"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15722"/> 3 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15723"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15725"/> 4 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15726"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15727"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15728"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15730"/>3&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15731"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15732"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15734"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrix"/&gt;<a name="d0t15736"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15738"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15740"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15742"/> 37 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15743"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15745"/> 54 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15746"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15747"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15749"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="linalg2" name="matrixrow"/&gt;<a name="d0t15751"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15753"/> 81 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15754"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15756"/> 118 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t15757"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15758"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15759"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15760"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15761"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15762"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15764"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15766"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15768"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15770"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15772"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="power"/&gt;<a name="d0t15774"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="nums1" name="e"/&gt;<a name="d0t15776"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15778"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="times"/&gt;<a name="d0t15780"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="nums1" name="i"/&gt;<a name="d0t15782"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="nums1" name="pi"/&gt;<a name="d0t15784"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15785"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15786"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15788"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="unary_minus"/&gt;<a name="d0t15790"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="alg1" name="one"/&gt;<a name="d0t15792"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15793"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15794"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15795"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15796"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15797"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15799"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15801"/> abs &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15802"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15804"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15805"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15807"/> 
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15808"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15810"/> for all x,y | abs(x) + abs(y) &amp;gt;= abs(x+y) &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15811"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15813"/>
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15815"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15817"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15819"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15821"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15823"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="y"/&gt;<a name="d0t15825"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15826"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15828"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="geq"/&gt;<a name="d0t15830"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15832"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15834"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15836"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="abs"/&gt;<a name="d0t15838"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15840"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15841"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15843"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="abs"/&gt;<a name="d0t15845"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="y"/&gt;<a name="d0t15847"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15848"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15849"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15851"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="abs"/&gt;<a name="d0t15853"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15855"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plus"/&gt;<a name="d0t15857"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15859"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="y"/&gt;<a name="d0t15861"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15862"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15863"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15864"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15865"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15866"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15867"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15868"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15870"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15872"/> root &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15873"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15875"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15876"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15878"/> 
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15879"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15881"/> x\in C implies root(x,n) = exp(ln(x)/n) &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15882"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15884"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15886"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15888"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="logic1" name="implies"/&gt;<a name="d0t15890"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15892"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="set1" name="in"/&gt;<a name="d0t15894"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15896"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="C"/&gt;<a name="d0t15898"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15899"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15901"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15903"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15905"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="root"/&gt;<a name="d0t15907"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15909"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15911"/>          
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15912"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15914"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="exp" cd="transc1"/&gt;<a name="d0t15916"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15918"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="divide" cd="arith1"/&gt;<a name="d0t15920"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15922"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="ln" cd="transc1"/&gt;<a name="d0t15924"/>
              &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t15926"/>
            &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15927"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15929"/>          
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15930"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15931"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15932"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15933"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15934"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15935"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15937"/> for all a,n | power(root(a,n),n) = a (if the root exists!) &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CMP</span>&gt;<a name="d0t15938"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15940"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15942"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15944"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="quant1" name="forall"/&gt;<a name="d0t15946"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15948"/>
         &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15950"/>
         &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15952"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t15953"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15955"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t15957"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15959"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="power"/&gt;<a name="d0t15961"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15963"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="root"/&gt;<a name="d0t15965"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15967"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15969"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15970"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t15972"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15973"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="a"/&gt;<a name="d0t15975"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15976"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t15977"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t15978"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">FMP</span>&gt;<a name="d0t15979"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15980"/>




&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t15982"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15984"/> sum &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t15985"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15987"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t15988"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15990"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t15991"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t15993"/>
  This represents the summation of the reciprocals of all the integers between
  1 and 10 inclusive.
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t15995"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t15997"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="sum"/&gt;<a name="d0t15999"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16001"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="interval1" name="integer_interval"/&gt;<a name="d0t16003"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16005"/> 1 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16006"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16008"/> 10 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16009"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16010"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t16012"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="fns1" name="lambda"/&gt;<a name="d0t16014"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t16016"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t16018"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t16019"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16021"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="divide"/&gt;<a name="d0t16023"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16025"/> 1 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16026"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="x"/&gt;<a name="d0t16028"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16029"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t16030"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16031"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16032"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16033"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16034"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16036"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16038"/> product &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16039"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16041"/>application&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16042"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16044"/>
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. 
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16045"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16047"/>
This represents the statement that the factorial of n is equal to the product
of all the integers between 1 and n inclusive.
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t16049"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16051"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="relation1" name="eq"/&gt;<a name="d0t16053"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16055"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="integer1" name="factorial"/&gt;<a name="d0t16057"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t16059"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16060"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16062"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="product"/&gt;<a name="d0t16064"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16066"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="interval1" name="integer_interval"/&gt;<a name="d0t16068"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16070"/> 1 &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMI</span>&gt;<a name="d0t16071"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="n"/&gt;<a name="d0t16073"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16074"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t16076"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="fns1" name="lambda"/&gt;<a name="d0t16078"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t16080"/>
            &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="i"/&gt;<a name="d0t16082"/>
          &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBVAR</span>&gt;<a name="d0t16083"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="i"/&gt;<a name="d0t16085"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMBIND</span>&gt;<a name="d0t16086"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16087"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16088"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16089"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16090"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16091"/>

&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CD</span>&gt;
</pre></div>

</div>

<div><h3 name="arith1.sts" id="arith1.sts">A.3 The  <b>arith1</b> STS Signature File</h3>
  
  
  
  
<div class="literal"><pre>
&lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">CDSignatures</span>
 xmlns="http://www.openmath.org/OpenMathCDS" type="sts" cd="arith1"&gt;<a name="d0t16106"/>

  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">CDSComment</span>&gt;<a name="d0t16108"/>
    Date:  1999-11-26
    Author: David Carlisle
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">CDSComment</span>&gt;<a name="d0t16109"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="lcm"&gt;<a name="d0t16111"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16113"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16115"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16117"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16119"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="nassoc" cd="sts"/&gt;<a name="d0t16121"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="SemiGroup"/&gt;<a name="d0t16123"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16124"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="SemiGroup"/&gt;<a name="d0t16126"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16127"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16128"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16129"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="gcd"&gt;<a name="d0t16131"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16133"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16135"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16137"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16139"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="nassoc" cd="sts"/&gt;<a name="d0t16141"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="SemiGroup"/&gt;<a name="d0t16143"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16144"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="SemiGroup"/&gt;<a name="d0t16146"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16147"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16148"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16149"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="plus"&gt;<a name="d0t16151"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16153"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16155"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16157"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16159"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="nassoc" cd="sts"/&gt;<a name="d0t16161"/> 
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianSemiGroup"/&gt;<a name="d0t16163"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16164"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianSemiGroup"/&gt;<a name="d0t16166"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16167"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16168"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16169"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="unary_minus"&gt;<a name="d0t16171"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16173"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16175"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16177"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16179"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16181"/> 
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16182"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16183"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16184"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="minus"&gt;<a name="d0t16186"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16188"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16190"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16192"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16194"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16196"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16198"/> 
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16199"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16200"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16201"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="times"&gt;<a name="d0t16203"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16205"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16207"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16209"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16211"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="nassoc" cd="sts"/&gt;<a name="d0t16213"/> 
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="SemiGroup"/&gt;<a name="d0t16215"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16216"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="SemiGroup"/&gt;<a name="d0t16218"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16219"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16220"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16221"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="divide"&gt;<a name="d0t16223"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16225"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16227"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16229"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16231"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16233"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianGroup"/&gt;<a name="d0t16235"/> 
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16236"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16237"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16238"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="power"&gt;<a name="d0t16240"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16242"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16244"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16246"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="NumericalValue" cd="sts"/&gt;<a name="d0t16248"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="NumericalValue" cd="sts"/&gt;<a name="d0t16250"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="NumericalValue" cd="sts"/&gt;<a name="d0t16252"/> 
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16253"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16254"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16255"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="abs"&gt;<a name="d0t16257"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16259"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16261"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16263"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="C" cd="setname1"/&gt;<a name="d0t16265"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="R" cd="setname1"/&gt;<a name="d0t16267"/> 
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16268"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16269"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16270"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="root"&gt;<a name="d0t16272"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16274"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16276"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16278"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="NumericalValue" cd="sts"/&gt;<a name="d0t16280"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="NumericalValue" cd="sts"/&gt;<a name="d0t16282"/> 
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="NumericalValue" cd="sts"/&gt;<a name="d0t16284"/> 
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16285"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16286"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16287"/>
  
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="sum"&gt;<a name="d0t16289"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16291"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16293"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16295"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="IntegerRange"/&gt;<a name="d0t16297"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16299"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16301"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="Z" cd="setname1"/&gt;<a name="d0t16303"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianMonoid"/&gt;<a name="d0t16305"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16306"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianMonoid"/&gt;<a name="d0t16308"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16309"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16310"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16311"/>
  
  &lt;<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span> name="product"&gt;<a name="d0t16313"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath"&gt;<a name="d0t16315"/>
      &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16317"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16319"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="IntegerRange"/&gt;<a name="d0t16321"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16323"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="mapsto" cd="sts"/&gt;<a name="d0t16325"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> name="Z" cd="setname1"/&gt;<a name="d0t16327"/>
          &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianMonoid"/&gt;<a name="d0t16329"/>
        &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16330"/>
        &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMV</span> name="AbelianMonoid"/&gt;<a name="d0t16332"/>
      &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMA</span>&gt;<a name="d0t16333"/>
    &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16334"/>
  &lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">Signature</span>&gt;<a name="d0t16335"/>
  
&lt;/<span xmlns:cds="http://www.openmath.org/OpenMathCDS" style="font-weight: bold; color: blue">CDSignatures</span>&gt;
				   
</pre></div>

</div>

<div><h3 name="mathml.cdg" id="mathml.cdg">A.4 The  <b>MathML</b> CDGroup</h3>
  
  
  
<div class="literal"><pre>
&lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroup</span>
 xmlns="http://www.openmath.org/OpenMathCDG"&gt;<a name="d0t16350"/>
&lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupName</span>&gt;<a name="d0t16352"/>mathml&lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupName</span>&gt;<a name="d0t16353"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupVersion</span>&gt;<a name="d0t16355"/> 2 &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupVersion</span>&gt;<a name="d0t16356"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupRevision</span>&gt;<a name="d0t16358"/> 0 &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupRevision</span>&gt;<a name="d0t16359"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupURL</span>&gt;<a name="d0t16361"/>
    http://www.openmath.org/cdfiles/cdgroups/mathml.cdg&lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupURL</span>&gt;<a name="d0t16362"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupDescription</span>&gt;<a name="d0t16364"/> MathML compatibility CD Group &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupDescription</span>&gt;<a name="d0t16365"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16367"/>Algebra&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16368"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16370"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16372"/>alg1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16373"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16375"/>http://www.openmath.org/cd/alg1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16376"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16377"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16379"/>Arithmetic&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16380"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16382"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16384"/>arith1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16385"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16387"/>http://www.openmath.org/cd/arith1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16388"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16389"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16391"/>Constructor for Floating Point Numbers&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16392"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16394"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16396"/>bigfloat1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16397"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16399"/>http://www.openmath.org/cd/bigfloat1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16400"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16401"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16403"/>Calculus&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16404"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16406"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16408"/>calculus1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16409"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16411"/>http://www.openmath.org/cd/calculus1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16412"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16413"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16415"/>Operations on and constructors for complex numbers&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16416"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16418"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16420"/>complex1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16421"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16423"/>http://www.openmath.org/cd/complex1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16424"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16425"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16427"/>Functions on functions&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16428"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16430"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16432"/>fns1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16433"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16435"/>http://www.openmath.org/cd/fns1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16436"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16437"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16439"/>Integer arithmetic&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16440"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16442"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16444"/>integer1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16445"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16447"/>http://www.openmath.org/cd/integer1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16448"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16449"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16451"/>Intervals&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16452"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16454"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16456"/>interval1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16457"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16459"/>http://www.openmath.org/cd/interval1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16460"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16461"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16463"/>Linear Algebra - vector &amp;amp; matrix constructors,
             those symbols which are independent of orientation,
             but in MathML&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16464"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16466"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16468"/>linalg1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16469"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16471"/>http://www.openmath.org/cd/linalg1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16472"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16473"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16475"/>Linear Algebra - vector &amp;amp; matrix constructors,
             those symbols which are dependent of orientation,
             and in MathML&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16476"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16478"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16480"/>linalg2&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16481"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16483"/>http://www.openmath.org/cd/linalg2.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16484"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16485"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16487"/>Limits of unary functions&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16488"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16490"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16492"/>limit1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16493"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16495"/>http://www.openmath.org/cd/limit1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16496"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16497"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16499"/>List constructors&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16500"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16502"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16504"/>list1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16505"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16507"/>http://www.openmath.org/cd/list1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16508"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16509"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16511"/>Basic logical operators&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16512"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16514"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16516"/>logic1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16517"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16519"/>http://www.openmath.org/cd/logic1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16520"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16521"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16523"/>
    MathML Numerical Types
  &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16524"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16526"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16528"/>mathmltypes&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16529"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16531"/>http://www.openmath.org/cd/mathmltypes.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16532"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16533"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16535"/>Minima and maxima&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16536"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16538"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16540"/>minmax1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16541"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16543"/>http://www.openmath.org/cd/minmax1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16544"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16545"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16547"/>Multset-theoretic operators and constructors&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16548"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16550"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16552"/>multiset1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16553"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16555"/>http://www.openmath.org/cd/multiset1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16556"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16557"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16559"/>Symbols for creating numbers, including some defined constants
    (which can be seen as nullary constructors)&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16560"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16562"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16564"/>nums1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16565"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16567"/>http://www.openmath.org/cd/nums1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16568"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16569"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16571"/>Symbols for creating piecewise definitions&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16572"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16574"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16576"/>piece1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16577"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16579"/>http://www.openmath.org/cd/piece1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16580"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16581"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16583"/>The basic quantifiers forall and exists.&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16584"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16586"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16588"/>quant1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16589"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16591"/>http://www.openmath.org/cd/quant1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16592"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16593"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16595"/>Common arithmetic relations&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16596"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16598"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16600"/>relation1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16601"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16603"/>http://www.openmath.org/cd/relation1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16604"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16605"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16607"/>Number sets&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16608"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16610"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16612"/>setname1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16613"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16615"/>http://www.openmath.org/cd/setname1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16616"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16617"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16619"/>Rounding&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16620"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16622"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16624"/>rounding1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16625"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16627"/>http://www.openmath.org/cd/rounding1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16628"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16629"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16631"/>Set-theoretic operators and constructors&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16632"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16634"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16636"/>set1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16637"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16639"/>http://www.openmath.org/cd/set1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16640"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16641"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16643"/>Basic data orientated statistical operators&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16644"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16646"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16648"/>s_data1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16649"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16651"/>http://www.openmath.org/cd/s_data1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16652"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16653"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16655"/>Basic random variable orientated statistical operators&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16656"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16658"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16660"/>s_dist1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16661"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16663"/>http://www.openmath.org/cd/s_dist1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16664"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16665"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16667"/>Basic transcendental functions&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16668"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16670"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16672"/>transc1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16673"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16675"/>http://www.openmath.org/cd/transc1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16676"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16677"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16679"/>Vector calculus functions&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16680"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16682"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16684"/>veccalc1&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16685"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16687"/>http://www.openmath.org/cd/veccalc1.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16688"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16689"/>
  &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16691"/>Alternative encoding symbols for compatibility with the MathML
    Semantic mapping constructs.&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16692"/>
  &lt;<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16694"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16696"/>altenc&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16697"/>
    &lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16699"/>http://www.openmath.org/cd/altenc.ocd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16700"/>
  &lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroupMember</span>&gt;<a name="d0t16701"/>
&lt;/<span xmlns:cdg="http://www.openmath.org/OpenMathCDG" style="font-weight: bold; color: blue">CDGroup</span>&gt;
</pre></div>



</div>

<div><h3 name="errorcd" id="errorcd">A.5 The <b>error</b> Content Dictionary</h3>
  
  
<div class="literal"><pre>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CD</span>
 xmlns="http://www.openmath.org/OpenMathCD"&gt;<a name="d0t16716"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16718"/>

     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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDComment</span>&gt;<a name="d0t16719"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16721"/> error &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDName</span>&gt;<a name="d0t16722"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDBase</span>&gt;<a name="d0t16724"/>http://www.openmath.org/cd&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDBase</span>&gt;<a name="d0t16725"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16727"/> http://www.openmath.org/cd/error.ocd &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDURL</span>&gt;<a name="d0t16728"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDReviewDate</span>&gt;<a name="d0t16730"/>2006-03-30&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDReviewDate</span>&gt;<a name="d0t16731"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDStatus</span>&gt;<a name="d0t16733"/> official &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDStatus</span>&gt;<a name="d0t16734"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDate</span>&gt;<a name="d0t16736"/>2004-03-30&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDate</span>&gt;<a name="d0t16737"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDVersion</span>&gt;<a name="d0t16739"/>3&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDVersion</span>&gt;<a name="d0t16740"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDRevision</span>&gt;<a name="d0t16742"/>0&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDRevision</span>&gt;<a name="d0t16743"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16745"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16747"/> unhandled_symbol &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16748"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16750"/>error&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16751"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16753"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16754"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16756"/>
The application does not implement the Complex numbers:
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t16758"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OME</span>&gt;<a name="d0t16760"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="error" name="unhandled_symbol"/&gt;<a name="d0t16762"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="setname1" name="C"/&gt;<a name="d0t16764"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OME</span>&gt;<a name="d0t16765"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16766"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16767"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16768"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16770"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16772"/> unexpected_symbol &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16773"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16775"/>error&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16776"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16778"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16779"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16781"/>
The application received a mistyped symbol
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t16783"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OME</span>&gt;<a name="d0t16785"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="error" name="unexpected_symbol"/&gt;<a name="d0t16787"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="arith1" name="plurse"/&gt;<a name="d0t16789"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OME</span>&gt;<a name="d0t16790"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16791"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16792"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16793"/>

&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16795"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16797"/> unsupported_CD &lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Name</span>&gt;<a name="d0t16798"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16800"/>error&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Role</span>&gt;<a name="d0t16801"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16803"/>
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.
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Description</span>&gt;<a name="d0t16804"/>
&lt;<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16806"/>
The application does not know about the CD specfun1
&lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>
 xmlns="http://www.openmath.org/OpenMath" version="2.0" cdbase="http://www.openmath.org/cd"&gt;<a name="d0t16808"/>
  &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OME</span>&gt;<a name="d0t16810"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="error" name="unsupported_CD"/&gt;<a name="d0t16812"/>
    &lt;<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMS</span> cd="specfun1" name="BesselJ"/&gt;<a name="d0t16814"/>
  &lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OME</span>&gt;<a name="d0t16815"/>
&lt;/<span xmlns:om="http://www.openmath.org/OpenMath" style="font-weight: bold; color: green">OMOBJ</span>&gt;<a name="d0t16816"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">Example</span>&gt;<a name="d0t16817"/>
&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CDDefinition</span>&gt;<a name="d0t16818"/>

&lt;/<span xmlns:cd="http://www.openmath.org/OpenMathCD" style="font-weight: bold; color: blue">CD</span>&gt;
</pre></div>

</div>

</div>


<div class="new"><h2 name="app_openmath.rng" id="app_openmath.rng">
  Appendix B<br/><i>OpenMath</i> Schema in Relax NG XML Syntax (Normative)</h2>
  
  
  <p>This is the Relax NG Schema described in <a href="#sec_xml">Section 3.1</a>
    expressed according to the Relax NG XML Syntax.
  </p>
  <div class="literal"><pre>
    

&lt;<span style="font-weight: bold; color: red">grammar</span>
 xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.openmath.org/OpenMath" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"&gt;<a name="d0t16840"/>
  &lt;<span style="font-weight: bold; color: red">start</span>&gt;<a name="d0t16842"/>
    &lt;<span style="font-weight: bold; color: red">ref</span> name="OMOBJ"/&gt;<a name="d0t16844"/>
  &lt;/<span style="font-weight: bold; color: red">start</span>&gt;<a name="d0t16845"/>
  &lt;!-- OpenMath object constructor --&gt;<a name="d0t16847"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMOBJ"&gt;<a name="d0t16849"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMOBJ"&gt;<a name="d0t16851"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="compound.attributes"/&gt;<a name="d0t16853"/>
      &lt;<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t16855"/>
        &lt;<span style="font-weight: bold; color: red">attribute</span> name="version"&gt;<a name="d0t16857"/>
          &lt;<span style="font-weight: bold; color: red">data</span> type="string"/&gt;<a name="d0t16859"/>
        &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t16860"/>
      &lt;/<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t16861"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t16863"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t16864"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16865"/>
  &lt;!-- Elements which can appear inside an OpenMath object --&gt;<a name="d0t16867"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="omel"&gt;<a name="d0t16869"/>
    &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t16871"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMS"/&gt;<a name="d0t16873"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMV"/&gt;<a name="d0t16875"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMI"/&gt;<a name="d0t16877"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMB"/&gt;<a name="d0t16879"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMSTR"/&gt;<a name="d0t16881"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMF"/&gt;<a name="d0t16883"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMA"/&gt;<a name="d0t16885"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMBIND"/&gt;<a name="d0t16887"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OME"/&gt;<a name="d0t16889"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMATTR"/&gt;<a name="d0t16891"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMR"/&gt;<a name="d0t16893"/>
    &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t16894"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16895"/>
  &lt;!-- things which can be variables --&gt;<a name="d0t16897"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="omvar"&gt;<a name="d0t16899"/>
    &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t16901"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMV"/&gt;<a name="d0t16903"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="attvar"/&gt;<a name="d0t16905"/>
    &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t16906"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16907"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="attvar"&gt;<a name="d0t16909"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMATTR"&gt;<a name="d0t16911"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t16913"/>
      &lt;<span style="font-weight: bold; color: red">group</span>&gt;<a name="d0t16915"/>
        &lt;<span style="font-weight: bold; color: red">ref</span> name="OMATP"/&gt;<a name="d0t16917"/>
        &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t16919"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="OMV"/&gt;<a name="d0t16921"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="attvar"/&gt;<a name="d0t16923"/>
        &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t16924"/>
      &lt;/<span style="font-weight: bold; color: red">group</span>&gt;<a name="d0t16925"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t16926"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16927"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="cdbase"&gt;<a name="d0t16929"/>
    &lt;<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t16931"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="cdbase"&gt;<a name="d0t16933"/>
        &lt;<span style="font-weight: bold; color: red">data</span> type="anyURI"/&gt;<a name="d0t16935"/>
      &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t16936"/>
    &lt;/<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t16937"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16938"/>
  &lt;!-- attributes common to all elements --&gt;<a name="d0t16940"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="common.attributes"&gt;<a name="d0t16942"/>
    &lt;<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t16944"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="id"&gt;<a name="d0t16946"/>
        &lt;<span style="font-weight: bold; color: red">data</span> type="ID"/&gt;<a name="d0t16948"/>
      &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t16949"/>
    &lt;/<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t16950"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16951"/>
  &lt;!-- attributes common to all elements that construct compount OM objects. --&gt;<a name="d0t16953"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="compound.attributes"&gt;<a name="d0t16955"/>
    &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t16957"/>
    &lt;<span style="font-weight: bold; color: red">ref</span> name="cdbase"/&gt;<a name="d0t16959"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16960"/>
  &lt;!-- symbol --&gt;<a name="d0t16962"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMS"&gt;<a name="d0t16964"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMS"&gt;<a name="d0t16966"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t16968"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="name"&gt;<a name="d0t16970"/>
        &lt;<span style="font-weight: bold; color: red">data</span> type="NCName"/&gt;<a name="d0t16972"/>
      &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t16973"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="cd"&gt;<a name="d0t16975"/>
        &lt;<span style="font-weight: bold; color: red">data</span> type="NCName"/&gt;<a name="d0t16977"/>
      &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t16978"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="cdbase"/&gt;<a name="d0t16980"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t16981"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16982"/>
  &lt;!-- variable --&gt;<a name="d0t16984"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMV"&gt;<a name="d0t16986"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMV"&gt;<a name="d0t16988"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t16990"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="name"&gt;<a name="d0t16992"/>
        &lt;<span style="font-weight: bold; color: red">data</span> type="NCName"/&gt;<a name="d0t16994"/>
      &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t16995"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t16996"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t16997"/>
  &lt;!-- integer --&gt;<a name="d0t16999"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMI"&gt;<a name="d0t17001"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMI"&gt;<a name="d0t17003"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t17005"/>
      &lt;<span style="font-weight: bold; color: red">data</span> type="string"&gt;<a name="d0t17007"/>
        &lt;<span style="font-weight: bold; color: red">param</span> name="pattern"&gt;<a name="d0t17009"/>\s*(-\s?)?[0-9]+(\s[0-9]+)*\s*&lt;/<span style="font-weight: bold; color: red">param</span>&gt;<a name="d0t17010"/>
      &lt;/<span style="font-weight: bold; color: red">data</span>&gt;<a name="d0t17011"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17012"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17013"/>
  &lt;!-- byte array --&gt;<a name="d0t17015"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMB"&gt;<a name="d0t17017"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMB"&gt;<a name="d0t17019"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t17021"/>
      &lt;<span style="font-weight: bold; color: red">data</span> type="base64Binary"/&gt;<a name="d0t17023"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17024"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17025"/>
  &lt;!-- string --&gt;<a name="d0t17027"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMSTR"&gt;<a name="d0t17029"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMSTR"&gt;<a name="d0t17031"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t17033"/>
      &lt;<span style="font-weight: bold; color: red">text</span>/&gt;<a name="d0t17035"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17036"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17037"/>
  &lt;!-- IEEE floating point number --&gt;<a name="d0t17039"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMF"&gt;<a name="d0t17041"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMF"&gt;<a name="d0t17043"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t17045"/>
      &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17047"/>
        &lt;<span style="font-weight: bold; color: red">attribute</span> name="dec"&gt;<a name="d0t17049"/>
          &lt;<span style="font-weight: bold; color: red">data</span> type="double"/&gt;<a name="d0t17051"/>
        &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t17052"/>
        &lt;<span style="font-weight: bold; color: red">attribute</span> name="hex"&gt;<a name="d0t17054"/>
          &lt;<span style="font-weight: bold; color: red">data</span> type="string"&gt;<a name="d0t17056"/>
            &lt;<span style="font-weight: bold; color: red">param</span> name="pattern"&gt;<a name="d0t17058"/>[0-9A-F]+&lt;/<span style="font-weight: bold; color: red">param</span>&gt;<a name="d0t17059"/>
          &lt;/<span style="font-weight: bold; color: red">data</span>&gt;<a name="d0t17060"/>
        &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t17061"/>
      &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17062"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17063"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17064"/>
  &lt;!-- apply constructor --&gt;<a name="d0t17066"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMA"&gt;<a name="d0t17068"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMA"&gt;<a name="d0t17070"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="compound.attributes"/&gt;<a name="d0t17072"/>
      &lt;<span style="font-weight: bold; color: red">oneOrMore</span>&gt;<a name="d0t17074"/>
        &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17076"/>
      &lt;/<span style="font-weight: bold; color: red">oneOrMore</span>&gt;<a name="d0t17077"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17078"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17079"/>
  &lt;!-- binding constructor --&gt;<a name="d0t17081"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMBIND"&gt;<a name="d0t17083"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMBIND"&gt;<a name="d0t17085"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="compound.attributes"/&gt;<a name="d0t17087"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17089"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMBVAR"/&gt;<a name="d0t17091"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17093"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17094"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17095"/>
  &lt;!-- variables used in binding constructor --&gt;<a name="d0t17097"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMBVAR"&gt;<a name="d0t17099"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMBVAR"&gt;<a name="d0t17101"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t17103"/>
      &lt;<span style="font-weight: bold; color: red">oneOrMore</span>&gt;<a name="d0t17105"/>
        &lt;<span style="font-weight: bold; color: red">ref</span> name="omvar"/&gt;<a name="d0t17107"/>
      &lt;/<span style="font-weight: bold; color: red">oneOrMore</span>&gt;<a name="d0t17108"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17109"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17110"/>
  &lt;!-- error constructor --&gt;<a name="d0t17112"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OME"&gt;<a name="d0t17114"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OME"&gt;<a name="d0t17116"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t17118"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMS"/&gt;<a name="d0t17120"/>
      &lt;<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17122"/>
        &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17124"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17126"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="OMFOREIGN"/&gt;<a name="d0t17128"/>
        &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17129"/>
      &lt;/<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17130"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17131"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17132"/>
  &lt;!-- attribution constructor and attribute pair constructor --&gt;<a name="d0t17134"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMATTR"&gt;<a name="d0t17136"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMATTR"&gt;<a name="d0t17138"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="compound.attributes"/&gt;<a name="d0t17140"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="OMATP"/&gt;<a name="d0t17142"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17144"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17145"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17146"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMATP"&gt;<a name="d0t17148"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMATP"&gt;<a name="d0t17150"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="compound.attributes"/&gt;<a name="d0t17152"/>
      &lt;<span style="font-weight: bold; color: red">oneOrMore</span>&gt;<a name="d0t17154"/>
        &lt;<span style="font-weight: bold; color: red">ref</span> name="OMS"/&gt;<a name="d0t17156"/>
        &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17158"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17160"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="OMFOREIGN"/&gt;<a name="d0t17162"/>
        &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17163"/>
      &lt;/<span style="font-weight: bold; color: red">oneOrMore</span>&gt;<a name="d0t17164"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17165"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17166"/>
  &lt;!-- foreign constructor --&gt;<a name="d0t17168"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMFOREIGN"&gt;<a name="d0t17170"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMFOREIGN"&gt;<a name="d0t17172"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="compound.attributes"/&gt;<a name="d0t17174"/>
      &lt;<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t17176"/>
        &lt;<span style="font-weight: bold; color: red">attribute</span> name="encoding"&gt;<a name="d0t17178"/>
          &lt;<span style="font-weight: bold; color: red">data</span> type="string"/&gt;<a name="d0t17180"/>
        &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t17181"/>
      &lt;/<span style="font-weight: bold; color: red">optional</span>&gt;<a name="d0t17182"/>
      &lt;<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17184"/>
        &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17186"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17188"/>
          &lt;<span style="font-weight: bold; color: red">ref</span> name="notom"/&gt;<a name="d0t17190"/>
        &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17191"/>
      &lt;/<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17192"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17193"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17194"/>
  &lt;!--
    Any elements not in the om namespace
    (valid om is allowed as a descendant)
  --&gt;<a name="d0t17196"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="notom"&gt;<a name="d0t17198"/>
    &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17200"/>
      &lt;<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17202"/>
        &lt;<span style="font-weight: bold; color: red">anyName</span>&gt;<a name="d0t17204"/>
          &lt;<span style="font-weight: bold; color: red">except</span>&gt;<a name="d0t17206"/>
            &lt;<span style="font-weight: bold; color: red">nsName</span>/&gt;<a name="d0t17208"/>
          &lt;/<span style="font-weight: bold; color: red">except</span>&gt;<a name="d0t17209"/>
        &lt;/<span style="font-weight: bold; color: red">anyName</span>&gt;<a name="d0t17210"/>
        &lt;<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17212"/>
          &lt;<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t17214"/>
            &lt;<span style="font-weight: bold; color: red">anyName</span>/&gt;<a name="d0t17216"/>
          &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t17217"/>
        &lt;/<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17218"/>
        &lt;<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17220"/>
          &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17222"/>
            &lt;<span style="font-weight: bold; color: red">ref</span> name="omel"/&gt;<a name="d0t17224"/>
            &lt;<span style="font-weight: bold; color: red">ref</span> name="notom"/&gt;<a name="d0t17226"/>
          &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17227"/>
        &lt;/<span style="font-weight: bold; color: red">zeroOrMore</span>&gt;<a name="d0t17228"/>
      &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17229"/>
      &lt;<span style="font-weight: bold; color: red">text</span>/&gt;<a name="d0t17231"/>
    &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17232"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17233"/>
  &lt;!-- reference constructor --&gt;<a name="d0t17235"/>
  &lt;<span style="font-weight: bold; color: red">define</span> name="OMR"&gt;<a name="d0t17237"/>
    &lt;<span style="font-weight: bold; color: red">element</span> name="OMR"&gt;<a name="d0t17239"/>
      &lt;<span style="font-weight: bold; color: red">ref</span> name="common.attributes"/&gt;<a name="d0t17241"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="href"&gt;<a name="d0t17243"/>
        &lt;<span style="font-weight: bold; color: red">data</span> type="anyURI"/&gt;<a name="d0t17245"/>
      &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t17246"/>
    &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17247"/>
  &lt;/<span style="font-weight: bold; color: red">define</span>&gt;<a name="d0t17248"/>
&lt;/<span style="font-weight: bold; color: red">grammar</span>&gt;

  </pre></div>
</div>

<div class="new"><h2 name="app_relaxrestricted" id="app_relaxrestricted">
  Appendix C<br/>Restricting the <i>OpenMath</i> Schema (Non-Normative)</h2>
  
  
  <p> Relax NG allows one to state constraints such as <i>
      if the cd attribute of OMS is arith1 then the name attribute must be
      one of lcm, gcd, plus etc.</i> Thus it is easy to use a
    stylesheet to generate for any given CD, a Relax NG schema that
    expresses the constraint that an <small><code>OMS</code></small> naming
    that CD must only use symbols defined in the specified dictionary.
    Similarly it is possible to use the <i>role</i>
    information contained in the CD to restrict which symbols can be the
    first child of an <small><code>OMBIND</code></small> or the odd-numbered
    children of an <small><code>OMATP</code></small>. 
  </p>
  
  <p> The modularisation mechanisms of Relax NG then allow one to
    include these schema for all the CDs that you want to allow and, for
    example, to replace the regexp-based validation of the
    <small><code>OMS</code></small> attributes by explicit lists of allowed
    CD names, and for each CD Name, a list of allowed symbol names.
  </p>
  
  <p>
    For example, a CD-specific Relax NG Schema for the arith1 CD shown in
    <a href="#arith1.ocd">Appendix A.2</a> would look like:
    <div class="literal"><pre>
&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary=""&gt;
  &lt;define name="cd.attlist.OMS" combine="choice"&gt;
    &lt;attribute name="cd"&gt;
      &lt;value type="string"&gt;arith1&lt;/value&gt;
    &lt;/attribute&gt;
    &lt;attribute name="name"&gt;
      &lt;choice&gt;
        &lt;value type="string"&gt;lcm&lt;/value&gt;
        &lt;value type="string"&gt;gcd&lt;/value&gt;
        &lt;value type="string"&gt;plus&lt;/value&gt;
        &lt;value type="string"&gt;unary_minus&lt;/value&gt;
        &lt;value type="string"&gt;minus&lt;/value&gt;
        &lt;value type="string"&gt;times&lt;/value&gt;
        &lt;value type="string"&gt;divide&lt;/value&gt;
        &lt;value type="string"&gt;power&lt;/value&gt;
        &lt;value type="string"&gt;abs&lt;/value&gt;
        &lt;value type="string"&gt;root&lt;/value&gt;
        &lt;value type="string"&gt;sum&lt;/value&gt;
        &lt;value type="string"&gt;product&lt;/value&gt;
      &lt;/choice&gt;
    &lt;/attribute&gt;
  &lt;/define&gt;
&lt;/grammar&gt;
</pre></div>
or, using the Relax NG compact syntax:
<div class="literal"><pre>
  cd.attlist.OMS |= 
  attribute cd {string "arith1" },
  attribute name {
  string "lcm" |
  string "gcd" |
  string "plus" |
  string "unary_minus" |
  string "minus" |
  string "times" |
  string "divide" |
  string "power" |
  string "abs" |
  string "root" |
  string "sum" |
  string "product" }
</pre></div>
</p>

<p> To build a schema that allows only symbols from arith1 we just
  need to include the <i>OpenMath</i> schema described in <a href="#ssec_xml">Section 3.1.1</a>, override the attribute declarations for
  OMS, and then include the schema for arith1.  For example:
  <div class="literal"><pre>
    &lt;?xml version="1.0" encoding="UTF-8"?&gt;
    &lt;grammar xmlns="http://relaxng.org/ns/structure/1.0"&gt;
      &lt;include href="openmath.rng"&gt;
        &lt;define name="attlist.OMS"&gt;
          &lt;ref name="cd.attlist.OMS"/&gt;
        &lt;/define&gt;
      &lt;/include&gt;
      &lt;include href="arith1.rng"/&gt;
    &lt;/grammar&gt;
  </pre></div>
  or, in the compact syntax:
  <div class="literal"><pre>
    include "openmath.rnc" {
    attlist.OMS = cd.attlist.OMS}
    
    include "arith1.rnc"
  </pre></div>
  Using this approach it is possible to include as many files as
  required.
</p>

</div>

<div class="new"><h2 name="app_xsd" id="app_xsd">
  Appendix D<br/><i>OpenMath</i> Schema in XSD Syntax (Non-Normative)</h2>
  
  
  <p>This is an XSD Schema generated from the Relax NG Schema described in 
    <a href="#sec_xml">Section 3.1</a>.
  </p>
  <div class="literal"><pre>
    

&lt;<span style="font-weight: bold; color: red">schema</span>
 xmlns:xs="http://www.w3.org/2001/XMLSchema"
 xmlns:om="http://www.openmath.org/OpenMath" elementFormDefault="qualified" targetNamespace="http://www.openmath.org/OpenMath"&gt;<a name="d0t17327"/>
  &lt;!-- OpenMath object constructor --&gt;<a name="d0t17329"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMOBJ"&gt;<a name="d0t17331"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17333"/>
      &lt;<span style="font-weight: bold; color: red">group</span> ref="om:omel"/&gt;<a name="d0t17335"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:compound.attributes"/&gt;<a name="d0t17337"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="version" type="xs:string"/&gt;<a name="d0t17339"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17340"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17341"/>
  &lt;!-- Elements which can appear inside an OpenMath object --&gt;<a name="d0t17343"/>
  &lt;<span style="font-weight: bold; color: red">group</span> name="omel"&gt;<a name="d0t17345"/>
    &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17347"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMS"/&gt;<a name="d0t17349"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMV"/&gt;<a name="d0t17351"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMI"/&gt;<a name="d0t17353"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMB"/&gt;<a name="d0t17355"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMSTR"/&gt;<a name="d0t17357"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMF"/&gt;<a name="d0t17359"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMA"/&gt;<a name="d0t17361"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMBIND"/&gt;<a name="d0t17363"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OME"/&gt;<a name="d0t17365"/>
      &lt;<span style="font-weight: bold; color: red">group</span> ref="om:OMATTR"/&gt;<a name="d0t17367"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMR"/&gt;<a name="d0t17369"/>
    &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17370"/>
  &lt;/<span style="font-weight: bold; color: red">group</span>&gt;<a name="d0t17371"/>
  &lt;!-- things which can be variables --&gt;<a name="d0t17373"/>
  &lt;<span style="font-weight: bold; color: red">group</span> name="omvar"&gt;<a name="d0t17375"/>
    &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17377"/>
      &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMV"/&gt;<a name="d0t17379"/>
      &lt;<span style="font-weight: bold; color: red">group</span> ref="om:attvar"/&gt;<a name="d0t17381"/>
    &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17382"/>
  &lt;/<span style="font-weight: bold; color: red">group</span>&gt;<a name="d0t17383"/>
  &lt;<span style="font-weight: bold; color: red">group</span> name="attvar"&gt;<a name="d0t17385"/>
    &lt;<span style="font-weight: bold; color: red">sequence</span>&gt;<a name="d0t17387"/>
      &lt;<span style="font-weight: bold; color: red">element</span> name="OMATTR"&gt;<a name="d0t17389"/>
        &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17391"/>
          &lt;<span style="font-weight: bold; color: red">sequence</span>&gt;<a name="d0t17393"/>
            &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMATP"/&gt;<a name="d0t17395"/>
            &lt;<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17397"/>
              &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMV"/&gt;<a name="d0t17399"/>
              &lt;<span style="font-weight: bold; color: red">group</span> ref="om:attvar"/&gt;<a name="d0t17401"/>
            &lt;/<span style="font-weight: bold; color: red">choice</span>&gt;<a name="d0t17402"/>
          &lt;/<span style="font-weight: bold; color: red">sequence</span>&gt;<a name="d0t17403"/>
          &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17405"/>
        &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17406"/>
      &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17407"/>
    &lt;/<span style="font-weight: bold; color: red">sequence</span>&gt;<a name="d0t17408"/>
  &lt;/<span style="font-weight: bold; color: red">group</span>&gt;<a name="d0t17409"/>
  &lt;<span style="font-weight: bold; color: red">attributeGroup</span> name="cdbase"&gt;<a name="d0t17411"/>
    &lt;<span style="font-weight: bold; color: red">attribute</span> name="cdbase" type="xs:anyURI"/&gt;<a name="d0t17413"/>
  &lt;/<span style="font-weight: bold; color: red">attributeGroup</span>&gt;<a name="d0t17414"/>
  &lt;!-- attributes common to all elements --&gt;<a name="d0t17416"/>
  &lt;<span style="font-weight: bold; color: red">attributeGroup</span> name="common.attributes"&gt;<a name="d0t17418"/>
    &lt;<span style="font-weight: bold; color: red">attribute</span> name="id" type="xs:ID"/&gt;<a name="d0t17420"/>
  &lt;/<span style="font-weight: bold; color: red">attributeGroup</span>&gt;<a name="d0t17421"/>
  &lt;!-- attributes common to all elements that construct compount OM objects. --&gt;<a name="d0t17423"/>
  &lt;<span style="font-weight: bold; color: red">attributeGroup</span> name="compound.attributes"&gt;<a name="d0t17425"/>
    &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17427"/>
    &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:cdbase"/&gt;<a name="d0t17429"/>
  &lt;/<span style="font-weight: bold; color: red">attributeGroup</span>&gt;<a name="d0t17430"/>
  &lt;!-- symbol --&gt;<a name="d0t17432"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMS"&gt;<a name="d0t17434"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17436"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17438"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="name" use="required" type="xs:NCName"/&gt;<a name="d0t17440"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="cd" use="required" type="xs:NCName"/&gt;<a name="d0t17442"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:cdbase"/&gt;<a name="d0t17444"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17445"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17446"/>
  &lt;!-- variable --&gt;<a name="d0t17448"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMV"&gt;<a name="d0t17450"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17452"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17454"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="name" use="required" type="xs:NCName"/&gt;<a name="d0t17456"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17457"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17458"/>
  &lt;!-- integer --&gt;<a name="d0t17460"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMI"&gt;<a name="d0t17462"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17464"/>
      &lt;<span style="font-weight: bold; color: red">simpleContent</span>&gt;<a name="d0t17466"/>
        &lt;<span style="font-weight: bold; color: red">restriction</span> base="xs:anyType"&gt;<a name="d0t17468"/>
          &lt;<span style="font-weight: bold; color: red">simpleType</span>&gt;<a name="d0t17470"/>
            &lt;<span style="font-weight: bold; color: red">restriction</span> base="xs:string"&gt;<a name="d0t17472"/>
              &lt;<span style="font-weight: bold; color: red">pattern</span> value="\s*(-\s?)?[0-9]+(\s[0-9]+)*\s*"/&gt;<a name="d0t17474"/>
            &lt;/<span style="font-weight: bold; color: red">restriction</span>&gt;<a name="d0t17475"/>
          &lt;/<span style="font-weight: bold; color: red">simpleType</span>&gt;<a name="d0t17476"/>
          &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17478"/>
        &lt;/<span style="font-weight: bold; color: red">restriction</span>&gt;<a name="d0t17479"/>
      &lt;/<span style="font-weight: bold; color: red">simpleContent</span>&gt;<a name="d0t17480"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17481"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17482"/>
  &lt;!-- byte array --&gt;<a name="d0t17484"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMB"&gt;<a name="d0t17486"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17488"/>
      &lt;<span style="font-weight: bold; color: red">simpleContent</span>&gt;<a name="d0t17490"/>
        &lt;<span style="font-weight: bold; color: red">extension</span> base="xs:base64Binary"&gt;<a name="d0t17492"/>
          &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17494"/>
        &lt;/<span style="font-weight: bold; color: red">extension</span>&gt;<a name="d0t17495"/>
      &lt;/<span style="font-weight: bold; color: red">simpleContent</span>&gt;<a name="d0t17496"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17497"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17498"/>
  &lt;!-- string --&gt;<a name="d0t17500"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMSTR"&gt;<a name="d0t17502"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span> mixed="true"&gt;<a name="d0t17504"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17506"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17507"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17508"/>
  &lt;!-- IEEE floating point number --&gt;<a name="d0t17510"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMF"&gt;<a name="d0t17512"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17514"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:common.attributes"/&gt;<a name="d0t17516"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="dec" type="xs:double"/&gt;<a name="d0t17518"/>
      &lt;<span style="font-weight: bold; color: red">attribute</span> name="hex"&gt;<a name="d0t17520"/>
        &lt;<span style="font-weight: bold; color: red">simpleType</span>&gt;<a name="d0t17522"/>
          &lt;<span style="font-weight: bold; color: red">restriction</span> base="xs:string"&gt;<a name="d0t17524"/>
            &lt;<span style="font-weight: bold; color: red">pattern</span> value="[0-9A-F]+"/&gt;<a name="d0t17526"/>
          &lt;/<span style="font-weight: bold; color: red">restriction</span>&gt;<a name="d0t17527"/>
        &lt;/<span style="font-weight: bold; color: red">simpleType</span>&gt;<a name="d0t17528"/>
      &lt;/<span style="font-weight: bold; color: red">attribute</span>&gt;<a name="d0t17529"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17530"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17531"/>
  &lt;!-- apply constructor --&gt;<a name="d0t17533"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMA"&gt;<a name="d0t17535"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17537"/>
      &lt;<span style="font-weight: bold; color: red">group</span> maxOccurs="unbounded" ref="om:omel"/&gt;<a name="d0t17539"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:compound.attributes"/&gt;<a name="d0t17541"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17542"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17543"/>
  &lt;!-- binding constructor --&gt;<a name="d0t17545"/>
  &lt;<span style="font-weight: bold; color: red">element</span> name="OMBIND"&gt;<a name="d0t17547"/>
    &lt;<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17549"/>
      &lt;<span style="font-weight: bold; color: red">sequence</span>&gt;<a name="d0t17551"/>
        &lt;<span style="font-weight: bold; color: red">group</span> ref="om:omel"/&gt;<a name="d0t17553"/>
        &lt;<span style="font-weight: bold; color: red">element</span> ref="om:OMBVAR"/&gt;<a name="d0t17555"/>
        &lt;<span style="font-weight: bold; color: red">group</span> ref="om:omel"/&gt;<a name="d0t17557"/>
      &lt;/<span style="font-weight: bold; color: red">sequence</span>&gt;<a name="d0t17558"/>
      &lt;<span style="font-weight: bold; color: red">attributeGroup</span> ref="om:compound.attributes"/&gt;<a name="d0t17560"/>
    &lt;/<span style="font-weight: bold; color: red">complexType</span>&gt;<a name="d0t17561"/>
  &lt;/<span style="font-weight: bold; color: red">element</span>&gt;<a name="d0t17562"/>
  &lt;!-- variables used in binding constructor --&gt;<a name="d0t17564"/>
  &lt;<span style="font-weight: bold; 