<grammar xmlns="http://relaxng.org/ns/structure/1.0" ns="http://www.w3.org/1998/Math/MathML" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<define name="ContExp">
<choice>
<ref name="semantics-contexp"/>
<ref name="cn"/>
<ref name="ci"/>
<ref name="csymbol"/>
<ref name="apply"/>
<ref name="bind"/>
<ref name="share"/>
<ref name="cerror"/>
<ref name="cbytes"/>
<ref name="cs"/>
</choice>
</define>
<define name="cn">
<element name="cn">
<ref name="cn.attributes"/>
<ref name="cn.content"/>
</element>
</define>
<define name="cn.content">
<text/>
</define>
<define name="cn.attributes">
<attribute name="type">
<choice>
<value>integer</value>
<value>real</value>
<value>double</value>
<value>hexdouble</value>
</choice>
</attribute>
</define>
<define name="semantics-ci">
<element name="semantics">
<ref name="semantics.attributes"/>
<choice>
<ref name="ci"/>
<ref name="semantics-ci"/>
</choice>
<zeroOrMore>
<choice>
<ref name="mathml-annotation"/>
<ref name="annotation-xml"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="semantics-contexp">
<element name="semantics">
<ref name="semantics.attributes"/>
<ref name="ContExp"/>
<zeroOrMore>
<choice>
<ref name="mathml-annotation"/>
<ref name="annotation-xml"/>
</choice>
</zeroOrMore>
</element>
</define>
<define name="ci">
<element name="ci">
<ref name="ci.attributes"/>
<ref name="ci.content"/>
</element>
</define>
<define name="ci.attributes">
<ref name="CommonAtt"/>
<optional>
<ref name="ci.type"/>
</optional>
</define>
<define name="ci.type">
<attribute name="type">
<choice>
<value>integer</value>
<value>rational</value>
<value>real</value>
<value>complex</value>
<value>complex-polar</value>
<value>complex-cartesian</value>
<value>constant</value>
<value>function</value>
<value>vector</value>
<value>list</value>
<value>set</value>
<value>matrix</value>
</choice>
</attribute>
</define>
<define name="ci.content">
<text/>
</define>
<define name="csymbol">
<element name="csymbol">
<ref name="csymbol.attributes"/>
<ref name="csymbol.content"/>
</element>
</define>
<define name="SymbolName">
<data type="NCName"/>
</define>
<define name="csymbol.attributes">
<ref name="CommonAtt"/>
<ref name="cd"/>
</define>
<define name="csymbol.content">
<ref name="SymbolName"/>
</define>
<define name="BvarQ">
<zeroOrMore>
<ref name="bvar"/>
</zeroOrMore>
</define>
<define name="bvar">
<element name="bvar">
<choice>
<ref name="ci"/>
<ref name="semantics-ci"/>
</choice>
</element>
</define>
<define name="apply">
<element name="apply">
<ref name="CommonAtt"/>
<ref name="apply.content"/>
</element>
</define>
<define name="apply.content">
<oneOrMore>
<ref name="ContExp"/>
</oneOrMore>
</define>
<define name="bind">
<element name="bind">
<ref name="CommonAtt"/>
<ref name="bind.content"/>
</element>
</define>
<define name="bind.content">
<ref name="ContExp"/>
<zeroOrMore>
<ref name="bvar"/>
</zeroOrMore>
<ref name="ContExp"/>
</define>
<define name="share">
<element name="share">
<ref name="CommonAtt"/>
<ref name="src"/>
<empty/>
</element>
</define>
<define name="cerror">
<element name="cerror">
<ref name="cerror.attributes"/>
<ref name="csymbol"/>
<zeroOrMore>
<ref name="ContExp"/>
</zeroOrMore>
</element>
</define>
<define name="cerror.attributes">
<ref name="CommonAtt"/>
</define>
<define name="cbytes">
<element name="cbytes">
<ref name="cbytes.attributes"/>
<ref name="base64"/>
</element>
</define>
<define name="cbytes.attributes">
<ref name="CommonAtt"/>
</define>
<define name="base64">
<data type="base64Binary"/>
</define>
<define name="cs">
<element name="cs">
<ref name="cs.attributes"/>
<text/>
</element>
</define>
<define name="cs.attributes">
<ref name="CommonAtt"/>
</define>
<define name="MathExpression" combine="choice">
<ref name="ContExp"/>
</define>
</grammar>