<?xml version="1.0" encoding="UTF-8"?>
<metanorma xmlns="https://www.metanorma.org/ns/standoc" type="semantic" version="2.9.1" schema-version="v2.3.0" flavor="ribose">
<bibdata type="standard">
<title language="en" type="main">Plurimath specifications — Math model</title>
<docidentifier primary="true" type="Ribose">1001(d)</docidentifier><docnumber>1001</docnumber><date type="updated"><on>2026-10-31</on></date><contributor><role type="author"/><organization>
<name>Ribose Asia Limited</name>
<abbreviation>Ribose</abbreviation></organization></contributor><contributor><role type="author"><description>committee</description></role><organization>
<name>Ribose Asia Limited</name>
<subdivision type="Committee" subtype="technical">
<name>Plurimath</name>
</subdivision></organization></contributor><contributor><role type="publisher"/><organization>
<name>Ribose Asia Limited</name>
<abbreviation>Ribose</abbreviation></organization></contributor><edition>1</edition><version>2026-10-31</version><language>en</language><script>Latn</script><status><stage>draft-standard</stage></status><copyright><from>2026</from><owner><organization>
<name>Ribose Asia Limited</name>
<abbreviation>Ribose</abbreviation></organization></owner></copyright><ext><doctype>standard</doctype><flavor>ribose</flavor></ext></bibdata><metanorma-extension><semantic-metadata><stage-published>false</stage-published></semantic-metadata>
<presentation-metadata><toc-heading-levels>2</toc-heading-levels><html-toc-heading-levels>2</html-toc-heading-levels><doc-toc-heading-levels>2</doc-toc-heading-levels><pdf-toc-heading-levels>2</pdf-toc-heading-levels></presentation-metadata></metanorma-extension>
<boilerplate><copyright-statement>

<clause id="_0bf1199e-8f6c-bc16-f9b0-78b3f1efec79" obligation="normative"><p id="_945067f2-795a-1e64-6f2b-25dd57c0f4d3">© Ribose Asia Limited 2026</p>
</clause>
</copyright-statement>

<license-statement>

<clause id="_3179d22c-816d-e694-6037-341f744bc6dc" obligation="normative">
<title id="_5ad8fb30-fcae-1072-87a2-407e6b4939ec">Warning for Drafts</title>
<p id="_a24807ee-0381-7ef8-1167-c3aacbb0fd73">This document is not a Ribose Standard. It is distributed for review and comment, and is subject to change without notice and may not be referred to as a Standard. Recipients of this draft are invited to submit, with their comments, notification of any relevant patent rights of which they are aware and to provide supporting documentation.</p>
</clause>
</license-statement>

<legal-statement>

<clause id="_7e0f3c63-3fc9-65cf-37f7-b94afa0dbc5d" obligation="normative"><p id="_50bbfa02-61c3-8332-bad8-61e7389d1808">All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior written permission. Permission can be requested from the address below.</p>
</clause>
</legal-statement>

<feedback-statement>

<clause id="_d43a5e83-e752-e9bc-955e-4282a8ebb43a" obligation="normative"><p id="_0145a561-c9cc-a509-4784-ac2a1e6ea922" anchor="boilerplate-name" align="left">Ribose Asia Limited</p>

<p id="_80954cc8-1f49-9d20-5987-829595995a92" anchor="boilerplate-address" align="left">Suite 1, 8/F, New Henry House<br/> 10 Ice House Street<br/> Central<br/> Hong Kong<br/> <br/> <link target="mailto:copyright@ribose.com"/><br/> <link target="https://www.ribose.com">www.ribose.com</link></p>
</clause>
</feedback-statement>
</boilerplate><preface><foreword id="_a2690f14-8360-86ae-ca2c-99f387a5088e" obligation="informative">
<title id="_41c9fad3-d4c1-eecc-4fad-f91704acc026">Foreword</title>
<p id="_d7e3603f-1ba7-30c6-c0f7-5481a71bda00">This document is the first document of the Plurimath specifications series. The series documents the Plurimath formula system as implemented by the <tt>plurimath</tt> interpreter: the math model shared by every input and output representation (this document), the uncertainty model, the format interfaces, and the evaluation semantics.</p>

<p id="_234c211c-60c9-4411-45bf-8dc3405cfd91">The math model described here is the one implemented in the <tt>plurimath</tt> gem, version 0.11.12 and later of the 0.11 series. Where this document and the implementation disagree, the disagreement is a defect in one of the two, and is resolved in favour of whichever is corrected first; the series does not describe an unimplemented design.</p>

<clause id="_afaed03e-b079-cf39-3b12-ef5c58b96c50" obligation="informative">
<title id="_d07098c5-afee-ddda-149e-703b6c3dd4cb">Documents in the series</title>
<table id="_f78eb6bb-e5cc-238e-b83a-5eefe43c04d3"><colgroup><col width="16.6666%"/><col width="50%"/><col width="33.3334%"/></colgroup>
<name id="_b4ba4c7e-1a47-071b-56b4-1f567c6576e5">.Documents in the series</name>
<thead><tr id="_dbedbfef-a363-4bae-4569-a676998fb05b"><th id="_c543a6cf-9fb6-5062-5453-813067c0c044" valign="top" align="left">Number</th>
<th id="_15633a54-eafc-6b73-7d7b-0774435e0c37" valign="top" align="left">Title</th>
<th id="_2083884a-3778-0a0b-9358-a80e718699e7" valign="top" align="left">Subject</th>
</tr></thead>
<tbody><tr id="_775e99d5-711a-efdc-2140-02889da4bc61"><td id="_5b005c2c-1c85-ce74-7651-3d30a28b2287" valign="top" align="left">1001</td>
<td id="_e9cf7687-7123-3e66-3cdd-41aaa460be76" valign="top" align="left">Math model</td>
<td id="_463dc84d-7edf-9a46-2d05-bad97ad003c3" valign="top" align="left">The formula tree, the node classes, the symbol and function registry, the rendering surfaces</td>
</tr><tr id="_e7966210-2f75-93cb-c9ea-05816f14d44d"><td id="_b1ed8d65-15c7-ae6e-6b65-73f9dddda767" valign="top" align="left">1002</td>
<td id="_8b77942d-3e2c-c10b-cd9e-8b5faef7f607" valign="top" align="left">Uncertainty model</td>
<td id="_ee417359-f25f-4310-6bb3-5b5cae7d425d" valign="top" align="left">Uncertainty nodes, their fields and their per-format representations</td>
</tr><tr id="_515f1f18-52c7-3477-f6a8-6365e64ecc4e"><td id="_d2235ca2-c23e-432e-2ad5-ce87086fe460" valign="top" align="left">1003</td>
<td id="_b50ec9ce-0b82-c7a3-29b1-df6e262aed4a" valign="top" align="left">Format interfaces</td>
<td id="_f5b91ff5-f410-97f5-2ff5-0759ded2069c" valign="top" align="left">The per-format readers and writers: MathML, OMML, UnicodeMath, LaTeX, HTML, AsciiMath</td>
</tr><tr id="_d42e6f9a-8607-cc17-fe14-e8b2f641bd07"><td id="_ff3c0618-edc1-2bc4-a770-ac91153e46d2" valign="top" align="left">1004</td>
<td id="_d9cc6220-a43d-3bdf-3771-2e6da96c0ba8" valign="top" align="left">Evaluation</td>
<td id="_a603b6d2-4fbe-6d34-d4e2-f5ee4a133e28" valign="top" align="left">Numeric evaluation of formula trees, uncertainty propagation, coverage</td>
</tr></tbody>
</table>
</clause>

<clause id="_8fe16c38-4305-11ae-5d5f-c35806280696" obligation="informative">
<title id="_4fea3186-2180-1e82-d5bc-ee7444d066e5">Maintainers</title>
<p id="_74a4ff9c-4e9d-631d-9882-1bc2838de2c7">This document is maintained by the Plurimath project at <link target="https://github.com/plurimath/plurimath"/>. Corrections and implementations are tracked as issues in that repository.</p>
</clause>

<clause id="_6a81aa92-9d3e-8fe6-ef24-c0a63e9be82a" obligation="informative">
<title id="_b6e090b4-0f07-29e6-545c-664655b5fdd7">Stability of this document</title>
<p id="_4ac687fe-1ec8-0691-82bf-1902b309427a">This document is a draft standard. The model it describes is implemented and released; the document pins behaviour to model versions so that readers can tell which statements describe released software and which anticipate the next edition. Corrections that change observable behaviour arrive with a model-version change and are recorded here; corrections that only clarify arrive at any time.</p>
</clause>
</foreword><introduction id="_f6de098d-9888-3ed8-3b61-87f44b39abfa" obligation="informative">
<title id="_2b2e98d1-114a-3da4-8556-01ae0a724280">Introduction</title>
<p id="_b4751495-141b-05a0-f408-387c2b5db455">Plurimath reads mathematics written in one text or markup form and writes it in another: AsciiMath, UnicodeMath and LaTeX on the input side; MathML, OMML (Office Math Markup Language), LaTeX, UnicodeMath, HTML and AsciiMath on the output side. It also evaluates simple formula trees numerically and carries measurement uncertainty through them.</p>

<p id="_5aa099b8-7a6b-f3d2-114f-227e35cdc887">Doing all of that through a single implementation would be impossible without a single representation in the middle. Every reader converts its input into one tree shape; every writer consumes that same shape. This document defines that shape: the formula tree, the node classes that compose it, the registry of symbols and functions the nodes refer to, and the rendering surfaces that produce each output format.</p>

<p id="_5ce9b65a-9416-547f-630d-0f6d10b0cf20">The model is deliberately independent of any syntax. Nothing in the tree records which input notation produced it, and nothing in the tree is specific to one output notation. A tree built from an OMML document and a tree built from the equivalent AsciiMath source are the same object with the same content, and they render identically in every format. That property — one model, many representations — is the load-bearing wall of the whole system: correctness is stated once, here, instead of once per format pair.</p>

<p id="_264c41c5-ee11-04e5-dc26-4913646dfa78">Three further documents build on this one. The uncertainty model (1002) defines the fields an uncertainty node carries; the format interfaces (1003) define how each reader and writer behaves at its boundary; evaluation (1004) defines what it means to compute with these trees. This document defines the thing they all operate on.</p>

<example id="_e69a99ab-0a42-61ea-0804-41f78873c557"><p id="_c704ee83-1407-8a2d-b0a8-6ea993d219c7">The AsciiMath source <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <mrow>
      <munderover>
        <mo>∑</mo>
        <mrow>
          <mi>i</mi>
          <mo>=</mo>
          <mn>1</mn>
        </mrow>
        <mi>n</mi>
      </munderover>
      <msup>
        <mi>i</mi>
        <mn>3</mn>
      </msup>
    </mrow>
    <mo>=</mo>
    <msup>
      <mrow>
        <mo>(</mo>
        <mfrac>
          <mrow>
            <mi>n</mi>
            <mrow>
              <mo>(</mo>
              <mi>n</mi>
              <mo>+</mo>
              <mn>1</mn>
              <mo>)</mo>
            </mrow>
          </mrow>
          <mn>2</mn>
        </mfrac>
        <mo>)</mo>
      </mrow>
      <mn>2</mn>
    </msup>
  </mstyle>
</math><asciimath>sum_(i=1)^n i^3 = ((n(n+1))/2)^2</asciimath></stem> and the OMML document produced from rendering that source are two representations of one formula. Plurimath parses either into the same formula tree: a <tt>Sum</tt> (nary) node carrying sub/superscript limits and a power expression; an equality; a fenced fraction; a square. Rendering that tree to MathML, OMML, LaTeX, UnicodeMath, HTML or AsciiMath yields the six outputs with identical mathematical content.</p>
</example>
</introduction></preface><sections>

<clause id="_a6b4ad96-7bef-2e3d-25d0-dfa5345097b2" type="scope" obligation="normative">
<title id="_f70b6ff6-6131-0e24-81e1-850dbe94b63d">Scope</title>
<clause id="_1ac8fb4e-069b-ffde-b942-9f24a7ae1ea2" obligation="normative">
<title id="_917955c1-7e75-5fad-982e-70ebd4b7acee">General</title>
<p id="_d13c044f-93b3-8f93-7275-d56b096d9d8a">This document specifies the math model of the Plurimath system:</p>

<ul id="_9e073885-5465-1b91-d40f-2eb76c31ee72"><li><p id="_8a3547a1-2f67-80e6-7190-4800daac4250">the formula tree and its ownership rules;</p>
</li>
<li><p id="_696ad3ee-4447-13d2-08d7-3a50dbe9b794">the node classes — formula containers, symbols, numbers, functions, tables, font styles, unit embeddings and uncertainty nodes — with their attributes and relationships;</p>
</li>
<li><p id="_b06fe21b-88e2-7662-e2ee-8579d2d934da">the registry of symbols and functions, its entry shape, its generation and its versioning;</p>
</li>
<li><p id="_d18743a5-420a-228b-739c-c465708a815f">the rendering surfaces: the contract each output format satisfies and the stability rules that govern them;</p>
</li>
<li><p id="_cfec95e0-8684-fd15-82b5-4f101218a4e2">the rules by which the model is extended;</p>
</li>
<li><p id="_1ba8b346-dcea-3b98-efc3-191dfa089088">conformance of an implementation of this model.</p>
</li>
</ul>

<p id="_c907d05d-7bf8-baca-f31c-6c5e5386a461">This document does not specify:</p>

<ul id="_03978ce7-96a5-bde5-6094-505bf5cf2c45"><li><p id="_ce0d9629-2ce6-5f18-eb44-27513e36579e">the syntax of any input representation, or the behaviour of any reader (format interfaces, document 1003);</p>
</li>
<li><p id="_3f81b228-588b-fa09-9cfb-c636b7a6930d">the representation of uncertainty inside specific notations, nor uncertainty arithmetic (uncertainty model, document 1002);</p>
</li>
<li><p id="_93896fbb-6161-7ba5-e245-4c21a5b0b454">numeric evaluation, propagation or coverage (evaluation, document 1004);</p>
</li>
<li><p id="_e06a7207-31f4-cacc-cd5f-7bba57fd4aa1">the UnitsML unit-expression language, which is specified in the UnitsML series (asciiunits content language, CalConnect 36817), and is consumed by the model through the <tt>Unitsml</tt> node defined here.</p>
</li>
</ul>
</clause>

<clause id="_c68b9b5b-702d-e284-6728-b871e580ba17" obligation="normative">
<title id="_c2e8613d-9c75-ab29-bedc-57271c2b7976">Relationship to the series</title>
<table id="_d7987e4d-a5e9-481c-9264-3184d79bcf32"><colgroup><col width="25%"/><col width="75%"/></colgroup>
<name id="_2d809204-d3ff-342c-900d-3b9ed28aa618">Relationship to the series</name>
<thead><tr id="_9527b38b-f19d-5d6f-e437-122274b292a3"><th id="_16eeed8d-a9d8-685e-0009-7b18bb6b2177" valign="top" align="left">Document</th>
<th id="_288d5435-13f8-37bc-31bb-3b3941bd0b37" valign="top" align="left">Relationship to this one</th>
</tr></thead>
<tbody><tr id="_cc38ff5c-13c6-804b-aae3-89c0f42eb697"><td id="_7cc267b7-38a3-9084-596e-c97501883590" valign="top" align="left">1002 Uncertainty model</td>
<td id="_def37f5a-25a8-6df9-df8b-4ce60d805d4c" valign="top" align="left">defines the fields this document’s <tt>Uncertainty</tt> node carries and their per-format representations</td>
</tr><tr id="_b293ad93-0e96-a511-4546-cd7cb75fbf89"><td id="_44c5bcc5-230a-ab48-5567-940abda7d0fe" valign="top" align="left">1003 Format interfaces</td>
<td id="_6d3e8b0e-f487-fcc4-a469-27fa001fdf92" valign="top" align="left">defines the readers that produce this document’s tree and the writer-side detail per surface</td>
</tr><tr id="_fb701ee4-052e-9460-84a1-ad17f13ec73c"><td id="_585c85c6-bc1f-9090-4ad9-1dc8fa9c27b7" valign="top" align="left">1004 Evaluation</td>
<td id="_4edb4b00-303e-37da-14f8-363588a0be9f" valign="top" align="left">consumes this document’s tree numerically; the model performs no arithmetic</td>
</tr><tr id="_6dbd2570-4a4d-f92c-11ca-3b9cea9ac215"><td id="_24b8c692-fa2d-14bb-8f38-e03de81a99c0" valign="top" align="left">CalConnect 36813, 1005, 1006</td>
<td id="_7e9691c1-7392-f2d7-f28c-ff043200745f" valign="top" align="left">define the numeric contract, the XML usage and the content language behind the <tt>Unitsml</tt> node</td>
</tr></tbody>
</table>
</clause>

<clause id="_b2cc78e7-f1bd-a33e-3bf9-e5c7d6bfe731" obligation="normative">
<title id="_1d0e1a4c-ffd7-07ab-27d9-1b93b15f0191">Audience</title>
<p id="_7f131a08-e118-b022-eed1-acd09e14cd9c">Implementers of Plurimath itself, implementers of independent readers or writers that must interoperate with it, and authors of the neighbouring documents in this series.</p>
</clause>
</clause>



<terms id="_275ce213-f7cb-0644-7678-2875dbcfd165" obligation="normative">
<title id="_dfb2eab2-f980-6365-3c47-81d0eb272962">Terms and definitions</title><p id="_dcc01114-4d03-3550-1347-4ba901bda94c">For the purposes of this document, the following terms and definitions apply.</p>
<p id="_44019f7c-608e-0020-3363-715be497391e">For the purposes of this document, the following terms and definitions apply.</p>

<term id="_13a6e407-ddc1-f242-4445-bc08ba806379" anchor="term-formula-tree"><preferred><expression>
<name>formula tree</name>
</expression>
</preferred>
<definition id="_662b3a8b-e662-c069-ffd3-a11e6521744a"><verbal-definition id="_2d423e90-5715-e82d-f05c-679233554b42"><p id="_d6e4bb93-5342-5cc8-8cdd-19fe1ee178d6">the tree structure produced by every reader and consumed by every writer: a <tt>Formula</tt> root whose descendants are nodes</p></verbal-definition></definition>
 </term>

<term id="_4dd155f2-d45a-fe18-0163-7c0dd6029a48" anchor="term-node"><preferred><expression>
<name>node</name>
</expression>
</preferred>
<definition id="_40c42886-548c-d9e1-0ae1-414de271ef3b"><verbal-definition id="_f4a9512d-231a-8bb2-bdda-e92d52415c29"><p id="_3310dc03-e8a8-90f0-6dc6-c993303f2ee6">one element of the formula tree; an instance of a node class</p></verbal-definition></definition>
 </term>

<term id="_8f221413-5927-f8e1-5733-59b307fd7a83" anchor="term-node-class"><preferred><expression>
<name>node class</name>
</expression>
</preferred>
<definition id="_c070867f-7fd8-3f51-b5df-22964a156da6"><verbal-definition id="_d8e5c9cb-92b8-674f-1802-3054576a5f5e"><p id="_d42a8964-9460-2527-2cfc-5533b396d819">one of the classes enumerated in this document: <tt>Formula</tt>, <tt>Symbol</tt>, <tt>Number</tt>, <tt>Text</tt>, one of the function classes of <xref target="annex-a"/>, one of the font styles, one of the table classes, <tt>Unitsml</tt>, or <tt>Uncertainty</tt></p></verbal-definition></definition>
 </term>

<term id="_9f934108-4a8a-a033-1e12-37bcc03583a7" anchor="term-container-node"><preferred><expression>
<name>container node</name>
</expression>
</preferred>
<definition id="_bdd351b7-1aed-b60b-4b38-8dec13bc62aa"><verbal-definition id="_8ac0671d-4636-8ff7-216a-3e04b456ea5a"><p id="_c6786ddd-9245-2c15-1bb1-de8d929cb41e">a node whose role is structural: <tt>Formula</tt> itself, <tt>Fenced</tt>, <tt>Left</tt>, <tt>Right</tt>, <tt>Table</tt> and its variants, <tt>Td</tt>, <tt>Tr</tt>, <tt>Mlabeledtr</tt>, <tt>Multiscript</tt>, <tt>Linebreak</tt></p></verbal-definition></definition>
 </term>

<term id="_0ec5e933-8154-6047-3325-3fc604fe3de1" anchor="term-symbol"><preferred><expression>
<name>symbol</name>
</expression>
</preferred>
<definition id="_a42ea577-262d-422f-3a45-697e6f573034"><verbal-definition id="_75d6c055-a07b-9cb4-f542-33a2c816337e"><p id="_49e73940-265e-10cf-035a-9f2c9c6dc4eb">a node of the symbol space: one glyph or operator name drawn from the symbol registry</p></verbal-definition></definition>
 </term>

<term id="_8e535d54-e506-9241-7d40-8716022df4b1" anchor="term-symbol-registry"><preferred><expression>
<name>symbol registry</name>
</expression>
</preferred>
<definition id="_601a892b-6e8a-4149-4b74-8901f15fe821"><verbal-definition id="_cc1e2448-7131-ec4f-711a-93efdac8dae0"><p id="_048b2d69-b3cb-1d4d-a275-9bda1d2da8af">the versioned set of symbol entries; at edition 1 of this document it contains 1 438 symbol entries, one per symbol class of the implementation</p></verbal-definition></definition>
 </term>

<term id="_28f32e46-7261-8bf5-12f3-974b6718a899" anchor="term-function-node"><preferred><expression>
<name>function node</name>
</expression>
</preferred>
<definition id="_1e6e71ea-fd9a-3e3a-6b36-d50f5550e0e4"><verbal-definition id="_fb5549f5-d635-11a6-ef68-ce0b324ff117"><p id="_726a17f9-3ef3-610b-7647-d2f9aa3afd67">a node of one of the 103 function classes, carrying zero or more operand subtrees</p></verbal-definition></definition>
 </term>

<term id="_9b057e0c-7aae-8eb3-19d9-c486e21fe8d8" anchor="term-operand"><preferred><expression>
<name>operand</name>
</expression>
</preferred>
<definition id="_19dd23b6-745a-b9e9-85e3-5307b7b9eb21"><verbal-definition id="_16091ce6-b772-366d-f87b-82c57164fcce"><p id="_8469da7c-bf0e-3edd-b4db-206a2f82d9b5">a subtree held by a function node; the number and order of operands is fixed by the function class</p></verbal-definition></definition>
 </term>

<term id="_0fe978af-b0f0-f39d-8277-c773e7277d37" anchor="term-font-style-node"><preferred><expression>
<name>font style node</name>
</expression>
</preferred>
<definition id="_7dfeb8d4-1711-9407-3edb-8f81b11baf77"><verbal-definition id="_ee260156-fefd-11b7-559c-ec82233c8960"><p id="_6cf296c8-8a03-f2b2-2ded-7b1d867061a8">a node that applies one of the 14 font variants to its operand (<tt>bold</tt>, <tt>italic</tt>, <tt>fraktur</tt>, and so on)</p></verbal-definition></definition>
 </term>

<term id="_43da3346-bd39-0841-afd5-d36a5e586b35" anchor="term-table-node"><preferred><expression>
<name>table node</name>
</expression>
</preferred>
<definition id="_527c1845-7357-79d9-6718-2218d6ccad89"><verbal-definition id="_f59549fe-e65b-7a90-0f9c-e9750e84bab3"><p id="_36921408-bd3a-37e5-d98e-330acde45513">a node of one of the 10 layout classes (<tt>matrix</tt>, <tt>bmatrix</tt>, <tt>pmatrix</tt>, <tt>vmatrix</tt>, <tt>cases</tt>, <tt>array</tt>, <tt>align</tt>, <tt>eqarray</tt>, <tt>split</tt>, <tt>multline</tt>), holding rows of cells</p></verbal-definition></definition>
 </term>

<term id="_a5b4e5b1-3aeb-b49f-6199-0397fdb772dc" anchor="term-Unitsml-node"><preferred><expression>
<name>Unitsml node</name>
</expression>
</preferred>
<definition id="_61158427-5364-1e0b-7e4c-785f63402769"><verbal-definition id="_c9c4a3f0-d032-cd05-8bbb-c26dbd0f9faa"><p id="_1827dc45-e951-19a4-378a-0e2edceb68a0">a node embedding a UnitsML unit expression together with the rendered forms the UnitsML system produces for it</p></verbal-definition></definition>
 </term>

<term id="_66064cb0-30c4-d452-8494-7bc2bdd626f6" anchor="term-Uncertainty-node"><preferred><expression>
<name>Uncertainty node</name>
</expression>
</preferred>
<definition id="_f53465b4-4260-346d-fc49-1e744d37e929"><verbal-definition id="_8d77a717-2af7-50f4-2776-71b7a7a4d384"><p id="_dc537bec-9647-a7ba-ed67-58bb7a33f6e7">a node attaching an uncertainty to a value expression: the estimate, the uncertainty magnitude, the category and the coverage, as defined in document 1002</p></verbal-definition></definition>
 </term>

<term id="_d49af599-851f-9c9f-6f37-6c44b330e758" anchor="term-rendering-surface"><preferred><expression>
<name>rendering surface</name>
</expression>
</preferred>
<definition id="_0288ac0d-e8f6-a554-e59f-e2b2db5d8ba0"><verbal-definition id="_4a563c3c-4bbd-5384-f12c-ee7beeb98bb2"><p id="_62c614f9-cd19-884f-6e96-0ee863f34db8">one output format and the set of rules that produce it: MathML, OMML, LaTeX, UnicodeMath, HTML, AsciiMath</p></verbal-definition></definition>
 </term>

<term id="_6aa8878c-265b-ce05-6777-c8c91affa6cb" anchor="term-reader"><preferred><expression>
<name>reader</name>
</expression>
</preferred>
<definition id="_17768910-789e-4040-0184-7d79a1f99167"><verbal-definition id="_3807c703-5963-a305-6448-3fe59b1c7d23"><p id="_5f83d614-71bc-a975-d260-3af7370ffe98">a component that converts one input representation into the formula tree (specified in document 1003)</p></verbal-definition></definition>
 </term>

<term id="_4334a9e6-0c28-0207-9aee-98915db34d4b" anchor="term-writer"><preferred><expression>
<name>writer</name>
</expression>
</preferred>
<definition id="_6c24897d-bd6a-9946-6961-a77c5b2b147e"><verbal-definition id="_d6abb2b9-3be7-fa9f-c294-3d9932cef74f"><p id="_1efede1d-f81c-1f61-b013-53ec46c81abc">a component that converts a formula tree into one rendering surface (specified here as to the contract each surface satisfies; format detail in document 1003)</p></verbal-definition></definition>
 </term>

<term id="_061eac9c-aba7-18cd-e7e6-f90dde3264fc" anchor="term-math-zone"><preferred><expression>
<name>math zone</name>
</expression>
</preferred>
<definition id="_5a303353-0775-b9ec-9e9e-f2e1b7a29b77"><verbal-definition id="_bbb4a68b-ed4e-d076-dfd5-6a6ccb4dd0e8"><p id="_da8eadd3-7b60-819c-3f7b-40b6a212cf35">the textual rendering of a tree used for diagnostics, one line per node, showing nesting by indentation</p></verbal-definition></definition>
 </term>

<term id="_d604f95d-b777-7a20-dd7e-ce0f2128dfa9" anchor="term-byte-identical"><preferred><expression>
<name>byte-identical</name>
</expression>
</preferred>
<definition id="_10c21083-86b5-749e-c398-3301b20fc892"><verbal-definition id="_368d1e19-949b-3e38-7b97-63a842482be8"><p id="_544d6d2e-5ecd-89a8-adee-63c0d29bf233">producing the same bytes for the same input tree and the same model version, on any conforming implementation</p></verbal-definition></definition>
 </term>

<term id="_2c5f6dbc-b3f6-e797-fc4c-2f85b582bdea" anchor="term-model-version"><preferred><expression>
<name>model version</name>
</expression>
</preferred>
<definition id="_cb99b9d7-d16f-5d01-bb80-f0c23e822078"><verbal-definition id="_755ab19d-4968-5fa6-0cd2-2c81d23886ae"><p id="_51f86e2f-2b19-f7a5-1ebd-bc718ddafce4">the version of the implementation’s model library (the <tt>plurimath</tt> gem version); render output is defined per model version</p></verbal-definition></definition>
 </term>

<term id="_d8590b69-2db0-f5fb-4401-2ca91fb144f2" anchor="term-rendering-options"><preferred><expression>
<name>rendering options</name>
</expression>
</preferred>
<definition id="_3d5780d8-44f7-823e-9302-22a100c1e373"><verbal-definition id="_b9528626-43fe-df3e-d6ae-8d9902d85d87"><p id="_860c13b7-b92a-2d7d-c584-36c1180c7efb">the presentation flags carried by the root: display style, linebreak handling, and the per-surface options the root admits; never carried by descendant nodes</p></verbal-definition></definition>
 </term>

<term id="_0361cf23-4693-1d28-7137-e57be21ca6cb" anchor="term-nary-value"><preferred><expression>
<name>nary value</name>
</expression>
</preferred>
<definition id="_9b47333f-5365-7120-4cfe-9950244c71fc"><verbal-definition id="_c28a4d61-d747-5928-1d94-3e770acc0cc5"><p id="_36d46387-5c9a-22d9-eac6-dc56883553f1">the operator glyph a nary function node carries (<tt>∑</tt>, <tt>∏</tt>, <tt>∫</tt>, <tt>∮</tt>), emitted on nary constructs by the MathML and OMML surfaces</p></verbal-definition></definition>
 </term>

<term id="_e9e59c23-43bc-b690-a4b1-3461cdd1d775" anchor="term-coverage"><preferred><expression>
<name>coverage</name>
</expression>
</preferred>
<definition id="_03d20573-b972-419a-1a8c-09ff637f107c"><verbal-definition id="_577b6ca9-e518-d31a-5580-4e585eaa1b74"><p id="_f3c5da29-6a29-0662-5e17-d72906dfc91d">the probability or factor attached to an uncertainty of the coverage category; content specified in document 1002</p></verbal-definition></definition>
 </term>

<term id="_3380f0b0-94ee-c8b2-5f84-c6afe57ac930" anchor="term-fallback"><preferred><expression>
<name>fallback</name>
</expression>
</preferred>
<definition id="_18ecb36c-32de-724c-e5d1-913efad6dfcf"><verbal-definition id="_d8eb4795-e53b-2ccb-e032-bb942027470c"><p id="_e8241626-deb8-ef86-b6ba-f00f27f6512f">the one declared substitute rendering a surface emits when a construct has no faithful form in that format</p></verbal-definition></definition>
 </term>

<term id="_0e18e144-2980-b560-ebff-7ae01ba9a77c" anchor="term-registry-edition"><preferred><expression>
<name>registry edition</name>
</expression>
</preferred>
<definition id="_51e56aa4-22fb-8e65-826e-acee8967c4ee"><verbal-definition id="_22276224-65c0-fc98-d146-eb625271d0eb"><p id="_813a76fd-837b-d4a0-e5a7-f9ee064d4cbc">the published version of the registry data; entry renderings are immutable within an edition</p></verbal-definition></definition>
 </term>

<term id="_31f51938-eef6-10d0-3518-28db804180f5" anchor="term-composition"><preferred><expression>
<name>composition</name>
</expression>
</preferred>
<definition id="_7f15fa54-8cbc-e03c-ef28-8608f0cb8d75"><verbal-definition id="_822e3cb1-2209-b31a-4b2a-c4c484f71692"><p id="_653757b5-4597-60f2-f53b-4a74cf2c7b37">the ownership relation between a container node and the nodes it holds; a composed node has exactly one owner, and the tree is acyclic</p></verbal-definition></definition>
 </term>

<term id="_045bd540-78a5-0d5a-305d-d770415ff25e" anchor="term-presentation-option"><preferred><expression>
<name>presentation option</name>
</expression>
</preferred>
<definition id="_ac11caa5-f8a1-433f-0410-0fab67d32877"><verbal-definition id="_55dfc22a-0f55-2628-e792-964be03fa896"><p id="_8cce8177-f938-5876-2132-a1d122cb76ac">a root-level flag that changes surface presentation without changing tree content; display style is the primary example</p></verbal-definition></definition>
 </term>

<term id="_43b8b6f2-1d06-7df3-2f9e-1edaec864cd7" anchor="term-registry-regeneration"><preferred><expression>
<name>registry regeneration</name>
</expression>
</preferred>
<definition id="_34c7b8bb-1e3e-7742-df6a-1558c59d8d5f"><verbal-definition id="_02e5dd89-f391-352e-96bc-2ad1aac814d3"><p id="_0cdda257-c868-e78e-5aad-8a48c420ce0c">the deterministic generation of symbol classes and parser vocabulary from the registry data; byte-identical within an edition</p></verbal-definition></definition>
 </term>
</terms>

<clause id="_504b0a01-c539-a672-9f36-3da06bebc511" obligation="normative">
<title id="_577f0878-cbad-249b-c576-b43a5f664bb6">Conventions</title>
<clause id="_6860df82-176f-6d05-615f-8f66946de7db" obligation="normative">
<title id="_b6419981-f350-3921-54ac-62c177e134e7">Tree notation</title>
<p id="_f0b3b456-6ff6-ebb5-0a5d-2d1980f9ac05">Trees are written as indented lines, one node per line:</p>

<sourcecode id="_d7c4a58e-5693-6f01-cff7-2dc1d267e32b"><body>Formula
└─ Power
   ├─ Symbol("x")
   └─ Number("2")</body></sourcecode>


<p id="_642d87e6-aece-44ed-feca-f7057a2d761c">The class name appears first; a quoted string after the name is the node’s value (<tt>Symbol</tt>, <tt>Number</tt>, <tt>Text</tt>). This is the shape the math zone printer emits.</p>
</clause>

<clause id="_49882f55-4e57-528b-0d44-19413a166fe9" obligation="normative">
<title id="_e9f19607-0eba-c5f0-206e-d25ce63aee52">Examples</title>
<p id="_fe13eaed-8b0a-38c3-9806-960851023f93">Examples appear in blocks titled <strong>Example</strong> and end with an <strong>Expected outcome</strong> paragraph. The expected outcome states what a conforming implementation does; an implementation that does something else does not conform to the clause the example illustrates.</p>
</clause>

<clause id="_7de6b5e3-c7dc-d1ce-c508-dfdb1616c6ec" obligation="normative">
<title id="_dc8551da-09da-b6b1-3b30-aa33d4030379">Identifiers</title>
<p id="_2e805d4f-ef08-1709-5f3d-d7f4f4ef235d">Class names are written as they appear in the implementation: <tt>Plurimath::Math::Function::Frac</tt> is written <tt>Frac</tt> when the module is clear from context. The registry entries for symbols are written with the displayed glyph followed by the class name in parentheses when the glyph alone is ambiguous.</p>
</clause>

<clause id="_a6988772-7afc-1f03-ac94-2b95fed6bc28" obligation="normative">
<title id="_66c9cf30-98e5-5fae-716b-50bcf1f79204">Version references</title>
<p id="_7cf60eaa-4d1d-0ce1-d09c-961e6baafad8">Behaviour is pinned to model versions. “0.11.x” names any version whose version string begins <tt>0.11.</tt>; a clause that names a specific version, such as 0.11.12, applies to that version and is revisited at the next edition of this document.</p>
</clause>

<clause id="_68683eb2-7ad9-eace-3817-9918b1bb6cb0" obligation="normative">
<title id="_4a993aef-d6f3-6596-32fd-84150ccc7f63">Reading the LML blocks</title>
<p id="_4e35bd61-fcd5-f82d-7ed2-35cbe0f28635">The LML blocks of this document are the model. Attribute lines read as <tt>attribute name, Type</tt> with the cardinality following in braces where it is not one: <tt>attribute parameters, Node { cardinality 1..n }</tt> reads “every Formula carries one or more parameters, each a Node”. A cardinality left implicit is exactly one (<tt>[1]</tt>). Enumerations list their values; a node’s attribute of enumeration type carries one of them.</p>

<p id="_7360c3bb-9303-a853-7303-a43dbff97c6e">The LML blocks are checked: the model compiles with the LutaML toolchain, and a block that fails to compile fails the build of this document. The prose and the LML state the same model; where they appear to differ, the LML is corrected or the prose is — the two are never allowed to settle into disagreement.</p>
</clause>

<clause id="_cb436554-4596-eeaf-4ce0-62c7f3121e84" obligation="normative">
<title id="_bcd8a5a7-c50c-238e-ce10-60544b1e5dcf">Names</title>
<p id="_f34c5384-7a24-ba35-7ccb-87847b21201b">Conceptual class names are written without their implementation namespace: <tt>Formula</tt> stands for the implementation’s <tt>Plurimath::Math::Formula</tt>. Implementation namespaces appear once, here, and in the conformance vectors where byte output is frozen. A reader of this document needs no Ruby knowledge; an implementer maps each conceptual class to the implementation class of the same name.</p>
</clause>

<clause id="_e35147eb-c81b-ad4b-5071-e75fe5f98398" obligation="normative">
<title id="_62b1e4cf-a6a5-9872-04e0-5a91310c490e">The example format</title>
<p id="_ded8bf37-54f1-79bd-591b-388436a2090e">Examples carry an <strong>Expected outcome</strong> paragraph. The outcome is stated as the observable behaviour of a conforming implementation: rendered bytes where the example is about rendering, tree shape where it is about the model, and refusal behaviour where it is about a prohibition. An example whose outcome cannot be observed is a defect in this document.</p>
</clause>
</clause>

<clause id="_936aa97c-84a1-95c6-4cc6-45f79ab0897e" obligation="normative">
<title id="_8c87d01f-5a6e-6210-7cd8-e307110e38d2">The formula tree</title>
<clause id="_2dbccc13-6e47-2cbb-d1bd-91f03f3c405b" obligation="normative">
<title id="_0175f76d-716b-304d-d5e0-55b2c2c71130">General</title>
<p id="_0dacc1a9-df75-6fe1-ebc3-9123932406e5">The formula tree is specified as an LutaML model. The model is normative: classes, attributes, types and cardinalities are defined in the LML blocks of this clause, and the prose states the rules the diagrams cannot.</p>
</clause>

<clause id="_e11ab27d-4e1b-33b3-5ec5-a4a74d310bf2" obligation="normative">
<title id="_f74494b1-daa0-e4e5-6877-2b8623c94f39">The model</title>
<sourcecode id="_054d17ec-aed1-ea4e-6c36-85e250b4eacb" lang="lml"><body>lml "1.0"

models Plurimath {

  package Structure {

    class Node {
      attribute kind, String[1]
    }

    class Formula {
      attribute parameters, Node { cardinality 1..n }
      attribute display_style, Boolean
      attribute options, RenderingOptions
    }

    class Symbol {
      attribute entry, SymbolEntry[1]
    }

    class Number {
      attribute text, String[1]
    }

    class Text {
      attribute content, String[1]
    }
  }

  package Functions {

    class Function {
      attribute operands, Node { cardinality 0..n }
    }

    class UnaryFunction {
      attribute operand, Node[1]
    }

    class BinaryFunction {
      attribute first, Node[1]
      attribute second, Node[1]
    }

    class TernaryFunction {
      attribute first, Node[1]
      attribute second, Node[1]
      attribute third, Node[1]
    }

    class NaryFunction {
      attribute operand, Node[1]
      attribute lower_limit, Node
      attribute upper_limit, Node
      attribute nary_value, String[1]
    }
  }

  package Layout {

    class Table {
      attribute rows, Tr { cardinality 1..n }
    }

    class Tr {
      attribute cells, Td { cardinality 1..n }
    }

    class Td {
      attribute content, Node { cardinality 0..n }
    }

    class FontStyle {
      attribute variant, FontVariant[1]
      attribute operand, Node[1]
    }

    class Fenced {
      attribute content, Node { cardinality 1..n }
      attribute open, Symbol[1]
      attribute close, Symbol[1]
    }

    class Linebreak
    class None

    class Phantom {
      attribute operand, Node[1]
    }
  }

  package Measurement {

    class Unitsml {
      attribute expression, String[1]
      attribute unicode_form, String[1]
      attribute latex_form, String[1]
      attribute mathml_form, String[1]
      attribute xml_form, String[1]
    }

    class Uncertainty {
      attribute value, Node[1]
      attribute category, UncertaintyCategory[1]
      attribute magnitude, Node
      attribute coverage_factor, Node
      attribute coverage_probability, Node
      attribute lower, Node
      attribute upper, Node
      attribute interval_kind, IntervalKind
      attribute notation, Notation
      attribute unit, Unitsml
    }

    enum UncertaintyCategory {
      value standard
      value expanded
      value coverage-interval
    }

    enum Notation {
      value absolute
      value concise
    }

    enum IntervalKind {
      value shortest
      value probabilistically-symmetric
    }
  }

  enum FontVariant {
    value "bold"
    value "italic"
    value "bold-italic"
    value "sans-serif"
    value "sans-serif-italic"
    value "sans-serif-bold-italic"
    value "bold-sans-serif"
    value "monospace"
    value "fraktur"
    value "bold-fraktur"
    value "script"
    value "bold-script"
    value "double-struck"
    value "normal"
  }
}</body></sourcecode>

</clause>

<clause id="_173bea5b-5b26-0a67-eba1-dcb34b527ce0" obligation="normative">
<title id="_07d40470-c909-88f9-8763-c0a399537e92">The composition</title>
<sourcecode id="_3724d085-b558-337c-1fa0-6e6042b83ed7" lang="lml"><body>diagram PlurimathComposition {
  association HasParameters {
    owner Formula
    owner_type composition
    member_type Structure::Node
    member_multiplicity "1..n"
  }

  association HasOperands {
    owner Functions::Function
    owner_type composition
    member_type Structure::Node
    member_multiplicity "0..n"
  }

  association HasRows {
    owner Layout::Table
    owner_type composition
    member_type Layout::Tr
    member_multiplicity "1..n"
  }

  association HasCells {
    owner Layout::Tr
    owner_type composition
    member_type Layout::Td
    member_multiplicity "1..n"
  }
}</body></sourcecode>


<p id="_10821ad1-4ac2-0a2a-9896-22d9892dfd47">Every concrete function class of Annex A is a <tt>Function</tt> with a fixed operand count and order; the abstract shapes above (unary, binary, ternary, nary) are the families the concrete classes specialise.</p>
</clause>

<clause id="_8961ad29-5f1b-dd8f-192f-65fe0afba22d" obligation="normative">
<title id="_7470aaf4-f8db-22c5-f7fb-1a7515a9d06d">Root and ownership</title>
<p id="_37989f78-9587-276e-bbc5-c6784a1e66bb">A formula tree has exactly one root, a <tt>Formula</tt>. The root holds the ordered top-level nodes and the presentation options; descendant nodes carry none. Display style, font defaults and line width are decided once, at the root, and applied during rendering.</p>

<example id="_9fb9281a-4542-bc17-2c3a-7568d583027f"><p id="_c471d9b7-bd0d-3b09-d581-126d7c81a4a0">A tree with one top-level node, a power of <tt>x</tt> to <tt>2</tt>. <strong>Expected outcome.</strong> Rendering to MathML yields a <tt>&lt;math&gt;</tt> element containing <tt>&lt;msup&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;2&lt;/mn&gt;&lt;/msup&gt;</tt>; rendering to LaTeX yields <tt>x^{2}</tt>.</p>
</example>
</clause>

<clause id="_c41b6ce5-81c6-e52b-9189-d9b81a411e69" obligation="normative">
<title id="_a879300a-7a2c-36a8-0704-60b7d67185fb">Content nodes</title>
<p id="_8295bc7d-da3e-bef6-d986-c4efff7f1514">A <tt>Symbol</tt> holds one registry reference: a glyph, an operator name or a named constant from the symbol space of the registry (1 438 entries at this edition). The class carries the per-format renderings; the tree carries only the reference.</p>

<p id="_abeffe73-470b-eef8-5b4d-a5fe50c3cd30">A <tt>Number</tt> holds the numeral as written. The tree does not parse numbers into machine values — evaluation is a separate step (document 1004). Negative signs are not part of a <tt>Number</tt>; a minus is a <tt>Symbol</tt> sibling.</p>

<example id="_c9587041-3b53-6ba8-33c4-040bb5fbe134"><p id="_79591973-79f7-a2a8-aa5e-3ab49abf9c98">The tree for <tt>10^3 + 0.5</tt> is a <tt>Power</tt> over two <tt>Number</tt>s and an addition symbol over a further <tt>Number</tt>. <strong>Expected outcome.</strong> Rendering to LaTeX gives <tt>10^{3}+0.5</tt>; no rounding or normalization occurs at the model level.</p>
</example>

<p id="_e96a4966-b7b0-0a80-597c-4d1ce41f8ba9">A <tt>Text</tt> holds literal text to be typeset upright, copied verbatim by every surface, escaping only what the target format requires.</p>
</clause>

<clause id="_96eac368-cfa3-b45e-d1d7-75ba53958869" obligation="normative">
<title id="_6044309b-28cc-35ad-b602-10c2614bdf8a">Function nodes</title>
<p id="_b3e14384-0fbc-cd0e-e6e1-1da29f84d3f2">A function node is an instance of one of the concrete classes of Annex A. Operand order is normative and stable across editions: <tt>Frac</tt> renders its first operand as the numerator and its second as the denominator in every surface; <tt>Root</tt> renders its first operand as the radicand and its second as the degree. A reader may not reverse operand order to accommodate a quirk of its input; the surface writers absorb those quirks.</p>

<example id="_ea25f258-78db-9374-52d2-12a677fe90b3"><p id="_d7165731-6a77-b13d-c58e-5ce810af3aba"><tt>Root</tt> with radicand <tt>x</tt> and degree <tt>3</tt>. <strong>Expected outcome.</strong> MathML: <tt>&lt;mroot&gt;&lt;mi&gt;x&lt;/mi&gt;&lt;mn&gt;3&lt;/mn&gt;&lt;/mroot&gt;</tt>. LaTeX: <tt>\sqrt[3]{x}</tt>. UnicodeMath: <tt>∛(x&amp;3)</tt>.</p>
</example>

<p id="_0579421e-9c09-df1f-0a1f-47d38f3d713a">The nary family carries a <tt>nary_value</tt> (<tt>∑</tt>, <tt>∏</tt>, <tt>∫</tt>, <tt>∮</tt>) that the MathML and OMML surfaces emit on nary constructs.</p>
</clause>

<clause id="_70e15d03-d967-6d25-3cc1-cf2f399cead6" obligation="normative">
<title id="_3c78359f-e8b7-3f97-eb74-036bfab739f3">Tables, fonts and fences</title>
<p id="_ef95dea7-0d70-4d99-f069-39553dfcc4d3">A <tt>Table</tt> holds <tt>Tr</tt> rows of <tt>Td</tt> cells; the concrete table class determines the delimiters and alignment semantics of the output, the row and cell structure is shared. <tt>Mlabeledtr</tt> is a row carrying a label. <tt>Cases</tt> renders a left brace with a null right delimiter on every surface.</p>

<p id="_003f829d-55c3-c12b-d79a-8a1c3409f955">A <tt>FontStyle</tt> holds one operand and one <tt>FontVariant</tt>; MathML emits it as <tt>mathvariant</tt>, OMML as run properties, LaTeX as the corresponding command, UnicodeMath as the corresponding mathematical alphanumeric character where one exists.</p>

<p id="_de7f03f0-d687-95ee-3335-4294573538c6">A <tt>Fenced</tt> holds its content and its open and close symbols; <tt>Left</tt> and <tt>Right</tt> declare the halves separately in the linear surfaces.</p>
</clause>

<clause id="_5644f9b3-22b5-dd36-ae57-c95fd35cd1b9" obligation="normative">
<title id="_12e67006-048f-03ef-cfc1-1a85b69e6414">Units and uncertainty</title>
<p id="_577a9edf-04ad-740f-2905-558aa1288b82">A <tt>Unitsml</tt> embeds a unit expression written in the asciiunits content language (CalConnect 36817) together with the four renderings the UnitsML system supplies (CalConnect 36816). The tree performs no unit arithmetic: every surface emits the UnitsML-provided form for its format, and the XML form stays available machine-readably.</p>

<p id="_e3bfd15c-51c1-73a9-2e1e-2bd99ca352c7">An <tt>Uncertainty</tt> attaches an uncertainty to a value expression. Its fields are specified in document 1002 and stated here in summary: the value, the category (standard, expanded, coverage interval), the magnitude or endpoints, the coverage factor and probability where present, the interval kind, the notation and the unit; the model-level contract stated here is that an uncertainty is carried as a node, rendering never recomputes it, and a surface without a faithful form for its category renders the category’s declared fallback from document 1002 and nothing else.</p>
</clause>

<clause id="_8750967f-d758-4080-7dde-acf197b00cbf" obligation="normative">
<title id="_0f2aa025-f7ab-4298-12fe-7bb05da28415">Presentation constructs</title>
<p id="_95cf74e5-0556-ea43-b4a4-62d39ef4134c"><tt>Intent</tt> and <tt>Semantics</tt> carry the MathML 4 <tt>intent</tt> and <tt>semantics</tt> constructs. <tt>Phantom</tt> renders its operand as space of the operand’s measure. <tt>Menclose</tt>, <tt>Merror</tt>, <tt>Mglyph</tt>, <tt>Mpadded</tt>, <tt>Ms</tt>, <tt>Msgroup</tt>, <tt>Msline</tt>, <tt>Multiscript</tt>, <tt>Mlabeledtr</tt>, <tt>Linebreak</tt>, <tt>None</tt>, <tt>Longdiv</tt>, <tt>Cancel</tt>, <tt>Scarry</tt>, <tt>Scarries</tt>, <tt>Obrace</tt>, <tt>Ubrace</tt>, <tt>Rule</tt> and <tt>Color</tt> model their host-format constructs under the names of those constructs.</p>
</clause>

<clause id="_1779959c-3999-f759-6928-1071b65d24b9" obligation="normative">
<title id="_f654384a-fd00-50c2-ec73-0e440ee2c381">Invariants</title>
<p id="_73f364cc-eb0d-420c-f595-fd8f71be69d7">These properties hold for every tree a conforming implementation produces and consumes.</p>

<ul id="_03e243d8-d0be-9ecd-c5e8-042167e28925"><li><p id="_a0fb2a15-e523-5a7c-fe02-6d96edc2078f"><strong>Syntax independence.</strong> No node records the input notation the tree was read from. Two readers given equivalent inputs produce equal trees.</p>
</li>
<li><p id="_50b6159f-da36-3316-8d32-e20383106a81"><strong>Operand totality.</strong> Every function node’s operands are present and in the class-defined order before rendering; a class’s operand count is fixed.</p>
</li>
<li><p id="_2c469163-5801-2e67-a2fb-c8a68eb074c0"><strong>Render totality.</strong> Every surface renders every well-formed tree; where a construct has no faithful form in a format, the surface emits the construct’s declared fallback for that format.</p>
</li>
<li><p id="_e2c4893e-f74b-fc30-d6f5-0a31d7281e1f"><strong>No formatting in the tree.</strong> Layout hints live at the root or in surface options, never in descendant nodes.</p>
</li>
<li><p id="_3613f1e1-b105-6c9d-f396-bf944334613e"><strong>Structural equality.</strong> Two trees are equal when their classes, values and operand structure are equal. Equality does not consult rendering.</p>
</li>
<li><p id="_8a1efe85-3630-d2ff-e4a5-7294d9ccfcb0"><strong>Byte stability.</strong> A writer given the same tree and the same model version emits the same bytes on every conforming implementation.</p>
</li>
</ul>
</clause>

<clause id="_b4f2cb9c-a926-f0bb-a39e-571362a9f3a7" obligation="normative">
<title id="_4d47b0d6-7599-aa51-6521-e71460b92b8b">Quantity assertions</title>
<p id="_35236912-1919-343a-579f-124b7fc46a52">A tree may carry a quantity assertion: a statement that a subtree denotes a named quantity kind. The assertion is data — an intent annotation — and the tree performs no arithmetic gating with it. The semantics of assertions and their use in evaluation are specified in document 1004.</p>
</clause>

<clause id="_1a9b867a-f67d-cad8-c9e3-21af5eabe85a" obligation="normative">
<title id="_afffc90d-21a5-f1e0-6b3e-36b3956db09a">Normalisation</title>
<p id="_0ecb40bb-ec76-ff18-a946-e18538e7dfdc">The tree form is canonical within a model version. Constructions that differ only in incidental ways — a lone parameter held directly versus wrapped in a single-child container, equivalent fence pairings, a unary function written with or without explicit grouping — produce the same canonical tree after normalisation, and normalisation is applied at construction time, not at render time. Writers therefore never normalise: they render what the tree holds.</p>

<p id="_836f33b3-291d-708c-d2ba-861d5b2935f1">Structural equality (<xref target="formula-tree"/>) compares normalised trees. Two trees that are equal up to normalisation are equal.</p>

<example id="_22b9a160-b60d-53cd-e2ee-87bce3b5ada7"><p id="_ad12befb-bf10-1689-70f9-8918fa7853b9">The quadratic formula read from AsciiMath and read from MathML — <strong>Expected outcome.</strong> the two trees are equal after normalisation; neither required the other to adjust, and neither writer inserted normalisation steps.</p>
</example>
</clause>
</clause>

<clause id="_885b9b3b-b3a0-7037-0baf-baf4402b5fcf" anchor="registry" obligation="normative">
<title id="_c9b2da5a-1a22-8637-f43c-ab5bad5802d5">The registry</title>
<clause id="_8a8f2b25-c9ee-e96e-2f25-7f81ee12954e" obligation="normative">
<title id="_24abdf30-6d12-8734-45d3-cd1948186a03">General</title>
<p id="_68adc64a-b041-a4fa-31f7-898bfe8b355a">The registry is the versioned catalogue of everything the model can name: the symbol entries (<xref target="symbols-space"/>) and the function entries (<xref target="annex-a"/>). It exists so that the vocabulary of the system is data, not code spread across readers and writers.</p>
</clause>

<clause id="_9562fa4d-ed29-5e84-0213-6dd1ac2033b0" obligation="normative">
<title id="_6df8c413-705a-e091-b376-164b7b61da1b">Entry shape</title>
<p id="_93e86b36-a4ee-2989-50a3-5d21678921c6">A registry entry names one thing the model can represent and carries its renderings. The entry is an LML model:</p>

<sourcecode id="_346f39e9-3721-a4e4-6bef-4db4ceca4393" lang="lml"><body>models Registry {

  class SymbolEntry {
    attribute name, String[1]
    attribute glyph, String
    attribute mathml, String[1]
    attribute latex, String[1]
    attribute omml, String[1]
    attribute unicodemath, String[1]
    attribute categories, Category { cardinality 1..n }
    attribute status, EntryStatus[1]
  }

  class FunctionEntry {
    attribute name, String[1]
    attribute operands, String[1]
    attribute fallbacks, String { cardinality 0..n }
    attribute status, EntryStatus[1]
  }

  enum Category {
    value greek
    value operator
    value arrow
    value relation
    value logic
    value trigonometric
    value nary
    value accent
  }

  enum EntryStatus {
    value active
    value deprecated
  }
}</body></sourcecode>


<p id="_cc81d7bb-8fdb-2061-6e74-1f092b903bcd">Prose restatement of the fields:</p>

<table id="_6a5c7c61-9c16-9485-0ed6-183153b619eb"><colgroup><col width="25%"/><col width="75%"/></colgroup>
<name id="_a1db8201-4175-0bae-0101-b533b04fc192">.Registry entry fields</name>
<thead><tr id="_14f62451-0ec2-db6c-83ab-2b8454932ced"><th id="_b23e972d-e806-d5c1-115b-a9a6c6497cf5" valign="top" align="left">Field</th>
<th id="_0eaaa081-210e-be5b-6bb7-28e42459fc2c" valign="top" align="left">Content</th>
</tr></thead>
<tbody><tr id="_87d71067-d489-8ed3-11d9-a2d5a5b3baf1"><td id="_7efb006a-1b45-06a6-4c34-7964b2801684" valign="top" align="left">name</td>
<td id="_6e257649-a004-470a-c5bb-f4504a6931e8" valign="top" align="left">the class name of the entry (<tt>Alpha</tt>, <tt>Frac</tt>, <tt>Matrix</tt>, <tt>Plusminus</tt>)</td>
</tr><tr id="_abbf464a-367b-ba44-8a9f-4fe48df0a955"><td id="_09100854-e9d2-ea4e-479f-2f548562da94" valign="top" align="left">glyph</td>
<td id="_011cab4b-38b6-f418-900a-66be94017b8c" valign="top" align="left">the displayed Unicode character or character sequence where one exists</td>
</tr><tr id="_329013ad-9a9d-138a-3b09-d1660ea21a4b"><td id="_1382450d-9e17-436e-d5f9-3830f0cf0498" valign="top" align="left">mathml</td>
<td id="_d421e317-ca98-b958-c33c-d5264c22c384" valign="top" align="left">the MathML rendering (entity name, character, or construct)</td>
</tr><tr id="_6fcb5e69-77f5-9954-bd5d-19e77d393851"><td id="_95bcba19-5c72-b557-c365-bbf0e6895cd7" valign="top" align="left">latex</td>
<td id="_d8be2e63-a908-556b-441a-0ea680bea8d8" valign="top" align="left">the LaTeX rendering (command or literal)</td>
</tr><tr id="_f219ce58-0e72-7855-45e8-3b450024743e"><td id="_03aa565d-c258-7688-be7e-fc8c8d200f02" valign="top" align="left">omml</td>
<td id="_9a2e957e-cdf2-bfe5-a611-405213c4c05b" valign="top" align="left">the OMML rendering (run text or construct reference)</td>
</tr><tr id="_32f8ba3d-2184-09b1-ae0e-c81552c83768"><td id="_01d4c1df-9c30-8e37-8faa-80498024df1f" valign="top" align="left">unicodemath</td>
<td id="_1cc4fef3-7bb0-55a3-f2b7-4d0e319c54da" valign="top" align="left">the UnicodeMath token or character</td>
</tr><tr id="_73bb0e8b-7f4a-c80c-2cb5-da6948d18cab"><td id="_9ecb282c-16eb-015a-0dea-203f42fdc122" valign="top" align="left">categories</td>
<td id="_1ecbbdf7-5aef-916b-a53d-e0dc29489a0e" valign="top" align="left">grouping tags: <tt>greek</tt>, <tt>operator</tt>, <tt>arrow</tt>, <tt>relation</tt>, <tt>logic</tt>, <tt>trigonometric</tt>, <tt>nary</tt>, and so on</td>
</tr></tbody>
</table>

<p id="_7b3b5ed1-abac-d031-fafe-62224ba0eec4">Entries are immutable once published. A correction to an entry is a new registry edition, never a mutation.</p>
</clause>

<clause id="_170a5a32-b90a-0f47-cbed-cd4de1a5f133" obligation="normative">
<title id="_715b817e-ab7e-fca1-3e0d-f92ed49bce3f">The symbol space</title>
<p id="_4c310560-57d6-e530-76cc-843d2b2c1b32" anchor="symbols-space">The symbol registry at this edition contains 1 438 entries, one implementation class each, generated from the registry data. The space covers the Greek alphabet (upper and lower), Latin letters in their mathematical roles, binary and relation operators, arrows, set and logic symbols, integrals and nary operators, accents and decoration forms, and the named constants of the input notations.</p>

<p id="_7ae30808-c6b8-ba8f-5959-a14cfd82cd18">The complete listing is generated from the registry; this document does not print it. Annex B shows representative entries per category and the lifecycle of an entry.</p>
</clause>

<clause id="_6f357aa8-dda2-34ac-73cd-6ae522d395db" obligation="normative">
<title id="_8be83919-024c-5370-e8a8-42872026294f">Generation</title>
<p id="_c2783994-6136-e243-bcd5-3fa31dbad6be">The symbol classes and the parser vocabulary of each input notation are generated from the registry data. Generation is deterministic: the same registry edition produces byte-identical generated sources. A build that regenerates and finds a diff fails.</p>

<p id="_cca49202-669b-1ed4-64b8-e566962bb6ca">The generated artifacts are committed, and the build compares them against the registry as a drift check; a hand-edit to a generated file that survives regeneration is a defect.</p>
</clause>

<clause id="_91eeb505-0e5b-2273-f28a-865607e09e15" obligation="normative">
<title id="_4bedb6fd-2706-9f3a-b029-55f711d50c29">Collision discipline</title>
<p id="_e90f413e-ba96-7559-0f0d-ef81b0edb9f9">A new entry whose name or glyph collides with an existing entry, or with a name reserved by the model (<tt>Formula</tt>, <tt>Symbol</tt>, <tt>Number</tt>, <tt>Text</tt>, <tt>Function</tt>, the class names of <xref target="annex-a"/>), fails the build. The registry does not permit two entries to share a class name, and the model does not permit an entry to shadow a model class.</p>
</clause>

<clause id="_54a9d364-245f-be61-0e4c-692810585c2c" obligation="normative">
<title id="_2ca3c404-30a3-ee56-f064-f238da217e51">Versioning</title>
<p id="_96968b23-90e3-ba97-299a-8430d879587c">The registry is editioned with this document series. An entry’s renderings are stable within an edition: a writer using edition 1 entries produces the same bytes for the same tree across all model versions that declare edition 1. New entries join at the next edition; renderings of existing entries do not change within an edition.</p>
</clause>

<clause id="_946f8886-c841-416d-0e4e-5a67e5e2c6c2" obligation="normative">
<title id="_77cb5db8-769d-d06b-c594-9508e4d418f9">Unit terminals</title>
<p id="_8d6e590c-85c0-4dcf-2289-fbc6fbdd456b">The unit expressions that may appear inside a <tt>Unitsml</tt> node are not registry entries of this document. They come from the UnitsDB dataset through the asciiunits artifact of the UnitsML series (CalConnect 36814, 1006), and the model consumes them as opaque validated content. Nothing in this registry duplicates a unit name, a prefix, or a quantity — the registry’s single source of truth for units is the UnitsDB dataset.</p>

<example id="_8beb0855-2886-2d4a-5fa8-2b59add85190"><p id="_75672877-5049-9ad7-e0b4-c26415e6eecf">Adding a symbol for a newly standardised operator to the registry: the entry is defined (name, glyph, four renderings, category), the registry data changes, regeneration produces the new symbol class, the collision build passes, and the next registry edition ships it. <strong>Expected outcome.</strong> Trees built after the edition render the new glyph in all four surfaces; trees built before are unaffected; no previously published byte sequence changes.</p>
</example>
</clause>
</clause>

<clause id="_cd9ea833-ff7b-0188-1eef-e5fe2ec8a497" anchor="rendering" obligation="normative">
<title id="_4b1f6f51-e51a-d635-67c7-2974939307d3">Rendering</title>
<clause id="_77f3c310-1c26-385f-81f2-afefcb208fb1" obligation="normative">
<title id="_bde4ed0a-4e70-d1fa-6b46-14e7e6d431db">The surfaces</title>
<p id="_04b6a47b-3772-20ff-181f-c7451b756147">The model renders to six surfaces:</p>

<table id="_44a85a1c-26fd-2588-8a79-3f3216d8e3da"><colgroup><col width="14.2857%"/><col width="42.8571%"/><col width="42.8572%"/></colgroup>
<name id="_50c0390c-1446-da0e-8295-f13891298d74">.Rendering surfaces</name>
<thead><tr id="_164c98ea-b344-475f-b5f5-a594c6aa2875"><th id="_e065777d-a12b-f23a-5fe9-acb26769454c" valign="top" align="left">Surface</th>
<th id="_7f053b24-121b-8309-c8fd-f0dd469649ac" valign="top" align="left">Entry point</th>
<th id="_2b27f6a1-8e50-38e2-89d2-302c65984e62" valign="top" align="left">Outer element</th>
</tr></thead>
<tbody><tr id="_cc465ae5-0aeb-0a32-5373-880952018fd0"><td id="_9e140f3b-3ad9-0607-0200-7b57cf87716b" valign="top" align="left">MathML 4</td>
<td id="_a873a884-fa3e-2145-3bc0-824c4f31273c" valign="top" align="left"><tt>to_mathml</tt></td>
<td id="_ea725c9d-491b-eb45-daee-3b09e6a28f9d" valign="top" align="left"><tt>&lt;math&gt;</tt> (with intent options per MathML 4)</td>
</tr><tr id="_bc71efa2-c163-96c9-2855-09eb0b8d9e48"><td id="_fa7dd1d0-6752-a22c-79fb-7b7b0784f55c" valign="top" align="left">OMML</td>
<td id="_0c421df4-ddbc-b017-5f83-d767b3b60a10" valign="top" align="left"><tt>to_omml</tt></td>
<td id="_b9631e75-2bf9-0277-fa37-3c75b7c7f9f9" valign="top" align="left"><tt>m:oMath</tt> (office math namespace of ECMA-376)</td>
</tr><tr id="_85da84a4-f1e2-185e-c9cb-404589bbd380"><td id="_f8c7edf9-a818-c772-bcf4-021b31ce677d" valign="top" align="left">LaTeX</td>
<td id="_0c5ebc25-c4ab-466d-0166-241200455103" valign="top" align="left"><tt>to_latex</tt></td>
<td id="_52377ff8-7b36-88c8-77d4-f729011d7927" valign="top" align="left">none (a LaTeX fragment)</td>
</tr><tr id="_5d37c2a0-3d8b-cf10-5814-1f9e6982efc4"><td id="_12005fa8-1f75-e044-1aea-58212ae3df2d" valign="top" align="left">UnicodeMath</td>
<td id="_07be5769-fa66-246a-2c6c-165c644b5154" valign="top" align="left"><tt>to_unicodemath</tt></td>
<td id="_b941a365-fd9a-cbd1-dcc7-136372c33660" valign="top" align="left">none (a linear string)</td>
</tr><tr id="_7fedf1cf-53fe-addb-50ee-72ee09d9507e"><td id="_fae6188e-99f6-9ac4-38b1-bfffd656253f" valign="top" align="left">HTML</td>
<td id="_27052fa5-aaa8-4319-28f1-9473b5532f78" valign="top" align="left"><tt>to_html</tt></td>
<td id="_2e1ea6b7-1c55-6e7a-c032-e1266bd52942" valign="top" align="left">none (an HTML fragment)</td>
</tr><tr id="_368fe93d-0764-7faf-daac-296f1f155ede"><td id="_90e60802-a73b-b11f-0810-39e88e5a133e" valign="top" align="left">AsciiMath</td>
<td id="_d6eb81f4-cf77-1af3-2c6f-1f9c4d64d647" valign="top" align="left"><tt>to_asciimath</tt></td>
<td id="_cdecfc4c-01c0-2d30-88a1-68b062acb348" valign="top" align="left">none (a linear string)</td>
</tr></tbody>
</table>

<p id="_0af8a0c9-71ba-181b-4c80-b3cef478f1c9">Each surface has one entry point on the root and one rendering rule per node class. The math zone printer (<tt>to_asciimath_math_zone</tt> and its per-format siblings) is the diagnostic surface: it prints the tree as the indented notation of <xref target="conventions"/>-style examples.</p>
</clause>

<clause id="_ca0ff887-4dcd-11ac-af7c-1f716ecaccd4" obligation="normative">
<title id="_292d9b95-8eb0-c1bc-5c1d-8e55885e4d82">Stability</title>
<p id="_d60d6984-4231-6798-deed-3e4debfdfb49">Writers are deterministic. The same tree rendered by the same model version produces the same bytes, and a conforming implementation reproduces those bytes. Renderer output is covered by replay corpora: for each surface there is a frozen set of trees with frozen expected byte sequences, and a writer change that changes any of those bytes is a model-version change, not a patch.</p>
</clause>

<clause id="_cb5dba1e-cc5e-63c5-3f31-bed013f67d72" obligation="normative">
<title id="_6fb1554d-3be1-84e7-80b3-f145d69876ab">Fallbacks</title>
<p id="_45f9bfc2-0b8f-8b07-dc7c-7221774be93f">Some constructs have no faithful form in some surfaces. Each such pair has one declared fallback, recorded with the class in <xref target="annex-a"/>, and the writer emits the fallback and nothing else: no marker, no warning channel in the output. Typical fallbacks: colour is dropped in LaTeX output when no colour package context is present, intent annotations are dropped in surfaces without annotation mechanisms, <tt>Mglyph</tt> degrades to its alt text in OMML.</p>
</clause>

<clause id="_beb17fe9-3b77-4238-2141-a59d566d08eb" obligation="normative">
<title id="_d3c3eb73-3201-23e1-f4d7-895aa3e08d67">Lossless and lossy directions</title>
<p id="_f4314c39-c8b2-5181-4672-434f96b8b750">A surface is lossless when reading its output back yields a tree equal to the rendered tree. AsciiMath, MathML, OMML, LaTeX and UnicodeMath are the lossless directions of the readers defined in document 1003, each with the exceptions that document enumerates. HTML is a display surface: reading it back is not part of the contract, and its renderings optimise presentation.</p>

<example id="_82d2c5da-a7bc-a6b6-cc91-9ab3e255eeec"><p id="_a4f61001-6526-7209-84c4-c0bb8a0f096a">Rendering the tree of <stem block="false" type="MathML"><math xmlns="http://www.w3.org/1998/Math/MathML">
  <mstyle displaystyle="false">
    <msup>
      <mrow>
        <mo>(</mo>
        <mfrac>
          <mrow>
            <mi>n</mi>
            <mrow>
              <mo>(</mo>
              <mi>n</mi>
              <mo>+</mo>
              <mn>1</mn>
              <mo>)</mo>
            </mrow>
          </mrow>
          <mn>2</mn>
        </mfrac>
        <mo>)</mo>
      </mrow>
      <mn>2</mn>
    </msup>
  </mstyle>
</math><asciimath>((n(n+1))/2)^2</asciimath></stem> to all six surfaces and reading the MathML, OMML, LaTeX and UnicodeMath outputs back: <strong>Expected outcome.</strong> All four read back to a tree structurally equal to the original. The HTML output is not required to read back.</p>
</example>
</clause>

<clause id="_7f06505e-13ae-7c8f-d584-0aef7c23f686" obligation="normative">
<title id="_ffb30d2d-1f9d-1f5a-9943-2eea49293623">Construct mapping</title>
<p id="_5798b620-44aa-f9e5-87d3-5761d8ef5f2e">The same tree renders through every surface. The mapping below is the normative correspondence between node families and the constructs each surface emits; the per-class notes of <xref target="annex-a"/> refine it.</p>

<table id="_67305fe4-bb75-221d-110a-84259f8dc25f"><colgroup><col width="14.2857%"/><col width="21.4285%"/><col width="21.4285%"/><col width="21.4285%"/><col width="21.4288%"/></colgroup>
<name id="_3c6c5771-5824-89f8-d219-bc6a03b84e4f">Construct mapping by surface</name>
<thead><tr id="_901d043d-a5c1-77da-a073-6237b5704dd0"><th id="_6e458688-1746-253b-722d-071cfe239db4" valign="top" align="left">Family</th>
<th id="_f9cb2a31-f1fa-607f-1827-9a1a6b3320ed" valign="top" align="left">MathML</th>
<th id="_5acfed12-de4c-f201-05d8-d88bc2ca689c" valign="top" align="left">OMML</th>
<th id="_a3781296-ddd8-2318-68b2-64b5c3f5984c" valign="top" align="left">LaTeX</th>
<th id="_95559b30-42eb-410d-64f8-136a7213de86" valign="top" align="left">UnicodeMath</th>
</tr></thead>
<tbody><tr id="_19633f1a-378b-b1bc-6e23-9d4d439cd04a"><td id="_52d9b62a-4c65-31a0-b21f-3c823f0bcaa6" valign="top" align="left">Fractions</td>
<td id="_5bdee070-7208-ce3a-d492-f6772defd28f" valign="top" align="left"><tt>mfrac</tt></td>
<td id="_4aaaed5f-14b4-1645-0e04-f955ae8c8c84" valign="top" align="left"><tt>m:f</tt> with <tt>m:num</tt>, <tt>m:den</tt></td>
<td id="_5737d767-9475-0945-a9e0-776da6853217" valign="top" align="left"><tt>\frac{}{}</tt></td>
<td id="_8810ddb6-1444-8b9c-9984-b85ffcc30efd" valign="top" align="left">linear <tt>()/()</tt></td>
</tr><tr id="_54738953-7ed0-12a1-1330-e31846687c1c"><td id="_f6218884-4eaa-45fb-a48e-8d87fe33a12f" valign="top" align="left">Roots</td>
<td id="_daaa3583-2a9e-01d7-c197-ea0393d86eb1" valign="top" align="left"><tt>msqrt</tt>, <tt>mroot</tt></td>
<td id="_054561e7-997d-0654-21f6-0c59520b6893" valign="top" align="left"><tt>m:rad</tt> with degree visibility</td>
<td id="_0c26e9ad-9840-646e-0e3f-830d5131c273" valign="top" align="left"><tt>\sqrt{}</tt>, <tt>\sqrt[]{}</tt></td>
<td id="_aa5713fe-6e9e-84b1-6954-dab7a1b4bc63" valign="top" align="left"><tt>√()</tt>, <tt>∛(x&amp;n)</tt></td>
</tr><tr id="_6a3d8636-e938-1ef0-51f4-ba573f5aa101"><td id="_bc867f08-3fa9-ad56-808c-e292ecf333e5" valign="top" align="left">Scripts</td>
<td id="_4356fea1-6946-6402-fa31-afff9bef694c" valign="top" align="left"><tt>msub</tt>, <tt>msup</tt>, <tt>msubsup</tt>, <tt>mmultiscripts</tt></td>
<td id="_dba14426-bfe9-2b09-b885-8293743b0609" valign="top" align="left"><tt>m:sSub</tt>, <tt>m:sSup</tt>, <tt>m:sSubSup</tt>, <tt>m:sPre</tt></td>
<td id="_defa9f0f-156a-f19a-c2fa-19ca8d2c3bfe" valign="top" align="left"><tt>_{}</tt>, <tt>^{}</tt>, <tt>_{}^{}</tt></td>
<td id="_556b81a5-ebb2-3ebd-3c1d-973c9f5ab918" valign="top" align="left"><tt>_</tt>, <tt>^</tt></td>
</tr><tr id="_dbebddc9-cdb6-f27d-9c8b-744b06f20dcf"><td id="_2b12d210-5e60-1633-75bb-c1106629f6ef" valign="top" align="left">Nary operators</td>
<td id="_c7df2e3b-bc5d-d5e1-058d-06601b14f3c8" valign="top" align="left"><tt>mo</tt> with <tt>munder</tt>/<tt>mover</tt> limit pairs</td>
<td id="_4301cbbe-9db9-7d1c-6bbb-41790b8e30c3" valign="top" align="left"><tt>m:nary</tt> with <tt>m:sub</tt>, <tt>m:sup</tt>, <tt>m:e</tt></td>
<td id="_d88f4b29-3e60-b02f-df47-a6093ffeccb2" valign="top" align="left"><tt>\sum_{}^{}</tt>, <tt>\int_{}^{}</tt></td>
<td id="_1be377d7-be1f-d682-26e5-2eaf4611f0e7" valign="top" align="left"><tt>∑_^^</tt>, <tt>∫_^^</tt></td>
</tr><tr id="_f36c7458-46a2-a2cb-325e-0d9d9a6841b1"><td id="_beb4845b-97cc-132b-7b41-2aba0bd3fec5" valign="top" align="left">Tables</td>
<td id="_cb74b46e-6449-809f-8a4f-a12c7e2d1399" valign="top" align="left"><tt>mtable</tt>, <tt>mtr</tt>, <tt>mtd</tt>, <tt>mlabeledtr</tt></td>
<td id="_ade8087f-56fa-35c2-89f7-33d1943c7850" valign="top" align="left"><tt>m:m</tt>, <tt>m:mr</tt>, <tt>m:e</tt> with delimiters per class</td>
<td id="_8e9bc29a-8c9b-e02d-4010-b8153a020224" valign="top" align="left"><tt>matrix</tt>, <tt>pmatrix</tt>, <tt>cases</tt>, <tt>aligned</tt></td>
<td id="_adfd1d1c-aa99-95d3-c534-646c7f7aa6cd" valign="top" align="left"><tt>■(...)</tt> with <tt>@</tt> row separators</td>
</tr><tr id="_5bf8cef7-7155-0c01-6f9d-787dbc7fa607"><td id="_cf6d21a9-8930-9094-be02-cda3f21bb630" valign="top" align="left">Fences</td>
<td id="_26748442-99d8-c105-d1fa-78b2299dfb92" valign="top" align="left"><tt>mrow</tt> with <tt>mo</tt> delimiters</td>
<td id="_6e412119-8a25-5e67-3288-2483607c05a7" valign="top" align="left"><tt>m:d</tt> with <tt>m:dPr</tt></td>
<td id="_14ecc8c4-8582-e54b-40ed-968c94336fc0" valign="top" align="left"><tt>\left..\right</tt></td>
<td id="_2ea53a20-065c-31ec-25c2-36197c563d2e" valign="top" align="left">parenthesised grouping</td>
</tr><tr id="_6cd989f9-abc2-5127-17b0-5fa4ea177984"><td id="_e410de7a-491f-afcb-5e85-82d7dc2ea592" valign="top" align="left">Font styles</td>
<td id="_924e746c-6715-534c-22bc-71cd3b556e74" valign="top" align="left"><tt>mathvariant</tt> on <tt>mi</tt></td>
<td id="_2daba7be-917b-85d3-9534-65493e5a71e0" valign="top" align="left"><tt>m:rPr</tt> run properties</td>
<td id="_e348b6e0-7bed-5733-409b-faf3f647890c" valign="top" align="left"><tt>\mathbf{}</tt>, <tt>\mathfrak{}</tt>, <tt>\mathcal{}</tt></td>
<td id="_ceb8d9d9-2564-6c22-a788-c4cbbcc27200" valign="top" align="left">mathematical alphanumeric code points</td>
</tr><tr id="_b935d774-24b6-d24f-191a-2d602db6f79e"><td id="_7367a1d0-c9b0-7e56-5c4f-7608655e3e41" valign="top" align="left">Accents</td>
<td id="_d5386a02-35ee-c462-e557-d3a258b93cce" valign="top" align="left"><tt>mover</tt> with accent <tt>mo</tt></td>
<td id="_c0abad7a-2a09-0cd1-ae35-fc9d3faa8803" valign="top" align="left"><tt>m:acc</tt> with <tt>m:chr</tt></td>
<td id="_aa398a7f-c2c6-3259-4035-8f017c970b83" valign="top" align="left"><tt>\bar</tt>, <tt>\vec</tt>, <tt>\hat</tt>, <tt>\tilde</tt></td>
<td id="_43a9a2a7-83c4-e954-8bf8-870575ad393a" valign="top" align="left">combining characters</td>
</tr><tr id="_54543370-53c9-2b9e-138f-98b88597e30b"><td id="_fd9917cc-37b3-1a3f-ebe0-640fcd59863f" valign="top" align="left">Text</td>
<td id="_eeb4e65b-223c-5ca4-f59b-92ca2b063b54" valign="top" align="left"><tt>mtext</tt></td>
<td id="_342a0324-00ee-f95a-c895-f3880f61beb9" valign="top" align="left"><tt>m:r</tt> with upright run</td>
<td id="_e779da55-9828-04e7-d8d2-6473b5505d41" valign="top" align="left"><tt>\text{}</tt>, <tt>\mbox{}</tt></td>
<td id="_92ee63e6-65ed-32f2-6802-088b01fd1dc6" valign="top" align="left">quoted string</td>
</tr><tr id="_1b6916e8-f7a3-6e49-365c-4d6340c6b369"><td id="_ce762158-acb9-bd48-f26d-9d7f045b55c7" valign="top" align="left">Units</td>
<td id="_c88cda60-0c6c-7bbe-5d1a-364ca3d33273" valign="top" align="left">UnitsML MathML form with <tt>&lt;UnitsML&gt;</tt> reference</td>
<td id="_f0d90042-847a-7fe9-31a0-97d7ca7f90ff" valign="top" align="left">UnitsML OMML form</td>
<td id="_6c0f0665-a218-e268-9cda-ba0d241ee641" valign="top" align="left">UnitsML LaTeX form</td>
<td id="_b30fccf6-ca7f-237d-dff7-fef66148fab8" valign="top" align="left">UnitsML Unicode form</td>
</tr><tr id="_89a5956c-7869-7ab0-44e9-10c98b9d5e03"><td id="_201f4117-6eaf-f332-d8d4-2f7db57e7b00" valign="top" align="left">Uncertainty</td>
<td id="_53ffaa5d-6fe1-b9a6-e1ed-e5450ad63f66" valign="top" align="left">per document 1002</td>
<td id="_37795840-989a-844f-d3a8-8465d1afa99a" valign="top" align="left">per document 1002</td>
<td id="_9ae303a9-1c94-29c2-5d64-cea0a07b42fe" valign="top" align="left">per document 1002</td>
<td id="_e4f1b368-79bf-734c-576f-da7dcdd0dc34" valign="top" align="left">per document 1002</td>
</tr></tbody>
</table>

<p id="_7c599041-7268-d037-eced-8013e9f970a1">Where a family has no faithful construct in a surface, the declared fallback applies (<xref target="fallbacks"/>); the mapping above lists only the faithful forms.</p>
</clause>

<clause id="_78cccb35-b5fd-ceb4-b8ee-2a51ba7fcf43" obligation="normative">
<title id="_2ce62d7f-d90d-b17d-8b48-d28777ab8fd4">OMML specifics</title>
<p id="_87b40ba6-1f9e-2089-bb15-a522bb1ba264">The OMML surface emits run properties (fonts, styles) from font style nodes, nary constructs from the nary classes, matrices from the table classes, and preserves linebreak semantics from <tt>Linebreak</tt> nodes and from the root’s linebreak option. Display style: the root’s display flag selects <tt>m:oMathPara</tt> wrapping; inline rendering omits it.</p>
</clause>

<clause id="_d0b87866-90a2-6067-1e17-f7b779b4292d" obligation="normative">
<title id="_6e0d0f9b-1014-9da9-c493-57e96037f277">MathML specifics</title>
<p id="_faa5ef15-f3fb-5347-374e-96fa03ae175e">The MathML surface emits MathML 4. Intent annotations carried by <tt>Intent</tt> nodes become <tt>intent</tt> attributes; <tt>Semantics</tt> nodes become <tt>semantics</tt> elements with their annotations as <tt>annotation</tt> children. Font style nodes become <tt>mathvariant</tt>. Tables become <tt>mtable</tt>/<tt>mtr</tt>/<tt>mtd</tt>, with labelled rows as <tt>mlabeledtr</tt>. Numbers become <tt>mn</tt>, symbols become <tt>mi</tt> or <tt>mo</tt> per their registry entry, and text becomes <tt>mtext</tt>.</p>
</clause>

<clause id="_44af581c-17ce-b714-0b05-7ed3d0edab90" obligation="normative">
<title id="_ed04f1b7-4033-fcbf-c5f8-ef3c7959cbbc">Display and inline</title>
<p id="_45496f23-d3c1-ce3d-fb8f-ac1cb5ee4605">The root’s display style selects between the display and inline forms of each surface: MathML toggles <tt>display="block"</tt>; OMML toggles the <tt>m:oMathPara</tt> wrapper; LaTeX and UnicodeMath choose display-only constructs (display fractions, centred nary limits) over their inline forms; HTML applies the display style class. The tree content is identical in both forms; only the surface presentation changes.</p>

<example id="_1874aa56-de94-1e15-bb9b-a37d8b7a0470"><p id="_7d7e4123-649c-718f-47e2-fbaeb2ddc63e">The formula <tt>sum_(i=1)^n i</tt> rendered with display style set and unset. <strong>Expected outcome.</strong> Display form: MathML <tt>display="block"</tt>, LaTeX <tt>\sum_{i=1}^{n}i</tt> in display context with limits under and over; inline form: limits rendered beside the operator in LaTeX and UnicodeMath, and no block wrapper in MathML or OMML. The trees are identical.</p>
</example>
</clause>
</clause>

<clause id="_dda2d1fb-fef8-8e8d-ee1a-0d55491f131b" obligation="normative">
<title id="_54439416-f196-f3d7-3d2d-150599a873a4">Extensibility</title>
<clause id="_2b3fb726-43ca-51f1-6a41-4aadf7a9a945" obligation="normative">
<title id="_2c009a56-a35b-5d7e-5fcf-338cf0a02edc">General</title>
</clause>
</clause>

<clause id="_1637ae56-06bf-03c9-4ea5-8f4370b6a9f5" obligation="normative">
<title id="_70bae6c6-38a8-5d2d-6d4f-d7e62fd6a219">Extensibility</title>
<p id="_7c6514c4-3b0f-d32a-e82c-2b39254d00bb">The model grows by adding to it, not by modifying it. This clause states the extension points and the discipline each one carries.</p>

<p id="_282e44dd-07b4-a299-a46b-fd33753a10ab">The model grows by adding to it, not by modifying it.</p>

<clause id="_ea63307d-0aed-bc20-f04a-02bbf35ac72f" obligation="normative">
<title id="_046e23e3-4756-d167-583f-e4ff5395a586">Adding a node class</title>
<p id="_55cb1ea0-a3da-2a65-8813-186d61c50012">A new construct enters the model as a new class with: its operands, its registry entry (if it names a symbol), its per-surface rendering rules, and — where a surface has no faithful form — its declared fallbacks. No existing class changes. The collision build of <xref target="registry"/> applies.</p>
</clause>

<clause id="_44b04813-24ce-ff96-6186-b58818da5213" obligation="normative">
<title id="_cbe4dba2-8ee4-faeb-b4bb-a03886e48e4e">Adding a registry entry</title>
<p id="_a4e5cd87-23c1-1648-1ebe-7277f545dc7f">A new symbol or constant joins the registry per the entry lifecycle of Annex B. Generated sources regenerate; existing byte sequences are unchanged.</p>
</clause>

<clause id="_587ee628-e099-f36d-037b-a49a4105c28d" obligation="normative">
<title id="_63a2d1a1-53cb-e6b3-8f29-fd27896fcf0c">Adding a surface</title>
<p id="_a090196f-d260-7096-f362-ded8b392f88b">A new output format is a new set of per-class rendering rules behind one root entry point. The node classes are untouched: the per-format field printers on the base are extended with the new surface’s printer, and each class supplies its rule. A surface that ships without a rule for a class fails the build — render totality (<xref target="rendering"/>) is enforced at build time, not discovered at run time.</p>
</clause>

<clause id="_508138e1-9a0d-745e-f4cb-c6107859933a" obligation="normative">
<title id="_bae439a0-1fc5-6d25-00b0-88098cb94966">Adding an input format</title>
<p id="_a6a538bf-e13f-c417-e9e9-682d6b98fb5c">Readers are outside this document (document 1003). This document constrains them in one way: a reader ends at the tree. A reader that requires a change to a node class to accommodate its input is a model change and follows <xref target="adding-a-node-class"/>.</p>
</clause>

<clause id="_5dc3c5a0-c9f4-1503-4f8d-45a328da5f73" obligation="normative">
<title id="_ff21d9da-bc0e-af8d-7b25-5efd91e95a96">Deprecation</title>
<p id="_c53a9f38-1478-35cc-3597-d876e7a37d1f">A node class or registry entry is deprecated by marking it in the registry and this document, keeping its behaviour byte-stable, and removing it at a stated edition. Nothing is removed silently and no published output changes between the deprecation and the removal.</p>
</clause>

<clause id="_d404eb48-5b4b-f136-e851-c5fc8f0a4e50" obligation="normative">
<title id="_bd1a151c-a22e-556c-5560-030a3c08726b">Worked extension</title>
<example id="_d4d96bd6-4463-4053-0c1f-48b32bfcbb8f"><p id="_45dd45ad-653d-f5ce-68ee-8789fee8483c">A new arrow symbol (a rightwards arrow with a bar) is added to the registry. <strong>Expected outcome.</strong> The entry carries its glyph and its four format renderings; generation produces the symbol class; the collision build confirms neither the name nor the glyph exists in the registry, the model class names, or the UnitsDB symbol space; a corpus entry freezing the six-surface rendering joins the render corpus; the next registry edition ships all of it. Trees that do not use the new symbol are untouched, and every previously published byte sequence is unchanged.</p>
</example>

<example id="_0eed86de-a703-5c6b-bd39-3d1c9728a481"><p id="_6671ee1c-94d1-d429-3729-a321320531a7">A new construct is needed for an upcoming OMML feature: a run-level alignment mark. <strong>Expected outcome.</strong> A new node class is added with its operands, its OMML rendering, and declared fallbacks for the surfaces without a faithful form; the render-totality build fails until every surface has a rule or a fallback; the class joins Annex A at the next edition. No existing class is modified.</p>
</example>
</clause>
</clause>

<clause id="_1b1ed2a4-fe47-f8b4-ac1b-ce8e8595fcd5" obligation="normative">
<title id="_e499f69a-c963-37a4-031c-6b4334a863d4">Conformance</title>
<clause id="_8bd780a1-46c9-20c8-ba3c-697765e7d0ce" obligation="normative">
<title id="_54da778a-f671-9425-3106-3d97b6d686cf">General</title>
</clause>
</clause>

<clause id="_fce3c0ef-79f2-229b-40cc-884a57e5361b" obligation="normative">
<title id="_3d8e05f5-356f-a035-3be4-914ad1b08fa2">Conformance</title>
<p id="_887d4040-0809-f81a-3e54-a13ef6e7dcf1">Conformance to this document is claimed per class, and every claim is discharged by replaying frozen vectors. Nothing in this clause is satisfied by assertion alone.</p>

<clause id="_e6974a98-d6f4-e3ed-c24e-4712f7f8b686" obligation="normative">
<title id="_ea8d23d4-84ff-29bd-fec7-23b506baced5">What conformance covers</title>
<p id="_a4bdeb2e-0b6f-c17c-f45e-ed121a6cffbd">An implementation of this document is an implementation of the math model: the tree, the node classes of <xref target="annex-a"/>, the registry behaviour, and the writers of the six surfaces. Readers and the uncertainty and evaluation semantics are covered by documents 1003, 1002 and 1004; conformance to those documents is claimed separately.</p>
</clause>

<clause id="_a6940c59-a47e-2840-4abf-13edb695a218" obligation="normative">
<title id="_1dee761f-ac79-7a0d-668f-b0436a84a9d5">Conformance classes</title>
<table id="_e9a6bcb3-9951-06ff-d1e2-78ac2930ac30"><colgroup><col width="14.2857%"/><col width="42.8571%"/><col width="42.8572%"/></colgroup>
<name id="_ca8cde83-3f0c-ccb4-3d20-c741cca80313">.Conformance classes</name>
<thead><tr id="_b1e2bd22-e5b5-9b6d-5149-cbd9af393b8e"><th id="_a3d530c3-0328-55bd-f360-14713b815ed8" valign="top" align="left">Class</th>
<th id="_ea873fc2-0803-ffa2-8da9-4499fc70ef61" valign="top" align="left">Licenses the implementation to claim</th>
<th id="_4496a6d9-3544-faa1-4236-a12b241559c6" valign="top" align="left">Replay requirements</th>
</tr></thead>
<tbody><tr id="_f5410efc-1f4d-2708-41ec-1eb6f765302c"><td id="_05d2929e-e831-47ba-16f2-2537d0e2d397" valign="top" align="left">model</td>
<td id="_df3f3dc0-3926-b458-47d4-ac4c5572723f" valign="top" align="left">constructs, inspects and transforms trees per <xref target="formula-tree"/></td>
<td id="_a354f657-37c4-5b72-dcd3-859df5117eb3" valign="top" align="left">structural-equality and math-zone vectors of Annex C</td>
</tr><tr id="_44b5b813-e47d-31a3-8cc5-65813df08cb6"><td id="_a39ff4c5-2710-8ab3-0dbc-4697afb684a4" valign="top" align="left">render-mathml</td>
<td id="_c5597b50-01a8-7709-8f96-86823355ccf1" valign="top" align="left">emits MathML 4 per <xref target="rendering"/></td>
<td id="_a0a4b608-d704-886b-41fb-e634c070b4de" valign="top" align="left">the MathML column of the render corpus, byte-identically</td>
</tr><tr id="_fa74b8db-1c5c-6100-dc0b-8739c66fa2d9"><td id="_8f4340a4-17ba-6d8d-a4fa-736d2bb6e731" valign="top" align="left">render-omml</td>
<td id="_cc1ff9fc-c465-a22d-24cd-6a444ae9fed0" valign="top" align="left">emits OMML per <xref target="rendering"/></td>
<td id="_d30644a4-b361-fdcf-dee5-bb83e2626dfb" valign="top" align="left">the OMML column of the render corpus, byte-identically</td>
</tr><tr id="_f34e8f1c-e61a-cdd4-2499-86f53b4a2114"><td id="_93fe290a-de3e-8a4c-396e-40cd275afdca" valign="top" align="left">render-latex</td>
<td id="_99dfb96b-2d35-e120-1603-b8712b1d5eaf" valign="top" align="left">emits LaTeX per <xref target="rendering"/></td>
<td id="_6f9a94d1-096a-e6f2-1cc4-ea45b85e24ee" valign="top" align="left">the LaTeX column of the render corpus, byte-identically</td>
</tr><tr id="_6061dbdd-4976-b68c-ee38-44c4f9784490"><td id="_ec1c4875-b996-95d9-2ffb-b8f3a8694e36" valign="top" align="left">render-unicodemath</td>
<td id="_714c412d-397c-81fd-0aa9-d090d0cc825e" valign="top" align="left">emits UnicodeMath per <xref target="rendering"/></td>
<td id="_8e176656-d0e6-ec06-d4e8-eab823e7f45a" valign="top" align="left">the UnicodeMath column of the render corpus, byte-identically</td>
</tr><tr id="_43bed201-9710-2af3-3ce5-1b61073f5371"><td id="_e6d1f08f-e7cf-c74d-ce7a-7a4c0a0e5c5c" valign="top" align="left">render-html</td>
<td id="_b9d253a3-760d-82b6-e3c1-36fc2b832576" valign="top" align="left">emits the HTML surface per <xref target="rendering"/></td>
<td id="_4f4bb04d-9c4e-f253-58c7-6b6fce89ceb8" valign="top" align="left">the HTML column of the render corpus, byte-identically</td>
</tr><tr id="_a737a601-3d3f-2a9a-8698-74ce4649c08d"><td id="_9270c369-6c54-cfa5-83af-7d0e94da7ccb" valign="top" align="left">render-asciimath</td>
<td id="_bae06f31-7daa-01d3-dc89-4f8f0f0e8587" valign="top" align="left">emits AsciiMath per <xref target="rendering"/></td>
<td id="_15706f6c-b071-5371-2146-e7f53fb19d77" valign="top" align="left">the AsciiMath column of the render corpus, byte-identically</td>
</tr><tr id="_c08a2e8c-d30b-5d56-4ea3-663eed141bd1"><td id="_21dc0b3d-28cb-2fd7-497f-9834e1a5488c" valign="top" align="left">full-model</td>
<td id="_69d5cdd6-448d-cb7b-03e5-2a1125d428f7" valign="top" align="left">all of the above</td>
<td id="_4125dc03-3b2f-4026-f0a3-6e85aff148c0" valign="top" align="left">all columns</td>
</tr></tbody>
</table>

<p id="_b098cbfb-c559-02de-894e-437a1b4c6d60">A conformance claim names the classes it makes. A claim of <tt>render-&lt;format&gt;</tt> carries <tt>model</tt> with it: no surface can be claimed without the tree it renders.</p>
</clause>

<clause id="_6559c68a-2506-f298-99a4-b0ffbe7281f7" obligation="normative">
<title id="_e948e63d-e93c-976c-4f18-c6387c898837">The render corpus</title>
<p id="_22883aaa-717b-81ad-b203-00be8cad066f">The render corpus is a frozen set of trees and, per surface, their expected bytes. A corpus entry states its provenance (the tree’s construction, the model version that froze the bytes) and is replayed without modification. Corpus bytes change only at an edition: a new corpus entry joins frozen; a frozen entry never changes.</p>
</clause>

<clause id="_37088204-c36c-d545-f1b4-87bf8aac3689" obligation="normative">
<title id="_5c1acb9f-e364-96e1-2c8d-538224790309">Drift</title>
<p id="_39039207-a43b-ea3a-108a-725ba1205c95">An implementation whose output for any frozen entry differs from the corpus bytes does not conform at the model version the corpus was frozen against, whatever its own version string says. Divergence is resolved by a model-version change and a new corpus entry, or by fixing the implementation.</p>
</clause>
</clause>

<clause id="_e1cbd350-28f1-0a1b-4336-658dd603c0fd" anchor="annex-a" obligation="normative">
<title id="_b28058c2-7287-b8fb-f140-950a2f7b85da">Annex A: node class reference</title>
<clause id="_cf0c6e0f-bb79-35a7-ddec-2a70f505c4ec" obligation="normative">
<title id="_5ecf2af2-ed51-64e1-68b1-18421de3dc88">General</title>
<p id="_eff1b149-931d-12f9-58ba-d8b52be7e31f">This annex enumerates every function class of the model at this edition: 103 function classes, 14 font styles and 10 table classes. The list is normative. A class’s operands column uses <tt>1</tt>, <tt>2</tt>, <tt>3</tt>, or “rows” for the table containers.</p>
</clause>

<clause id="_aa22c04e-51a1-3f6c-ccfb-31327f0b41c1" obligation="normative">
<title id="_86fd861b-4257-0892-bcf6-93f976c61ac3">The inventory as a model</title>
<sourcecode id="_9c17fdb9-c445-7a3a-cc87-8e608e0a6ccd" lang="lml"><body>lml "1.0"

models FunctionInventory {

  package Elementary {
    class Abs
    class Arg
    class Ceil
    class Deg
    class Det
    class Dim
    class Exp
    class Floor
    class Gcd
    class Glb
    class Hom
    class Inf
    class Ker
    class Lcm
    class Lub
    class Max
    class Min
    class Mod
    class Norm
  }

  package Trigonometric {
    class Sin
    class Cos
    class Tan
    class Cot
    class Sec
    class Csc
    class Sinh
    class Cosh
    class Tanh
    class Coth
    class Sech
    class Csch
    class Arcsin
    class Arccos
    class Arctan
  }

  package Logarithmic {
    class Ln
    class Lg
    class Log
  }

  package ScriptPlacement {
    class Power
    class PowerBase
    class Base
    class Sup
    class Ul
    class Underover
    class Over
    class Overleftrightarrow
    class Overset
    class Underset
    class Stackrel
    class Substack
    class Limits
    class Lim
    class Liminf
    class Limsup
    class Multiscript
  }

  package Fractions {
    class Frac
    class Root
    class Sqrt
    class Longdiv
    class Cancel
    class Scarry
    class Scarries
  }

  package Fences {
    class Fenced
    class Left
    class Right
    class Obrace
    class Ubrace
  }

  package Accents {
    class Bar
    class Vec
    class Hat
    class Tilde
    class Dot
    class Ddot
  }

  package Calculus {
    class Sum
    class Prod
    class Int
    class Oint
    class Nary
  }

  package Tables {
    class Table
    class Td
    class Tr
    class Mlabeledtr
    class Matrix
    class Bmatrix
    class Pmatrix
    class Vmatrix
    class Cases
    class Array
    class Align
    class Eqarray
    class Split
    class Multline
  }

  package TextAndAnnotation {
    class Text
    class Mbox
    class Intent
    class Semantics
  }

  package Presentation {
    class Phantom
    class Menclose
    class Merror
    class Mglyph
    class Mpadded
    class Ms
    class Msgroup
    class Msline
    class None
    class Linebreak
    class Rule
    class Color
  }

  package Measurement {
    class Unitsml
    class Uncertainty
  }

  package Bases {
    class UnaryFunction
    class BinaryFunction
    class TernaryFunction
  }
}</body></sourcecode>


<p id="_5694499b-3f4e-4123-8d2a-0ad45438e436">The operand shape of each class is the family it belongs to in <xref target="formula-tree"/>: the <tt>Elementary</tt> and <tt>Trigonometric</tt> classes are unary with an optional limit where their input notation carries one; <tt>Log</tt> and <tt>Lg</tt> are unary with an optional base operand; the <tt>ScriptPlacement</tt> classes are binary (<tt>Power</tt>, <tt>Over</tt>, <tt>Underset</tt>, and the rest) or ternary (<tt>PowerBase</tt>, <tt>Underover</tt>); the <tt>Calculus</tt> classes are nary; the <tt>Tables</tt> containers hold rows. The tables below give the semantics and surface notes per class.</p>
</clause>

<clause id="_0a8b1a74-267c-7637-6cc8-9e819932fc0f" obligation="normative">
<title id="_f2bad5e8-9f25-4ba4-52a0-aca3647ee2a4">Elementary functions and operators</title>
<p id="_711124d3-313f-ea80-6291-9763e119534c">Elementary function classes:</p>

<table id="_f90428a4-1a45-c41b-de62-884d267f0505"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_20fd3f2f-6fe4-3bbe-a6c5-1849e357f5e0">Elementary function classes</name>
<thead><tr id="_f56931a2-3103-929e-abc6-67ed32b53846"><th id="_d005ce35-4417-ec3e-5089-b38a7635ee23" valign="top" align="left">Class</th>
<th id="_f1a91b38-9293-6144-8cc8-9a571f91e0fe" valign="top" align="left">Meaning</th>
<th id="_fb2d1cfc-f579-28cb-038c-cac59de53f04" valign="top" align="left">Operands</th>
<th id="_b46249e0-3e11-3ce6-eb86-ff2bd81a525b" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_2b078de6-b069-aede-219e-b07b677970a3"><td id="_81e60677-adeb-ffd9-426b-cde3b30a1059" valign="top" align="left">Abs</td>
<td id="_87b73669-cb19-b275-a615-b6713871e54a" valign="top" align="left">absolute value |x|</td>
<td id="_ebe59dd4-8e81-1741-ea68-42c939f4e698" valign="top" align="left">1</td>
<td id="_a9bd668c-d761-fb56-f835-5ce7bdfe988f" valign="top" align="left">fence pair on every surface</td>
</tr><tr id="_1144ebb9-1bb5-8f3d-ec43-227be987a778"><td id="_71e90ca6-725f-c03d-c268-9710e6a4e06f" valign="top" align="left">Arg</td>
<td id="_2a676bcb-fa13-47c0-3f8f-7a7d092d6c5c" valign="top" align="left">arg <tt>arg x</tt></td>
<td id="_dd35bec9-dd61-e795-a7e8-4926c7d7ba5b" valign="top" align="left">1</td>
<td id="_09888840-02e5-dd1f-ddda-6717e53ac0e9" valign="top" align="left">upright operator name</td>
</tr><tr id="_5b8f34b7-d9f8-afda-2b32-eab342e0e95c"><td id="_c7f4496e-1bdb-05ee-c532-49392ecdd27b" valign="top" align="left">Ceil</td>
<td id="_9ac30e78-bc3f-2669-545a-8c39c623fe2f" valign="top" align="left">ceiling <tt>⌈x⌉</tt></td>
<td id="_f67228aa-35f2-cc5d-ccd9-7b40dfdc1819" valign="top" align="left">1</td>
<td id="_59b7e2ac-f0d1-9866-718c-a75891ab2902" valign="top" align="left">fence pair</td>
</tr><tr id="_5c98fa6d-abd0-144b-0ae0-e70ca1c1df14"><td id="_2b2443dc-92e0-ee4c-0e6d-09677bd60aea" valign="top" align="left">Det</td>
<td id="_70a9f859-4a39-3bd8-cbec-d1b8a4d4857d" valign="top" align="left">determinant <tt>det</tt></td>
<td id="_43ac20fb-daf9-1623-ef85-aaa00f0690d6" valign="top" align="left">1</td>
<td id="_ef578629-5fbe-d999-7000-c396bb51eee7" valign="top" align="left">upright operator name</td>
</tr><tr id="_69c50435-6e92-6bd8-470f-b63718236cc3"><td id="_66cf5157-065a-49ed-7aa2-931ffc5d580b" valign="top" align="left">Dim</td>
<td id="_8cf605b3-dff0-8f7a-bbc8-555b60b264b4" valign="top" align="left">dimension <tt>dim</tt></td>
<td id="_76bb9b91-e654-8dd6-dd9f-389e9080f060" valign="top" align="left">1</td>
<td id="_4fc45638-6bd5-a287-a8cf-e900056e5c90" valign="top" align="left">upright operator name</td>
</tr><tr id="_c1c7285d-78a9-5f23-f9da-f6748e12edd1"><td id="_735a2c0b-5f68-ab80-206b-7cd1f43854a9" valign="top" align="left">Exp</td>
<td id="_fc7e3d3a-3387-0390-321f-38e5fcf5ea4e" valign="top" align="left">exponential <tt>exp</tt></td>
<td id="_d114167d-9db8-d117-cfee-8e1c1fdb9836" valign="top" align="left">1</td>
<td id="_97a98963-56d4-b860-8eb0-bd8b92c3163b" valign="top" align="left">upright operator name</td>
</tr><tr id="_615af7d6-78cd-edd9-9b74-02380dd1ed85"><td id="_40d135df-c443-317f-9819-53832b71b1c3" valign="top" align="left">Floor</td>
<td id="_a7522a51-8861-d048-ba58-02f58dd1ce55" valign="top" align="left">floor <tt>⌊x⌋</tt></td>
<td id="_cedae779-2600-a7a5-69a8-81e271c36937" valign="top" align="left">1</td>
<td id="_996e7f7a-c6d5-140f-7154-075f4c59b929" valign="top" align="left">fence pair</td>
</tr><tr id="_cc7bf612-4d21-04f6-83a6-a255b1988641"><td id="_d299fc55-7a96-7041-4924-559f0a59f370" valign="top" align="left">Gcd</td>
<td id="_5de8ad24-abc5-c103-bf9a-72e8ff60817a" valign="top" align="left">greatest common divisor</td>
<td id="_f935bc94-5bcd-8518-ef58-1ca97474eeb2" valign="top" align="left">1–2</td>
<td id="_7fc89c2f-b2c3-08b2-b1f6-84c2dacaabbd" valign="top" align="left">upright operator name</td>
</tr><tr id="_4f0f2354-f0f5-6037-307f-b334ec2a82c8"><td id="_6fac488a-7063-8a04-584f-a8f4ac551adc" valign="top" align="left">Glb</td>
<td id="_07fc074e-d572-3d83-3412-d34a50259455" valign="top" align="left">greatest lower bound <tt>glb</tt></td>
<td id="_7e0ef3b7-c676-9b94-602b-9c04754cd253" valign="top" align="left">1</td>
<td id="_612ee8e1-da9f-8ccc-7a78-20c2caf02f9d" valign="top" align="left">upright operator name</td>
</tr><tr id="_48627287-c3d0-b5f6-a35a-4bc0a6acabfc"><td id="_896c52cb-984b-bbbb-2ef0-88a616fd8008" valign="top" align="left">Hom</td>
<td id="_77fce4b3-75da-2867-e4d8-b762df8e821f" valign="top" align="left">homomorphism <tt>hom</tt></td>
<td id="_e8f89b8c-65f4-bb71-62bb-592d5ea1edf8" valign="top" align="left">1</td>
<td id="_bce3e0c4-163a-2389-bebe-85eb6d2b9cbd" valign="top" align="left">upright operator name</td>
</tr><tr id="_da88d220-5f8f-52b3-1ff0-e87e4eaab806"><td id="_1ef7c47c-8c94-37b5-08a3-b937462c7e4d" valign="top" align="left">Inf</td>
<td id="_17fad83b-5ec4-14ad-0ab3-3e286c8c563a" valign="top" align="left">infimum <tt>inf</tt></td>
<td id="_3a0a591f-88ec-7ae1-aba7-6895599f9a92" valign="top" align="left">1</td>
<td id="_f9372e65-0282-249f-dc63-088d2982fc1a" valign="top" align="left">upright with optional limit</td>
</tr><tr id="_1fccaa8c-a0e9-a8ae-8634-a9dedfa29be4"><td id="_a90c371d-a96e-8502-b887-274c12e4693a" valign="top" align="left">Ker</td>
<td id="_e58206cc-d86a-60a8-652e-ac9e4b3acb22" valign="top" align="left">kernel <tt>ker</tt></td>
<td id="_ba0de920-c98b-8460-7c4b-a179d18f6cb2" valign="top" align="left">1</td>
<td id="_0b000b3a-82b5-010f-7c95-3f7f00d344b0" valign="top" align="left">upright operator name</td>
</tr><tr id="_17f125f9-6307-ce53-ddb2-a794db9ac3ac"><td id="_48f2a8b6-03fe-a8ca-4386-3f30fa289c2d" valign="top" align="left">Lcm</td>
<td id="_88c91fc0-ddcb-78d4-742a-068796de2f35" valign="top" align="left">least common multiple</td>
<td id="_bdb3f839-31b7-7420-018e-a9ca4ebe5640" valign="top" align="left">1–2</td>
<td id="_6aedbdc3-d0c5-b5eb-f120-5f3e51baacdb" valign="top" align="left">upright operator name</td>
</tr><tr id="_5ba0c8b9-fb1a-4dec-89e8-07717a04fe6b"><td id="_e2e71c0d-30c5-1499-cadd-64719b98e51d" valign="top" align="left">Lub</td>
<td id="_235aca4a-f8db-3092-a24d-f57b2d31f7bc" valign="top" align="left">least upper bound <tt>lub</tt></td>
<td id="_21dc33c4-fd86-0157-b35b-da106dc192f1" valign="top" align="left">1</td>
<td id="_7edb5524-23c9-02de-445b-c8aa010aa669" valign="top" align="left">upright operator name</td>
</tr><tr id="_9e6b6234-7ed0-4ae9-4c36-f421d29b080d"><td id="_9add81df-1a0c-0956-23c5-7bce49a4c1b9" valign="top" align="left">Max</td>
<td id="_6d72f57e-42c8-1800-090a-63077f62a0b0" valign="top" align="left">maximum</td>
<td id="_9425bda5-dc16-d2e3-a53c-4e4fdf4ecd03" valign="top" align="left">1–2</td>
<td id="_95482747-fd47-ae8d-8d9d-257a5c98fe75" valign="top" align="left">upright operator name</td>
</tr><tr id="_8d297f06-0947-9277-dd41-f6ca2a98df79"><td id="_a4d532f8-740a-904b-8f53-577f58477a3a" valign="top" align="left">Min</td>
<td id="_60219d84-c28d-f367-3e93-4f04364f7236" valign="top" align="left">minimum</td>
<td id="_18b422e3-c4da-3c1a-f325-dc433dc79af3" valign="top" align="left">1–2</td>
<td id="_2b2069b4-41fb-3077-ede3-79a340a28894" valign="top" align="left">upright operator name</td>
</tr><tr id="_472fbd37-5642-7bfa-16ea-80789d34a32e"><td id="_028bb3ac-e378-93c5-a069-a381e9b4d97c" valign="top" align="left">Mod</td>
<td id="_eab64cd0-64e1-82dc-721e-d5dc9d5d7d6f" valign="top" align="left">modulo</td>
<td id="_f6204e2e-b7f0-fccc-b636-eb15be5a9a84" valign="top" align="left">2</td>
<td id="_f2a7dbb8-a951-16e8-88d2-feacb4e9ef16" valign="top" align="left">upright with spaced operands</td>
</tr><tr id="_5528459b-3c10-9526-2d1c-59805dcb872a"><td id="_5ec48aed-45e5-f7db-7d52-9ce5d46066ff" valign="top" align="left">Norm</td>
<td id="_ba14d1bf-63ea-a164-0f4c-996fbba58402" valign="top" align="left">norm <tt>‖x‖</tt></td>
<td id="_6d14ee2c-9e79-5d8b-f199-a7a68ae428b5" valign="top" align="left">1</td>
<td id="_e79baf8e-859c-f158-e5e6-f90cd7f5fa53" valign="top" align="left">double fence pair</td>
</tr><tr id="_08db4508-fb86-9dc9-f162-bf53e69474e6"><td id="_cb2250b7-1c2b-a2ae-acf3-4e207089009d" valign="top" align="left">Deg</td>
<td id="_cdde13e9-64c4-d5b8-410c-bf797b92b91e" valign="top" align="left">degrees <tt>deg</tt></td>
<td id="_364e3c5a-26f5-b574-7e2e-9419489d9f7a" valign="top" align="left">1</td>
<td id="_912a50ee-b21c-fdf5-a9c6-f340cd7bca86" valign="top" align="left">upright operator name</td>
</tr></tbody>
</table>
</clause>

<clause id="_13f7995b-569a-e408-072e-ed796f0c2d9e" obligation="normative">
<title id="_81b0c26a-d223-0b2b-fb6c-d9e19cab465b">Trigonometric and hyperbolic</title>
<p id="_e73b5bb8-966c-ab81-6942-ffa6e2dd414d">Trigonometric and hyperbolic classes:</p>

<table id="_27ae91be-fceb-455c-35c0-4fff6b7fe02c"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_ead1f161-49dd-6467-94b2-736bf7ebae5c">Trigonometric and hyperbolic classes</name>
<thead><tr id="_1a2ba6d1-c7ef-7d10-f63f-0e2299ed0688"><th id="_5c5cceb8-153b-23a3-aaac-9b640d2de69a" valign="top" align="left">Class</th>
<th id="_f9577ae4-127d-6e02-391b-445cd0636d74" valign="top" align="left">Meaning</th>
<th id="_babd0c0f-b9f3-3491-e003-36ad8e1f040b" valign="top" align="left">Operands</th>
<th id="_669791ff-5b96-1f53-cf7f-3b7acf868387" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_18d41b36-2606-6528-93f6-429c91dc3565"><td id="_aaa330ce-cbad-1a97-3ede-2357f0bba588" valign="top" align="left">Sin, Cos, Tan, Cot, Sec, Csc</td>
<td id="_fc95f12d-6629-a3b8-6c64-a573ca6fbd7b" valign="top" align="left">circular functions</td>
<td id="_81eccea2-37c0-7147-a2e9-c193c772687e" valign="top" align="left">1</td>
<td id="_8b212e8f-7165-e051-413d-f7fdecd67caf" valign="top" align="left">upright operator names</td>
</tr><tr id="_841a5d22-5b72-008b-cf7b-0fd45bc3e1e0"><td id="_86c83f16-b8c5-7281-8272-2bcc4ff29f10" valign="top" align="left">Sinh, Cosh, Tanh, Coth, Sech, Csch</td>
<td id="_4fb1f16a-da76-6857-8e79-bd615d15a41e" valign="top" align="left">hyperbolic functions</td>
<td id="_caf2f5ab-5c07-da44-16eb-62c2a3e80b72" valign="top" align="left">1</td>
<td id="_9ce9b001-7ad0-7d11-3d82-53c6899c2944" valign="top" align="left">upright operator names</td>
</tr><tr id="_1bf87886-a1c0-fd64-fe00-54907604d1d7"><td id="_c667b583-41db-a57b-2e53-e78ddbb37a8b" valign="top" align="left">Arcsin, Arccos, Arctan</td>
<td id="_b7f3cfc9-8d5f-34eb-229b-95f9de1a306c" valign="top" align="left">inverse circular functions</td>
<td id="_eb80a309-93fa-8834-1de5-da26ea77b20e" valign="top" align="left">1</td>
<td id="_ba327de5-860d-f9e5-9941-1bc83dc0b29a" valign="top" align="left">upright operator names</td>
</tr></tbody>
</table>
</clause>

<clause id="_7cc409df-0339-32b2-20f3-b2d671ed8aac" obligation="normative">
<title id="_efe511b1-4b9e-1b1a-a5e3-f0433803f741">Logarithmic and exponential</title>
<p id="_1b3c3f90-d301-562d-0e9e-1b194d38abef">Logarithmic and exponential classes:</p>

<table id="_58c9945d-749f-0e08-f107-d52438802ee7"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_e0c93d67-c91e-d303-0bb0-fed89831bcd7">Logarithmic and exponential classes</name>
<thead><tr id="_33c9b5cf-5e7a-792e-9b7a-3eed583e4766"><th id="_68ed2a2e-6988-ea9a-bb8d-f589597f9f58" valign="top" align="left">Class</th>
<th id="_703dc3ac-eba1-4be5-9f1f-ee810db70eeb" valign="top" align="left">Meaning</th>
<th id="_88a94c6c-7a26-a991-0bf4-138ff9acca91" valign="top" align="left">Operands</th>
<th id="_ef377e96-d6ec-edc3-4a89-724ba1eee9b1" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_0627d366-be0e-be9e-96b2-282a01e94298"><td id="_43c80550-a47c-5100-b167-614846e88a0b" valign="top" align="left">Ln</td>
<td id="_93c31670-9ec5-0452-8b9c-9b568d7025a8" valign="top" align="left">natural logarithm</td>
<td id="_d773fd9c-57df-0b04-9f3e-0e6541dcdf5b" valign="top" align="left">1</td>
<td id="_d12e9bd2-e85c-f566-e0cb-6e6cf70188fa" valign="top" align="left">upright operator name</td>
</tr><tr id="_69763daf-b1dc-407e-fea8-f2eca784b119"><td id="_af9273e9-2482-db4a-c1a4-38add4f0e218" valign="top" align="left">Lg</td>
<td id="_55b6b13f-1585-7fe6-36c8-980db7caebb2" valign="top" align="left">decadic logarithm</td>
<td id="_ca701f7c-f52b-44f6-3a2b-94de250e8c73" valign="top" align="left">1–2</td>
<td id="_8170bf1e-6201-50c3-fa10-5798b4056401" valign="top" align="left">upright operator name; second operand is the base where written</td>
</tr><tr id="_8f73e9d0-4d99-7408-5d9a-5d4935461a6b"><td id="_b0418e3f-ef65-a628-8625-2f6ff9b407c2" valign="top" align="left">Log</td>
<td id="_d04d3fdf-e613-970e-627f-c402910e8abe" valign="top" align="left">logarithm</td>
<td id="_eda106a9-82de-af11-8861-9bf4c0b00f5d" valign="top" align="left">1–2</td>
<td id="_330e4d49-347c-81f0-d67f-53658f45c1f5" valign="top" align="left">upright operator name; second operand is the base where written</td>
</tr><tr id="_df37d833-59ef-af41-6006-978997e47bff"><td id="_15f125fc-0361-2aac-68eb-48da11a8ee44" valign="top" align="left">Exp</td>
<td id="_1b1ca295-e7d7-fa1e-7d44-0d706467c5d4" valign="top" align="left">exponential</td>
<td id="_14d31ba1-f4c9-ba96-b7c8-cf9577a8c8ae" valign="top" align="left">1</td>
<td id="_c6143bc8-1cd3-cccb-37af-b81cf5041fcb" valign="top" align="left">upright operator name</td>
</tr></tbody>
</table>
</clause>

<clause id="_e112c27c-ae27-422e-729f-591e24fed0df" obligation="normative">
<title id="_2f7936ce-f3ff-a069-1924-9502dd611735">Script placement and limits</title>
<p id="_62f7729b-3b04-c8f5-0fc9-aa0b6772fe5c">Script placement and limit classes:</p>

<table id="_d820d24d-50dd-1240-89eb-ee9bfeb8021f"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_599953d3-3717-839e-242b-77448aa147eb">Script placement and limit classes</name>
<thead><tr id="_e6d6abd2-6a79-1448-4ac1-ae4c824d3bfc"><th id="_10db07ea-445d-9ac2-680c-ba58d1ff4bfa" valign="top" align="left">Class</th>
<th id="_8cdd373e-7768-4c58-888c-eb0a43251caf" valign="top" align="left">Meaning</th>
<th id="_c766deca-685e-5f0b-0e9c-bc3472591973" valign="top" align="left">Operands</th>
<th id="_7082126a-cb00-387b-4aa6-1da9d5bd2d38" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_5d4fef3e-7f5b-4f0b-26e6-dcf9cac717e8"><td id="_00cdeb24-e910-88bb-3014-324fd70915f6" valign="top" align="left">Power</td>
<td id="_da1d693d-9b9e-b897-d0e7-74937c59bba7" valign="top" align="left">superscript (<tt>x^2</tt>)</td>
<td id="_09a3d1b4-8cba-9130-4a5f-cbd0c0fa4ae0" valign="top" align="left">2</td>
<td id="_42eb35d3-b625-1edc-fdb0-9ae44b9d781c" valign="top" align="left"><tt>msup</tt> / run properties / <tt>^{}</tt> / <tt>^</tt></td>
</tr><tr id="_f39c1672-22ef-4c56-ca0b-e3f9e2f5ae8b"><td id="_603f654d-a12d-e268-e1c2-53b27523758d" valign="top" align="left">PowerBase</td>
<td id="_37444c8b-7414-c958-270f-6adbf99db492" valign="top" align="left">base with sub and superscript (<tt>x_2^3</tt>)</td>
<td id="_1cedabad-d3a4-0c5c-ced0-2f40a787938f" valign="top" align="left">3</td>
<td id="_3b113cc2-7ab3-c029-41b0-20303cff5f18" valign="top" align="left"><tt>msubsup</tt> / combined / <tt>_{}^{}</tt></td>
</tr><tr id="_6b6a783b-d111-442b-7a85-b35a5c436857"><td id="_6368d984-eb66-2bbb-d3c1-0f3d14f90032" valign="top" align="left">Base</td>
<td id="_f83a6955-6299-ab85-0b1e-d79cba53906c" valign="top" align="left">subscript (<tt>x_1</tt>)</td>
<td id="_2492815b-6422-a0d8-fe19-7ce12c06401f" valign="top" align="left">2</td>
<td id="_b5923034-31ce-24df-24ee-afc47ebcf4fb" valign="top" align="left"><tt>msub</tt> / <tt>_{}</tt> / <tt>_</tt></td>
</tr><tr id="_e5897fa3-8fe1-227d-409f-07cc1cf6894f"><td id="_2dda0754-10cc-3b11-e321-f803aa55494d" valign="top" align="left">Underover</td>
<td id="_1b873072-55c8-e216-da13-751fb80dd2de" valign="top" align="left">sub and superscript under/over a large operator</td>
<td id="_b4cafd52-345e-858d-a6ce-c989a3ddcbfa" valign="top" align="left">3</td>
<td id="_f30e35d0-6a26-9792-533f-189d19c35b0f" valign="top" align="left"><tt>munderover</tt> / <tt>\sum_{}^{}</tt></td>
</tr><tr id="_fedc63f5-3eac-56c9-8c2d-d5e4a5316b4f"><td id="_cb15f24b-86c2-0f99-bd7e-bde6679955ba" valign="top" align="left">Over</td>
<td id="_f1e61b25-88bb-6450-1aee-2820a1470953" valign="top" align="left">overscript</td>
<td id="_ffcc6c60-52a4-7432-865d-f4e9b7f6fec6" valign="top" align="left">2</td>
<td id="_57c558cc-6c42-7c03-e3c2-8c9cedb7d3a7" valign="top" align="left"><tt>mover</tt> / <tt>\overset</tt></td>
</tr><tr id="_42bdb2f6-dcc8-e0ec-9048-52b44db10045"><td id="_e35f2801-2285-9397-d46d-f078384ea22a" valign="top" align="left">Overset</td>
<td id="_ce6a5601-c02b-41ea-89cc-7a75f29d3577" valign="top" align="left">pairing over</td>
<td id="_a3da3460-214c-d379-7d56-7ad7c1309e0c" valign="top" align="left">2</td>
<td id="_918bc963-7c6e-3d5b-3fc2-22284c178412" valign="top" align="left"><tt>mover</tt> (accentless)</td>
</tr><tr id="_6082416b-f13a-e4bb-7604-e5e73f296d92"><td id="_82fffce9-560d-a447-9d2c-3c7f44f8e00e" valign="top" align="left">Underset</td>
<td id="_84ebff5d-113a-9cd7-49ab-38d98b21b260" valign="top" align="left">pairing under</td>
<td id="_35f34669-c562-9f61-6754-393393eabf83" valign="top" align="left">2</td>
<td id="_5dca5a11-f14a-6169-8eb4-8c211ea666eb" valign="top" align="left"><tt>munder</tt></td>
</tr><tr id="_16c703d5-bb6f-7dc4-cd74-b6ea3935942f"><td id="_a2f7f279-b39b-7dd8-e3f7-199f83942f0d" valign="top" align="left">Stackrel</td>
<td id="_3d0cf373-65cc-9751-f5e2-e3239392fa11" valign="top" align="left">binomial-style stack</td>
<td id="_27f0a2dd-ab19-5ef2-bde7-d922c69a48b4" valign="top" align="left">2</td>
<td id="_f9537d10-4552-f2eb-6e4a-5c472994225f" valign="top" align="left">stacked pair</td>
</tr><tr id="_c3f30616-b303-881a-67d8-e1be96e76dc7"><td id="_62ecdce8-41fc-f15a-4e83-4c899c478ab9" valign="top" align="left">Substack</td>
<td id="_655da84e-c208-a2d0-4b06-cc7fd755fef7" valign="top" align="left">stacked limits under an operator</td>
<td id="_9c9c584c-72ee-c46a-db1a-665c8216cc2d" valign="top" align="left">1 (rows)</td>
<td id="_0cea6d51-3893-15c8-a6b6-8ae3b09659a0" valign="top" align="left">stacked rows</td>
</tr><tr id="_a90e74ac-8ff3-6830-b88f-78a92073eb00"><td id="_cca70c15-c844-ec00-855a-9271c1cb993d" valign="top" align="left">Limits</td>
<td id="_36e99f7f-7629-649b-834e-3e431bc07230" valign="top" align="left">limits placement declaration</td>
<td id="_968c9c56-69c0-9afc-b455-cc18c02f6eb5" valign="top" align="left">1</td>
<td id="_b839c955-40e4-3c0b-7158-31aa7e14c25e" valign="top" align="left">limits rendered under/over rather than beside</td>
</tr><tr id="_0caa5c33-59c9-6497-9224-c424263fdea4"><td id="_22ed6a2f-612f-1b90-c56d-eedf8fd52308" valign="top" align="left">Lim</td>
<td id="_adf2ddef-47a0-5a1d-33bd-c54d498a980d" valign="top" align="left">limit <tt>lim</tt></td>
<td id="_35de5680-43e8-6628-9006-077abe5a2d3a" valign="top" align="left">1</td>
<td id="_676ea6ec-3589-e8d4-097c-7c6ef1a89fad" valign="top" align="left">upright with optional limit</td>
</tr><tr id="_18413b69-dbf6-e7c8-cc22-7bbedcb69ca1"><td id="_ef035b19-3472-c96b-22c5-1b110c84a040" valign="top" align="left">Liminf, Limsup</td>
<td id="_4837614b-8538-663d-421b-bedb277d1c9c" valign="top" align="left">limit inferior/superior</td>
<td id="_11b76569-2f4f-5b0c-4174-4059c1589d0d" valign="top" align="left">1</td>
<td id="_429aaefd-d839-c31d-5543-49180d8b4077" valign="top" align="left">upright compound names</td>
</tr><tr id="_3ce37c26-3e69-5f6b-2b5c-ebe1be22132d"><td id="_ddd1addf-0362-c0e5-8fc0-bd9ff121b0e8" valign="top" align="left">Multiscript</td>
<td id="_ba0c43f4-d61a-45b2-2a96-d1723d64bb3b" valign="top" align="left">post-sub/superscript pairs (<tt>mmultiscripts</tt>)</td>
<td id="_9856cfa5-42ea-7b7e-c95c-46e3f6c16e16" valign="top" align="left">rows</td>
<td id="_6c24a1b4-e88d-389f-6091-e0120fc730bc" valign="top" align="left">MathML construct; OMML pre-sub/superscript</td>
</tr></tbody>
</table>
</clause>

<clause id="_deac6054-1fb6-5f89-e118-722f43523e60" obligation="normative">
<title id="_4eadbf03-ff3e-6afb-0a9b-22aa8676c267">Fractions, roots and cancellation</title>
<p id="_ca4bd846-cb25-d7c9-a84d-716bf4b8add6">Fraction, root and cancellation classes:</p>

<table id="_9aea30ac-e979-8aca-463f-d395139af2b5"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_d2fb0c73-1ccd-f4ab-ddd1-303375847679">Fraction, root and cancellation classes</name>
<thead><tr id="_3a62676a-8ece-b672-4e7d-dd5ff46e474f"><th id="_3a736648-c37b-04bf-7c31-4828d543d2b5" valign="top" align="left">Class</th>
<th id="_8785d9b1-03ec-defb-6c3c-98844679ef67" valign="top" align="left">Meaning</th>
<th id="_1ad8ad33-877d-66da-7730-e020b4b5eaa5" valign="top" align="left">Operands</th>
<th id="_bf32a9c1-3fdb-b1ab-bf67-d57b8e6a31d5" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_43b0a706-dbb0-062f-a89a-a742508e70e6"><td id="_f5efe38b-4a4b-4cd0-c04d-331a300c2d08" valign="top" align="left">Frac</td>
<td id="_535c50cd-d166-cbaa-de1f-3c326166553c" valign="top" align="left">fraction</td>
<td id="_b735bb72-200d-cc04-f544-e11e567399b5" valign="top" align="left">2</td>
<td id="_8c23b3fa-1316-2cd2-4a18-a8e9202dcd86" valign="top" align="left"><tt>mfrac</tt> / <tt>\frac{}{}</tt> / linear <tt>()/()</tt></td>
</tr><tr id="_a1d634e5-ceee-279d-4db2-f1377aa0c0fb"><td id="_43284e21-b75d-4629-7b5a-2c722c450908" valign="top" align="left">Root</td>
<td id="_65c70864-ca6d-555e-55cb-4edf7a76c918" valign="top" align="left">nth root</td>
<td id="_ec49016f-67d4-91d7-f5d4-e8cb0643358c" valign="top" align="left">2</td>
<td id="_f0dfcf04-43aa-7e0f-8d3a-ff10aebd86fd" valign="top" align="left"><tt>mroot</tt>; first operand is the radicand, second the degree</td>
</tr><tr id="_e1bb2a34-eb9a-3aad-6f4b-b1e8fd250d7e"><td id="_e59c0502-b930-bef5-6e36-b2d05eaa2a72" valign="top" align="left">Sqrt</td>
<td id="_37dfeec3-97f3-70e1-65f2-331b499843dc" valign="top" align="left">square root</td>
<td id="_26184d34-e1f7-f3ef-1980-42057c926abf" valign="top" align="left">1</td>
<td id="_a4fef63b-664d-1836-052c-fd54d2286d1c" valign="top" align="left"><tt>msqrt</tt> / <tt>\sqrt{}</tt></td>
</tr><tr id="_83bf0872-e064-1b23-3c71-a4d9b0596ea9"><td id="_84cdf9f0-ceb9-207f-9ed5-020f60439506" valign="top" align="left">Longdiv</td>
<td id="_79ebd885-f9ac-d512-4268-dbb6dccd9c1b" valign="top" align="left">long division layout</td>
<td id="_82b16526-a9dc-0687-393c-82eb7b9e9eff" valign="top" align="left">1–2</td>
<td id="_20473bfb-33ef-da43-4efc-c5919facf86c" valign="top" align="left">layout construct; fallback per surface</td>
</tr><tr id="_ec9ceb84-ab10-4580-6874-69a3c8dbc52e"><td id="_cc0106dd-516e-620b-1ea9-72e0ecd2d742" valign="top" align="left">Cancel</td>
<td id="_7a27da63-2229-24b0-2713-d54b18b6d6cc" valign="top" align="left">strike-through of the whole operand</td>
<td id="_fde74338-256c-080e-9dc4-87d333cefc10" valign="top" align="left">1</td>
<td id="_359464a6-8f3f-b792-4e9b-51eddbd6cdc0" valign="top" align="left"><tt>mcancel</tt> / <tt>\cancel</tt></td>
</tr><tr id="_f5819040-81b1-f754-e9a2-c2dd43d72c6d"><td id="_139d67df-c1b9-c79d-8496-fa9879b76a43" valign="top" align="left">Scarry, Scarries</td>
<td id="_50006a95-a42c-e8a4-3685-c408f2ddee0c" valign="top" align="left">carry strike-through pairs (digit arithmetic)</td>
<td id="_ebbadd7c-c77c-aae2-2974-c5c5bdcf5d5f" valign="top" align="left">1–2</td>
<td id="_0b5a1695-02b5-c0a6-d422-12a971247188" valign="top" align="left"><tt>mscarry</tt> / layout fallback</td>
</tr></tbody>
</table>
</clause>

<clause id="_cb3ec0fd-b0ff-448b-5eea-457874613cb3" obligation="normative">
<title id="_d0e9a148-78a8-0e75-5662-f68d7868d8e9">Fences and delimiters</title>
<p id="_9b1b9fe8-4662-31dc-e362-71678a8fa18b">Fence and delimiter classes:</p>

<table id="_60fa5610-34ab-1db3-98f4-25958be54899"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_04bd846e-0c8b-c1ee-3487-5dae6e185ec2">Fence and delimiter classes</name>
<thead><tr id="_29270f48-516f-13b8-d4f7-c80472e3c09f"><th id="_0b39d9a6-7e4c-b9d4-ce13-9f7f38ef1720" valign="top" align="left">Class</th>
<th id="_4aa655ba-8ee6-a285-3a69-de5ea1a95362" valign="top" align="left">Meaning</th>
<th id="_e858f209-19e3-98d4-921e-22658e963d31" valign="top" align="left">Operands</th>
<th id="_e822b32b-6d04-4fb5-a28d-ac8e6e96b9b5" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_b67c76e1-4bc2-7e9c-4f4e-16dd6005eed6"><td id="_43c7a034-5e4b-551d-70fe-176b5ab914f8" valign="top" align="left">Fenced</td>
<td id="_e82b3e4b-b240-f153-548c-02527a49aff2" valign="top" align="left">content with an open and a close symbol</td>
<td id="_f5a8cf4b-068e-cfc5-bfac-7a21a93d0cfc" valign="top" align="left">3</td>
<td id="_a917ed2d-8ad5-9454-7151-d5ecb2f596b8" valign="top" align="left"><tt>mrow</tt> with delimiters / <tt>\left..\right</tt></td>
</tr><tr id="_a155a443-92e5-d65a-31e1-a689330b5fd4"><td id="_49c6ce73-e195-d343-78bb-9fbdf99b8573" valign="top" align="left">Left</td>
<td id="_0aeb7b0e-cfa2-d80d-b8e0-2891f79eefb3" valign="top" align="left">left delimiter declaration</td>
<td id="_53b8f187-4bb7-2277-2e91-6a1ef56ffae3" valign="top" align="left">1</td>
<td id="_b4b3d9a9-15ff-0cf9-4e23-3e2cfb198253" valign="top" align="left">pairs with Right in linear surfaces</td>
</tr><tr id="_d7136d77-7344-38b8-3f28-56357ba033b0"><td id="_7b1117ef-b735-7f63-cf3c-ddf00da6dac7" valign="top" align="left">Right</td>
<td id="_81243e6d-5b14-4cf5-9e8a-28d7a306e687" valign="top" align="left">right delimiter declaration</td>
<td id="_2faeab81-3002-075c-2dc8-ef4365648995" valign="top" align="left">1</td>
<td id="_9e606ee9-8244-82fc-615e-4c3e04a71585" valign="top" align="left">pairs with Left</td>
</tr><tr id="_d4b5e935-90db-c296-7fb9-6d0bba7f31d8"><td id="_759cabc1-9c6f-d3f8-d2f8-690e143071da" valign="top" align="left">Obrace</td>
<td id="_e93f7759-03c9-ee84-c94a-66c833455c2c" valign="top" align="left">over brace <tt>{}</tt></td>
<td id="_38f1bd96-5fd3-6bd1-fb26-845aed41ac27" valign="top" align="left">1</td>
<td id="_46fc09f5-6c33-88cc-7f51-152cf2496a13" valign="top" align="left"><tt>mover</tt> with brace</td>
</tr><tr id="_97644c45-6adb-03be-830f-97e61ea1a5fc"><td id="_10d9f496-e9db-e907-06cd-5b0a2cdf2b26" valign="top" align="left">Ubrace</td>
<td id="_53d5b509-a579-dde6-2e4e-3fe1d3af4b64" valign="top" align="left">under brace</td>
<td id="_daebdcd7-2c23-0c06-d01d-78b8c36c99b8" valign="top" align="left">1</td>
<td id="_dc8f1393-ce68-923c-2273-ba7de3f46f9a" valign="top" align="left"><tt>munder</tt> with brace</td>
</tr></tbody>
</table>
</clause>

<clause id="_50ac0b29-be35-f082-988d-8bdb36236e96" obligation="normative">
<title id="_03dd08d8-3553-2e49-a5a2-c1ab565ba12c">Accents and decorations</title>
<p id="_e1fec7c1-3b0f-58eb-4aca-3a4ed26f57d2">Accent and decoration classes:</p>

<table id="_93b082df-3da5-eb76-e52d-97a2624dbcd6"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_83ea42b3-3566-c910-5717-8e0161f31ffb">Accent and decoration classes</name>
<thead><tr id="_98c8ba94-bc91-b0d9-eb25-6fb765572267"><th id="_ea8cde53-a16e-07c2-bd21-03f984b33128" valign="top" align="left">Class</th>
<th id="_0f08a432-db27-a8b1-fc82-2435576b504a" valign="top" align="left">Meaning</th>
<th id="_5a3d9fd3-aba6-d812-675a-9247e9106a7a" valign="top" align="left">Operands</th>
<th id="_1c8d0ca5-844f-e81f-6d9c-fefbc0f46e05" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_254cd0b2-bc3b-6e13-0ef3-892494acd056"><td id="_a687f4b5-0d55-9c79-50b9-223081881a79" valign="top" align="left">Bar</td>
<td id="_db73cfea-a781-59aa-ec78-5ad8a261a0aa" valign="top" align="left">bar over</td>
<td id="_72edb927-7cca-54eb-1ade-2c5e5e7e4e96" valign="top" align="left">1</td>
<td id="_c4542510-5a6b-1ac7-e105-31b19f4e83cd" valign="top" align="left"><tt>\bar</tt></td>
</tr><tr id="_f3a8564d-de66-d116-9525-4db0ab42c15f"><td id="_282fabfa-dee2-496b-b533-a6e9abac8201" valign="top" align="left">Vec</td>
<td id="_515c202f-a248-46d2-2d01-246e10c0d088" valign="top" align="left">vector arrow over</td>
<td id="_ee63d768-29d5-8ecf-aea4-d4c88a0fa2ba" valign="top" align="left">1</td>
<td id="_966fbe24-86b3-ca1a-09f7-52ceb2fe9abf" valign="top" align="left"><tt>\vec</tt></td>
</tr><tr id="_2ccf12df-bafa-f867-7454-30fd6f858e4d"><td id="_2d1bef1d-1142-5b52-9e17-f94aad6c543a" valign="top" align="left">Hat</td>
<td id="_f328a9f8-74ea-aa37-cd98-022abe92a38e" valign="top" align="left">hat over</td>
<td id="_bed962fb-3135-748b-ca21-c84bcf59fd13" valign="top" align="left">1</td>
<td id="_9c3d87d6-2df1-8450-e792-07b7f51ffc90" valign="top" align="left"><tt>\hat</tt></td>
</tr><tr id="_f673585f-5123-291f-3166-969a6170e54f"><td id="_901d0688-bae5-9d8f-4fa9-45a9edab18bf" valign="top" align="left">Tilde</td>
<td id="_1225bbf5-06ea-21a1-2b3b-773979d7ee78" valign="top" align="left">tilde over</td>
<td id="_7a3c1bc6-bf03-e415-bdd3-385436120c14" valign="top" align="left">1</td>
<td id="_27489834-a66e-8ac3-ee34-0c6ddfe6d88e" valign="top" align="left"><tt>\tilde</tt></td>
</tr><tr id="_7bbd33df-787a-c778-be97-cdbe56e2a160"><td id="_1affcf71-8ef6-00c4-be7a-065da0d7053a" valign="top" align="left">Dot</td>
<td id="_6a71351a-59b7-18e5-7f82-13d9511f0bce" valign="top" align="left">dot over</td>
<td id="_55499969-045e-c83d-5047-9a4fb5fef425" valign="top" align="left">1</td>
<td id="_0126a1a6-955b-ba14-0fed-9e921461fcc5" valign="top" align="left"><tt>\dot</tt></td>
</tr><tr id="_4b593639-7252-f810-7145-45367e491114"><td id="_c209d489-7d4c-f642-6244-fd3a643c1a31" valign="top" align="left">Ddot</td>
<td id="_0649f02b-7449-4be3-ee30-f3fb9545b956" valign="top" align="left">double dot over</td>
<td id="_a1f4cba8-6022-dd78-e35c-af2787be7a21" valign="top" align="left">1</td>
<td id="_bce6ae1e-6f90-e7f7-c6af-963c916cd386" valign="top" align="left"><tt>\ddot</tt></td>
</tr><tr id="_c5469d8d-5756-52f6-ccb3-7a37bb8674c1"><td id="_48e22500-8b8e-f1e1-67a8-4f19557f1885" valign="top" align="left">Overleftrightarrow</td>
<td id="_f1c16369-4325-81f7-75a9-d9d694919786" valign="top" align="left">left-right arrow over</td>
<td id="_cc49ab3b-f68e-40df-569f-1c667b9f56b3" valign="top" align="left">1</td>
<td id="_3bb99a7e-0852-6073-b6e6-fa41d1462d0e" valign="top" align="left"><tt>\overleftrightarrow</tt></td>
</tr></tbody>
</table>
</clause>

<clause id="_879dad84-25f4-6ded-83fb-d84ae96c6de7" obligation="normative">
<title id="_9fbeb397-c8cc-a1da-1631-1930e0e0db39">Calculus and nary operators</title>
<p id="_8be6e03c-e455-3af0-2d82-2038d793f880">Calculus and nary operator classes:</p>

<table id="_bc0ebd12-da0f-cf78-cb45-94dd68c85f23"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_1ff21108-fcfe-6a72-5374-fcfa39fad697">Calculus and nary operator classes</name>
<thead><tr id="_08317cc6-eb7e-c6fc-2578-c7ea62e14e3a"><th id="_c3660c8c-6158-841a-e3eb-0e15c518861b" valign="top" align="left">Class</th>
<th id="_18580702-c134-69bd-2641-d5ce3ac2964d" valign="top" align="left">Meaning</th>
<th id="_ce8db459-a59c-ad01-703b-154a78be7709" valign="top" align="left">Operands</th>
<th id="_60b752c2-e5a6-f383-61bd-fc31ef856d5e" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_f8ef5b23-f5e8-f944-485c-beca08034ea4"><td id="_b74dc5f1-fc3d-92aa-9c00-5c9f30f3feee" valign="top" align="left">Sum</td>
<td id="_87eb0fc6-311a-c8f7-8536-092efa394fb9" valign="top" align="left">summation <tt>∑</tt></td>
<td id="_9f1757b5-9ed9-c21b-7818-c58f9ac04c90" valign="top" align="left">1 + limits</td>
<td id="_b1acdc44-8c26-0952-dc1e-fc0ea69520c2" valign="top" align="left">nary on MathML/OMML</td>
</tr><tr id="_abcd5ada-c03d-5777-a446-d5b4b31976e6"><td id="_0add8845-cd26-76d1-3e22-3744a8be6f4c" valign="top" align="left">Prod</td>
<td id="_5b8f4da4-ca48-4021-8df3-c38e81396c26" valign="top" align="left">product <tt>∏</tt></td>
<td id="_97be5cfe-ad24-89e5-7637-e53ca3994854" valign="top" align="left">1 + limits</td>
<td id="_ccf98d13-3ac1-dc0e-f150-fd84856b2ccc" valign="top" align="left">nary on MathML/OMML</td>
</tr><tr id="_70bbc302-2c73-abd2-cc90-3a4e0c32f0ff"><td id="_f928f9f8-2416-c6cf-79c6-eb1f1b3fcdb4" valign="top" align="left">Int</td>
<td id="_03fd5757-050f-989f-de73-b9cf42e2cf68" valign="top" align="left">integral <tt>∫</tt></td>
<td id="_b8138eef-0719-050c-e35c-04500477bdc6" valign="top" align="left">1 + limits</td>
<td id="_d212db1b-95f1-8255-a593-2899e5b2fbb1" valign="top" align="left">nary on MathML/OMML</td>
</tr><tr id="_d893a3df-0cca-7450-aa80-fe110cb44234"><td id="_27736465-205c-2f18-99ba-e4caa8e9f0ae" valign="top" align="left">Oint</td>
<td id="_35016b70-7297-d045-e824-ffaa22538d60" valign="top" align="left">contour integral <tt>∮</tt></td>
<td id="_aff0a655-512c-9d15-bd01-b73c8c7544b6" valign="top" align="left">1 + limits</td>
<td id="_90a3901b-29d9-47b0-0758-a9d92791c8c0" valign="top" align="left">nary on MathML/OMML</td>
</tr><tr id="_59848326-226d-b09e-e34b-4f9f534e22b9"><td id="_354d4046-75ff-2698-8827-3892ab704f40" valign="top" align="left">Nary</td>
<td id="_9d6b859b-b0b6-ed26-0658-f0042cfd2e9b" valign="top" align="left">generic nary operator</td>
<td id="_0be7bd86-e6c2-50da-04c6-c0b3a05940b7" valign="top" align="left">1 + limits</td>
<td id="_ad04a86b-c69c-e24d-802e-43304e3ec7e4" valign="top" align="left">carries its own nary element value</td>
</tr></tbody>
</table>
</clause>

<clause id="_a85b2213-6a77-f1d8-7c65-b1bfcb18d35e" obligation="normative">
<title id="_67e52859-5e0d-a7e1-1d23-3a8b5d8a861a">Tables</title>
<p id="_8ee53e6d-aa9b-4d32-689b-11304f34a6e4">Table classes:</p>

<table id="_6ad099c1-3438-bcf1-e0c3-65d685189e52"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_f4859622-6d0b-53b9-29fc-4f2cbfbbf10c">Table classes</name>
<thead><tr id="_09c6526e-4612-8c00-e388-ac081dad3d18"><th id="_c5f3c98a-4829-307c-f3ac-4f5fa7fc01e6" valign="top" align="left">Class</th>
<th id="_7915005d-f91e-0f3e-0ed8-d4750d5d3642" valign="top" align="left">Meaning</th>
<th id="_135b7363-b06e-0be7-afbd-2ec56e48c158" valign="top" align="left">Operands</th>
<th id="_7e244e3d-234c-b705-314a-549611f54591" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_7d6c5086-830b-c8ac-c780-9bd207158790"><td id="_1e5b84a8-f74d-1c39-7cc5-075f92eea0f3" valign="top" align="left">Table</td>
<td id="_bd209335-34d9-0289-1199-769bf3e6e164" valign="top" align="left">generic table container</td>
<td id="_cbdca7b7-f76b-4fd7-c99c-23241589d4ef" valign="top" align="left">rows</td>
<td id="_414e3045-2987-3fd9-5d05-f957434dd73a" valign="top" align="left"><tt>mtable</tt></td>
</tr><tr id="_e4a62512-d96d-2059-f900-a4a570de51d9"><td id="_ae1a1810-beef-b754-b0be-62ad40c13ae5" valign="top" align="left">Td</td>
<td id="_9749c9e9-df2a-138b-8dc6-5a8286ca3fc4" valign="top" align="left">table cell</td>
<td id="_360bb63b-d18a-be1c-3c40-de5f2dfb9f76" valign="top" align="left">1</td>
<td id="_3e282566-de19-aa39-5c2f-f47f96eb5b20" valign="top" align="left"><tt>mtd</tt></td>
</tr><tr id="_27f963c5-580b-6fa2-fd33-a151c2b60687"><td id="_f7b0cfa4-2727-cf8d-c443-e20c98a6df6b" valign="top" align="left">Tr</td>
<td id="_9ea418a2-5268-576e-9aa1-aa8ef08aefe1" valign="top" align="left">table row</td>
<td id="_199f0cd4-18f9-431e-c52f-4dd00d9037c3" valign="top" align="left">cells</td>
<td id="_674fea5d-c2b8-de45-f89a-907236de3065" valign="top" align="left"><tt>mtr</tt></td>
</tr><tr id="_f779cf42-dd07-67ab-b912-dd077fcd8a09"><td id="_e5355bf0-af2a-29a4-05df-784a929c8237" valign="top" align="left">Mlabeledtr</td>
<td id="_435d5171-3c06-68cf-272f-e5192911374e" valign="top" align="left">labelled row</td>
<td id="_f8c06e4a-287b-b243-2cf6-0969ea165ea1" valign="top" align="left">cells</td>
<td id="_5a3fd4a6-4b7e-33bb-b1e3-c13023292124" valign="top" align="left"><tt>mlabeledtr</tt></td>
</tr><tr id="_f0936e0c-f9b4-e7fd-b45d-abc5abfb69a4"><td id="_80d81d16-db90-4abb-2220-5a87993aa943" valign="top" align="left">Matrix</td>
<td id="_4716b863-bfe9-0557-1fb2-d3eb19316b72" valign="top" align="left">plain matrix</td>
<td id="_874a8756-7e0e-a17d-9a75-a79ad6287800" valign="top" align="left">rows</td>
<td id="_cee2bbb5-8d47-f123-0069-0ff598049533" valign="top" align="left">parenthesised grid</td>
</tr><tr id="_9e97d466-6241-01ac-23ac-a730e55a1a42"><td id="_257c1174-7ccf-264f-e3bc-500ba9a5a272" valign="top" align="left">Bmatrix</td>
<td id="_ecbc341c-0280-545e-6278-09fd931d3537" valign="top" align="left">curly-brace matrix</td>
<td id="_af2e12ea-158a-4e06-beea-ff4b42bac5db" valign="top" align="left">rows</td>
<td id="_e91990f9-9b8d-deca-468a-de7ab9ae52e8" valign="top" align="left"><tt>\{..\}</tt> grid</td>
</tr><tr id="_a5e29789-cfb7-3d90-2306-02236a764fd8"><td id="_434fd48e-fb24-21e1-1ac3-2ed0d78aedd8" valign="top" align="left">Pmatrix</td>
<td id="_8a4ff363-4eb2-be10-3edf-4c28c0efdfc7" valign="top" align="left">parenthesis matrix</td>
<td id="_dcf7b277-53a8-7d6c-6fc6-5bd50794f09d" valign="top" align="left">rows</td>
<td id="_df128511-5576-dbc9-67b1-06f3da40cc5c" valign="top" align="left"><tt>(..)</tt> grid</td>
</tr><tr id="_6d4dac30-2471-3847-38c7-96d5003f2273"><td id="_d96bdaf7-79f3-aab2-a5fb-76bcd0e74ce8" valign="top" align="left">Vmatrix</td>
<td id="_c90c664c-c906-e00c-dada-7739bf163bc8" valign="top" align="left">vertical-bar matrix</td>
<td id="_b9bbec94-db7b-bc4a-d9a1-58aeda9859d1" valign="top" align="left">rows</td>
<td id="_de6b8cbc-396b-afac-8c7f-8b7ae9eeee05" valign="top" align="left">|..| grid</td>
</tr><tr id="_ce8190a5-8a58-4d41-deac-4e92476419be"><td id="_6be9aedf-04da-3081-d6c9-ced8cb01cc13" valign="top" align="left">Cases</td>
<td id="_ac8063dc-5169-1d51-807d-ef862228bf49" valign="top" align="left">case selection</td>
<td id="_d11abdc2-ef35-ee7b-5523-64ec54cd8606" valign="top" align="left">rows</td>
<td id="_13c5b4bc-9ab3-68aa-9f57-fbc0c60b10ea" valign="top" align="left">left brace, null right delimiter</td>
</tr><tr id="_09199e29-fea0-b6d0-7152-307c8d691ddd"><td id="_82c6d5c1-58ff-1013-34c1-bbefc435272c" valign="top" align="left">Array</td>
<td id="_1290fe45-f0fe-bc82-ca59-869803539b6a" valign="top" align="left">array with alignment</td>
<td id="_78347688-b6e9-15e4-5690-6db647dbc982" valign="top" align="left">rows</td>
<td id="_36e6e353-32cb-4c81-e900-c72e31bf3ca2" valign="top" align="left"><tt>array</tt> environment</td>
</tr><tr id="_6db6ebd1-9a98-0ecc-1bff-12b8fda39e11"><td id="_3c0ffa7c-869f-bef8-c23f-c0e6f6da6504" valign="top" align="left">Align</td>
<td id="_40a1e603-3d8b-b994-4202-10494389d680" valign="top" align="left">aligned equations</td>
<td id="_3d5971b5-4531-d29c-c504-136f5805eaa4" valign="top" align="left">rows</td>
<td id="_99aa9c45-30ab-2f5b-87cd-b60482ff7374" valign="top" align="left">alignment points preserved</td>
</tr><tr id="_a994075b-759a-5a2a-11af-45d56acbead8"><td id="_74568209-cd39-ff6d-074c-570dc26de92d" valign="top" align="left">Eqarray</td>
<td id="_be153d0a-1343-cf1f-07df-abe9b0a703f2" valign="top" align="left">equation array</td>
<td id="_e78006a0-9eb0-af96-869c-55aa7454ae94" valign="top" align="left">rows</td>
<td id="_777f75c9-1140-0494-5c20-0fb0483a8f30" valign="top" align="left">alignment at relations</td>
</tr><tr id="_1887dab7-892f-6bf7-77f7-3fb5e0236e95"><td id="_c0acf51e-a71b-2c32-a785-4dd9ad9bc8cd" valign="top" align="left">Split</td>
<td id="_00b59a0a-de20-1294-771a-6d6e69fed1f4" valign="top" align="left">split equation</td>
<td id="_c23ce80c-9541-8c2f-dd6c-9afdc2cfa7f5" valign="top" align="left">rows</td>
<td id="_80c36a6b-bad4-f980-8bba-05e9e0d4e407" valign="top" align="left">line structure preserved</td>
</tr><tr id="_d98c6611-33ae-56d6-1072-87c8f5c72938"><td id="_e857ae52-31ef-805f-4ec3-df1f609d80df" valign="top" align="left">Multline</td>
<td id="_f5f97656-665f-3589-eab3-acf94aabcd38" valign="top" align="left">multiline equation</td>
<td id="_275ada1d-bfcc-7341-dd5b-16c6806c0426" valign="top" align="left">rows</td>
<td id="_543e3c1b-9e98-81fe-5e33-c88133ecb450" valign="top" align="left">line structure preserved</td>
</tr></tbody>
</table>
</clause>

<clause id="_ca392532-c610-2383-6495-a7fe50acf0e3" obligation="normative">
<title id="_612d8247-c171-bfed-cbb1-fcc2d295afb1">Text and annotation</title>
<p id="_de8fded2-f65b-d0ce-500d-92b7d8096d6b">Text and annotation classes:</p>

<table id="_e3e6b398-9bf9-e46f-9878-bdedd6026c49"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_aa353a85-480c-bfdf-347b-865546d757cf">Text and annotation classes</name>
<thead><tr id="_14c06f43-2ce8-d595-08e2-fd17172bdf51"><th id="_a34d118e-6ba0-0656-2293-7cd292d4c504" valign="top" align="left">Class</th>
<th id="_8fa28dee-26f6-773d-fdb5-931e9bf839c0" valign="top" align="left">Meaning</th>
<th id="_9e944dfd-ff98-0f6e-3efb-6e2fd7e4df89" valign="top" align="left">Operands</th>
<th id="_0a9b0163-2a99-a610-fe90-d49e1147aeef" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_dd868d27-681c-fc88-8bb3-4c8e60e25af6"><td id="_2489a5d3-a05f-3f33-f1dc-decb8559411b" valign="top" align="left">Text</td>
<td id="_56ed7143-ad32-52e9-bf71-39d0f4b17fbe" valign="top" align="left">upright text run</td>
<td id="_fbf2229b-65d0-e520-8ccb-897dfa8f9575" valign="top" align="left">1</td>
<td id="_180c8f99-6692-1010-1d91-98668e22584e" valign="top" align="left"><tt>mtext</tt> / <tt>\text{}</tt> / upright run</td>
</tr><tr id="_9a8cff0e-8574-a235-f67f-ffe389392794"><td id="_cb8bef06-2fed-87b2-0231-522d106127f4" valign="top" align="left">Mbox</td>
<td id="_ae2ad396-a9b3-0dba-72bd-e16ca30a75c1" valign="top" align="left">text box</td>
<td id="_4542913d-926c-085d-b82c-3d7bcd489290" valign="top" align="left">1</td>
<td id="_0e0226dc-5224-17ca-47c0-27579274ad0a" valign="top" align="left"><tt>mtext</tt> / <tt>\mbox{}</tt></td>
</tr><tr id="_d022b9e8-7874-7760-8e96-955eb0424e84"><td id="_1f696f14-8058-dd9b-b8a1-d5a250172d60" valign="top" align="left">Intent</td>
<td id="_c54a57c6-d5aa-d474-f76a-367f7f6f99c0" valign="top" align="left">MathML 4 intent annotation</td>
<td id="_e89dd71b-d33d-b108-7c23-ff8b3c8ed679" valign="top" align="left">1 + value</td>
<td id="_2db93721-a4b2-2999-c185-e00ea3e91238" valign="top" align="left"><tt>intent</tt> attribute; dropped elsewhere</td>
</tr><tr id="_cbfdec3f-6596-9c42-9898-3e00ec71f5bd"><td id="_9a102d17-6120-16a5-884e-7e9ae1fa0c6b" valign="top" align="left">Semantics</td>
<td id="_e57f5285-30e5-3eea-8d30-0754312340f0" valign="top" align="left">annotated expression</td>
<td id="_7b44e24e-edb3-a344-e229-2b364f631293" valign="top" align="left">1 + annotations</td>
<td id="_24f74a60-ab1f-a8cb-3040-6c0f949f07e5" valign="top" align="left"><tt>semantics</tt> element; fallback is the expression alone</td>
</tr></tbody>
</table>
</clause>

<clause id="_040028b3-4662-f54c-0b70-1aa78291f344" obligation="normative">
<title id="_e5a56dec-12d9-f1ce-0976-c1eea3722f65">Presentation constructs</title>
<p id="_2a979211-5b67-05ea-5a10-6e392bfd62dc">Presentation construct classes:</p>

<table id="_d02ee4e5-28a5-bd4e-101f-f5bb437f98bc"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_3dcd2649-86c8-0b89-c7d6-a38b0d7daad8">Presentation construct classes</name>
<thead><tr id="_3d4a1bbc-650c-d607-e41a-0007802ab623"><th id="_d855c881-158e-8fee-3ae0-6cfb680db0ee" valign="top" align="left">Class</th>
<th id="_7f1925bd-ac24-d4b9-e283-5a0ef180bdec" valign="top" align="left">Meaning</th>
<th id="_0fd6b819-a5ac-65f3-d6b2-eb8974ba0115" valign="top" align="left">Operands</th>
<th id="_afc261b6-e755-9920-77a0-b2cf925a5eba" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_7b548d23-7b8b-b1c2-695e-1dac574b2a42"><td id="_a6ed51ea-8e0e-b31c-b607-27132b2c8cc6" valign="top" align="left">Phantom</td>
<td id="_f1521fd5-2c7a-ab34-59f3-ab905e2ae680" valign="top" align="left">space of the operand’s measure</td>
<td id="_48d1ed51-9462-9f04-6457-dd5c80ad3eba" valign="top" align="left">1</td>
<td id="_fb854c7e-efda-cd02-ddbe-6b02450dbe94" valign="top" align="left"><tt>mphantom</tt> / <tt>\phantom{}</tt></td>
</tr><tr id="_d27bcbba-ee04-d4d7-a9cd-7d3c1f7bc529"><td id="_c6301dea-f913-5c3e-1cb3-45e437f12383" valign="top" align="left">Menclose</td>
<td id="_7c7d506c-ea4d-b3e5-be56-e32c2600c0df" valign="top" align="left">notations around content</td>
<td id="_432af4b1-c48f-8da4-ab92-804df4b37a8b" valign="top" align="left">1 + notations</td>
<td id="_a2d947bf-fd98-ef63-0f62-508c87a733d1" valign="top" align="left"><tt>menclose</tt>; boxed fallback</td>
</tr><tr id="_6c1f4b49-15b5-9f1f-1bf4-2129b0f0b3ef"><td id="_35c97d87-2828-6bb9-ec15-005b2c3d7fdd" valign="top" align="left">Merror</td>
<td id="_54bf66c1-1291-2637-82f9-354966d1eb8b" valign="top" align="left">error marker</td>
<td id="_c766a803-8fac-7aae-cd40-6287edd3baa0" valign="top" align="left">1</td>
<td id="_de6e71c5-7107-36e7-bbbd-318c4fa82409" valign="top" align="left"><tt>merror</tt>; verbatim elsewhere</td>
</tr><tr id="_2f2e291c-6b65-b5d0-e8b8-e97a373791f5"><td id="_55da1f5f-44aa-c498-b46c-ddf661fa4eeb" valign="top" align="left">Mglyph</td>
<td id="_208c4882-659d-2d89-5dc9-511e0ceacbdd" valign="top" align="left">glyph reference</td>
<td id="_6c8d9d22-e10c-26d1-86ac-40d12536e1f8" valign="top" align="left">0 + attributes</td>
<td id="_7fd8e60b-3105-1e76-8481-f76713821fa0" valign="top" align="left">image reference; alt text fallback</td>
</tr><tr id="_16ce9c20-ad0d-55d9-ab33-555e9e884b9f"><td id="_038106ae-2de4-bd17-bb7a-4c376beebc2c" valign="top" align="left">Mpadded</td>
<td id="_e1587849-0147-1a46-23fb-34a5c89bc467" valign="top" align="left">padded box</td>
<td id="_0a204a2d-3445-4324-da8a-d4eb2034afaf" valign="top" align="left">1 + attributes</td>
<td id="_4e34feae-eb50-df80-2336-4a4ba458ab0d" valign="top" align="left"><tt>mpadded</tt>; dropped elsewhere</td>
</tr><tr id="_cb7146f3-45aa-ec5f-572d-30931cc7aa99"><td id="_48c8d97a-59ed-264e-5b89-dbd2d251de87" valign="top" align="left">Ms</td>
<td id="_ea8fc332-bb83-9050-ad54-9775eb579a45" valign="top" align="left">string literal</td>
<td id="_858050f3-0040-df52-63c6-2085a80b828b" valign="top" align="left">1</td>
<td id="_fe2a7bfb-2559-f949-82f2-900cf9005591" valign="top" align="left"><tt>ms</tt> / quoted run</td>
</tr><tr id="_c9b99600-9baa-f2e5-a44a-7b2826e17d1d"><td id="_4aa822ff-f1cc-4d29-e889-eaa5e33978bc" valign="top" align="left">Msgroup</td>
<td id="_23e1a0a9-4de2-ca52-4702-e66d8ec95b13" valign="top" align="left">stack group</td>
<td id="_016ae20e-fb16-03f2-94f8-916d74d5987a" valign="top" align="left">children</td>
<td id="_f1ad77ae-6a68-7f13-37f5-99a8a897c36d" valign="top" align="left"><tt>msgroup</tt>; layout fallback</td>
</tr><tr id="_fa103b89-e335-8f3c-7a70-161d287d6957"><td id="_2ac5d41a-e5e4-d166-4297-a8ac6f48ce84" valign="top" align="left">Msline</td>
<td id="_dfdb0167-2f4f-8264-51cb-a4335d2de5c4" valign="top" align="left">fraction bar in a stack</td>
<td id="_93e66ca5-b80b-6472-3d07-1fc429ca6a9a" valign="top" align="left">0</td>
<td id="_4c8a6d60-eb53-9b90-3d09-55a8178301ff" valign="top" align="left"><tt>msline</tt>; rule fallback</td>
</tr><tr id="_3c2aef0b-9733-d0fa-344b-9a0366f1e591"><td id="_58c184d4-6ecf-6ceb-22a2-114d53697d0d" valign="top" align="left">None</td>
<td id="_fc589b78-d3ca-ea8b-9e36-462bffdbb48b" valign="top" align="left">empty slot</td>
<td id="_80cddbd4-d61e-6be9-9a25-412a11b0f65c" valign="top" align="left">0</td>
<td id="_498ee1bb-6926-34ae-d9ee-39bfc57ab89b" valign="top" align="left"><tt>none</tt> element; empty cell</td>
</tr><tr id="_003f3421-c8bb-feca-7471-9a1df684d98e"><td id="_ab5f3c3b-05ef-cc3e-c43c-873e67e7515c" valign="top" align="left">Linebreak</td>
<td id="_092eca03-33a4-30f4-821d-d242f53abc74" valign="top" align="left">line break</td>
<td id="_6c29dde8-e9e3-ca17-6e90-7db2646985aa" valign="top" align="left">0</td>
<td id="_6d538245-2a40-d975-3c95-1cc30a6467ac" valign="top" align="left"><tt>mbreaking</tt> space / <tt>\\</tt></td>
</tr><tr id="_3d308022-ca45-b82d-cf8c-3696b0b5b198"><td id="_48d4ba22-c4f8-7f5e-7841-de4c44575479" valign="top" align="left">Rule</td>
<td id="_c655e1ee-b9e6-a682-5bd9-dce07c4f7119" valign="top" align="left">rule element</td>
<td id="_0979c617-3dd6-9a2e-d45d-ebb6873d44c7" valign="top" align="left">0 + attributes</td>
<td id="_ed0301a8-40b1-185e-c3ae-1b6e0e62b8e0" valign="top" align="left"><tt>mstyle</tt>-rule fallback</td>
</tr><tr id="_31c2a7f4-124a-f7b7-4e76-e10870052b3a"><td id="_09099eb5-3c34-7ad5-3a04-3d241b59144e" valign="top" align="left">Color</td>
<td id="_f885c6ef-f870-bdca-7bce-c86a4992fb95" valign="top" align="left">colour application</td>
<td id="_931a39b9-b060-e037-e46d-1a21d5c38327" valign="top" align="left">1 + value</td>
<td id="_5ca1fdee-cbf0-d4d3-072b-e902773bff60" valign="top" align="left"><tt>mathcolor</tt> / <tt>\textcolor</tt>; dropped where unsupported</td>
</tr></tbody>
</table>
</clause>

<clause id="_f1d80ef2-6c9d-3021-bad7-ac5bc3be2c9e" obligation="normative">
<title id="_494d1614-035c-a33d-50b4-2306e3e36de8">Units and uncertainty</title>
<p id="_c649e6cb-1fa2-f41f-79af-cadef9ef831f">Unit and uncertainty classes:</p>

<table id="_1542a219-ed20-8068-e659-3905b45cd1aa"><colgroup><col width="14.2857%"/><col width="28.5714%"/><col width="14.2857%"/><col width="42.8572%"/></colgroup>
<name id="_b6c5f2ed-2090-4267-69e4-062536224dd9">Unit and uncertainty classes</name>
<thead><tr id="_115b45a7-f50e-1b06-ce1c-7ef6c342a850"><th id="_b5f978df-f94d-e834-717e-12ed01919e8c" valign="top" align="left">Class</th>
<th id="_559b6c4c-a89f-8e68-9904-872a872d8ea3" valign="top" align="left">Meaning</th>
<th id="_ce453197-9cc1-1c8e-cac6-080c4f53e37e" valign="top" align="left">Operands</th>
<th id="_e4686977-7195-b5ef-65f9-5951aa5de5e7" valign="top" align="left">Surface notes</th>
</tr></thead>
<tbody><tr id="_f699259a-f0c6-22ac-3252-a3d05ad94946"><td id="_e00b28cc-deed-7b59-0c39-b15d96ebd307" valign="top" align="left">Unitsml</td>
<td id="_4c979dc9-ad00-1e54-895b-7d7a35f1b5a5" valign="top" align="left">UnitsML unit embedding</td>
<td id="_ace03290-9dc5-8d28-57a2-6383824d9309" valign="top" align="left">0 + expression</td>
<td id="_feb10139-3d04-13c4-ac39-b55f6ab14d9e" valign="top" align="left">per-format forms supplied by UnitsML (CalConnect 36816)</td>
</tr><tr id="_f30b635f-7434-7ff0-ff1b-b1103a252ec8"><td id="_4cd832aa-7053-e36f-fc3b-e39f0017e48f" valign="top" align="left">Uncertainty</td>
<td id="_1771675c-8a09-d6ca-ef60-cb0c153e11ba" valign="top" align="left">uncertainty attachment</td>
<td id="_f163f8fd-e099-e210-fd0e-c43e86e2b6c9" valign="top" align="left">1 + fields</td>
<td id="_dfb640f4-6d04-2a0c-6883-6203a7e16cac" valign="top" align="left">fields per document 1002</td>
</tr></tbody>
</table>
</clause>

<clause id="_ac59a8ac-c53d-a6db-ab8c-03069aa597a3" obligation="normative">
<title id="_7ff08840-74f6-a620-ff2a-88ac1c5b6d9b">Generic bases</title>
<p id="_1fbd238c-df8a-a313-ace2-d4db7f03ce39">These are the abstract bases the concrete classes specialise. They appear in trees only when a reader needs a function with no concrete class, which is a defect to be fixed at the model level.</p>

<table id="_f226fc4c-cb8c-ee38-6ba4-ba2fe0420394"><colgroup><col width="25%"/><col width="75%"/></colgroup>
<name id="_596150d2-2379-70aa-1989-ffbf2eaa9aca">Abstract base classes</name>
<thead><tr id="_384beffc-c407-7fb5-074f-72aa3da430c3"><th id="_52021059-09d5-b4c6-71b7-2cd9a158a92d" valign="top" align="left">Class</th>
<th id="_c58809b5-65dc-3a3c-f975-9e629830e4e7" valign="top" align="left">Role</th>
</tr></thead>
<tbody><tr id="_fcecab2d-f8ed-2900-69e3-44f6d1f96301"><td id="_2f624429-bfa4-7fe7-5b59-85c8497bb86e" valign="top" align="left">UnaryFunction</td>
<td id="_c88e7c73-7ba6-11c4-ba92-7c125dce8543" valign="top" align="left">one-operand base</td>
</tr><tr id="_9406c269-54c3-8231-c279-4f1bf8f1bd4b"><td id="_5738e60b-e504-9bb2-530b-df175464bb05" valign="top" align="left">BinaryFunction</td>
<td id="_b14c5fe1-d826-29d0-e311-e60c0d727a2a" valign="top" align="left">two-operand base</td>
</tr><tr id="_6fbf742b-8d2a-187b-3110-6b795c08a7f2"><td id="_911c1990-b000-4042-2a01-ae5d664ce438" valign="top" align="left">TernaryFunction</td>
<td id="_f377629b-9814-855e-02b7-27051a10c4a8" valign="top" align="left">three-operand base</td>
</tr><tr id="_01fb3ce2-f879-1241-2715-0fbb89df84ed"><td id="_4068997a-35b1-db49-34cd-ed5af7b00478" valign="top" align="left">Nary</td>
<td id="_80c12e75-17ba-1ef8-bab8-a901d707586c" valign="top" align="left">nary-operator base</td>
</tr><tr id="_e66601b0-b1fd-ac10-27b0-5e6370656203"><td id="_cb7808fe-a904-f1de-8296-009acecfab60" valign="top" align="left">Base</td>
<td id="_68d0ae97-f487-7fcd-5a3c-442e771cc7b4" valign="top" align="left">subscript-form base</td>
</tr><tr id="_b86b58de-e257-f6e5-c689-dcade0457a55"><td id="_6f43eda8-3085-4775-804d-546b31f5bfd6" valign="top" align="left">Ul, Sup</td>
<td id="_54f65364-ffbe-62ac-2c42-187ab98fcaa1" valign="top" align="left">linear-surface subscript/superscript bases</td>
</tr></tbody>
</table>
</clause>

<clause id="_4772a995-22ab-c62c-c34a-37ceb15ea7b9" obligation="normative">
<title id="_9a1089cd-e297-0d8e-218d-a59ad9ed15c2">Font styles</title>
<p id="_17825005-a201-b0bf-784e-532d4557fef3">The 14 font style classes apply a mathematical font variant to their operand. Each carries one operand; the surfaces carry the variant per the mapping.</p>

<table id="_3fe3d00c-c3df-2647-da24-911c0ae61649"><colgroup><col width="10%"/><col width="30%"/><col width="30%"/><col width="30%"/></colgroup>
<name id="_305b0b87-5d08-30d6-a756-60b14e9b289a">Font style classes</name>
<thead><tr id="_8490e778-0f78-8fc8-837e-99bf3bf6fe5b"><th id="_8ee5d3b5-f8ef-5b91-ba96-2309f62179b6" valign="top" align="left">Class</th>
<th id="_8c4bce37-4ca7-7b48-c848-8934aa73ea4a" valign="top" align="left">MathML</th>
<th id="_b0164ff1-cc96-7b34-bdc6-ce88c8ca343c" valign="top" align="left">LaTeX</th>
<th id="_8d5f0ab0-b990-a70a-8523-59bdb5f3fcc0" valign="top" align="left">UnicodeMath</th>
</tr></thead>
<tbody><tr id="_86434d62-0073-b2d2-b80a-9a8c45025c97"><td id="_8b20e6a6-9172-5109-fdf3-c997cea3631a" valign="top" align="left">bold</td>
<td id="_060bda13-1f03-040c-3540-481d8cd600f4" valign="top" align="left">mathvariant=”bold”</td>
<td id="_360cd635-6f03-fc4f-2342-9469108791fc" valign="top" align="left">mathbf{}</td>
<td id="_aee3459f-6275-5c45-6720-e53bc6812fed" valign="top" align="left">bold alphanumeric range</td>
</tr><tr id="_ab14ebc3-d0e6-89a6-9a48-789c50de9a0e"><td id="_d1af6c94-9304-2f43-51e3-7c52cdf6e87c" valign="top" align="left">italic</td>
<td id="_6a8fe912-2036-4be2-ccbe-87609e212d09" valign="top" align="left">mathvariant=”italic”</td>
<td id="_4efc26db-4964-1f1e-1d54-152d8aef6268" valign="top" align="left">mathit{}</td>
<td id="_dfb008a3-04d8-c1c8-602b-9550adea5183" valign="top" align="left">italic alphanumeric range</td>
</tr><tr id="_5009b798-4b85-bb78-e4e9-c0cf4c033832"><td id="_0879722e-817f-e06c-0f3a-929c69d5cff1" valign="top" align="left">bold-italic</td>
<td id="_84a87860-43b0-3d94-1221-5b3a16f9d757" valign="top" align="left">mathvariant=”bold-italic”</td>
<td id="_a998c478-f37f-a512-81fc-e0457659db5f" valign="top" align="left">oldsymbol{}</td>
<td id="_3e5e3cf7-cc5d-4dc7-332b-1f50c0e07804" valign="top" align="left">bold-italic range</td>
</tr><tr id="_48b0c050-b974-cb3c-a05d-36da7125c359"><td id="_de29d0b7-c5b1-f7ad-b84d-2d04bd777059" valign="top" align="left">sans-serif</td>
<td id="_d3764333-fafc-78af-60ef-41fcb7c2bfc9" valign="top" align="left">mathvariant=”sans-serif”</td>
<td id="_7af15ffd-fb62-50aa-d04d-c226d55b385a" valign="top" align="left">mathsf{}</td>
<td id="_1ba010ae-ea3a-90a2-90a6-7cd098802f90" valign="top" align="left">sans-serif range</td>
</tr><tr id="_c26e0ac3-ce60-f689-fd9d-328dc6ad9ceb"><td id="_a82fb0e8-c169-abc9-8cb4-b9a48a991f29" valign="top" align="left">sans-serif-italic</td>
<td id="_1191273f-eb45-2d06-788b-84d65456ae1f" valign="top" align="left">mathvariant=”sans-serif-italic”</td>
<td id="_d47616ff-8364-097b-b94e-8d052f716925" valign="top" align="left">mathsfit{}</td>
<td id="_396c8198-433e-578e-5427-8714dd2a07f2" valign="top" align="left">sans-serif-italic range</td>
</tr><tr id="_9347480f-cb88-6cdc-8e18-3269cc09e4a4"><td id="_5c4f0edd-fad4-568c-2607-98db2112cd09" valign="top" align="left">sans-serif-bold-italic</td>
<td id="_59b04e2f-508a-7684-a8af-a3a2c7fabeef" valign="top" align="left">mathvariant=”sans-serif-bold-italic”</td>
<td id="_8c827049-8cbf-5f03-0d3f-6f577732a141" valign="top" align="left">mathsfbfit{}</td>
<td id="_5ec44734-36f1-f684-3f1c-9709ce5cbf35" valign="top" align="left">sans-serif-bold-italic range</td>
</tr><tr id="_67833914-f46b-1d19-dccd-a38cba969533"><td id="_50874130-cb71-f349-0bea-1ade9ad4553b" valign="top" align="left">bold-sans-serif</td>
<td id="_17775cd7-a9d3-b473-b61e-b15b58df2e97" valign="top" align="left">mathvariant=”bold-sans-serif”</td>
<td id="_f3568faa-b225-95b6-7f90-04d6ca9d4abb" valign="top" align="left">mathsfbf{}</td>
<td id="_273a7808-7844-6e82-8f4e-299f83e454b3" valign="top" align="left">bold sans-serif range</td>
</tr><tr id="_36db8726-0fb8-9c03-c4fd-889baa0aaec6"><td id="_65cb7124-006a-f7d6-53f8-e859ef77795b" valign="top" align="left">monospace</td>
<td id="_5b24e5cd-77ff-4b8d-6f69-41b2c234fff6" valign="top" align="left">mathvariant=”monospace”</td>
<td id="_f8caaf5c-86c2-c21b-e1de-634d9b143c57" valign="top" align="left">mathtt{}</td>
<td id="_44bd8969-927f-fcc5-8a28-5dbf664bd41f" valign="top" align="left">typewriter range</td>
</tr><tr id="_c618a943-eaed-7408-5dc7-c95f69e61e25"><td id="_38867c2e-ecc1-cb69-f3dc-9a35d698f34f" valign="top" align="left">fraktur</td>
<td id="_b12922b5-f411-c5d8-6133-6b9dfe752dec" valign="top" align="left">mathvariant=”fraktur”</td>
<td id="_31fb6be5-9812-4625-7f24-e02204840120" valign="top" align="left">mathfrak{}</td>
<td id="_b594b6b6-7541-20a5-f727-ebffceddb3d3" valign="top" align="left">fraktur range</td>
</tr><tr id="_60a353e8-8011-db50-a7f1-0934fe76be9b"><td id="_cbbf289e-405c-e26d-8a46-3e6fc75da7cb" valign="top" align="left">bold-fraktur</td>
<td id="_bea1e6bb-b5ee-50fe-7670-dc26814c3b01" valign="top" align="left">mathvariant=”bold-fraktur”</td>
<td id="_fa439636-d37a-fa30-ab4b-8c1c8ab5eda5" valign="top" align="left">mathbffrak{}</td>
<td id="_52685831-0b1f-2760-4f1b-add0e143be18" valign="top" align="left">bold fraktur range</td>
</tr><tr id="_5c581d63-c1c7-4c2f-9dec-7f3e00cc787c"><td id="_ec230205-f3f5-0e1f-dc04-9ec945ec26aa" valign="top" align="left">script</td>
<td id="_b989ac28-d080-7a8b-d36d-f6f6a0aa8a3b" valign="top" align="left">mathvariant=”script”</td>
<td id="_384b1ec8-f768-2400-b782-370785f1bfa3" valign="top" align="left">mathcal{}</td>
<td id="_db0f3d9a-6561-847b-fc88-1b78bd7cc6ba" valign="top" align="left">script range</td>
</tr><tr id="_30340f73-9937-bc3f-ccdb-657d6c6c633a"><td id="_7c9ccb57-9b30-446a-d467-8220df263d45" valign="top" align="left">bold-script</td>
<td id="_04908d86-6b3f-9311-246b-5763d8f40651" valign="top" align="left">mathvariant=”bold-script”</td>
<td id="_c5a3a5f5-e426-2451-1553-1424162924ea" valign="top" align="left">mathbfscr{}</td>
<td id="_0a48c49f-a7f3-5c6a-a05a-813d6302b42c" valign="top" align="left">bold script range</td>
</tr><tr id="_c2abe424-7691-f95f-65d9-b8408f0a478d"><td id="_1efb3e7a-3f0e-1a23-9e71-829b3b73992b" valign="top" align="left">double-struck</td>
<td id="_82c38cc2-e321-edbe-b7c0-becd51b46dcb" valign="top" align="left">mathvariant=”double-struck”</td>
<td id="_e1c6d076-b5be-359b-c660-1318059e90ed" valign="top" align="left">mathbb{}</td>
<td id="_6a779b55-25a0-f505-2744-9020ab92e807" valign="top" align="left">double-struck range</td>
</tr><tr id="_39648f49-9018-6af5-da8e-1feea67ab53a"><td id="_8aa8cac1-7dd0-bd7b-7f31-4fe55370d4fe" valign="top" align="left">normal</td>
<td id="_cc8e62f8-622c-f039-b160-7507b296a902" valign="top" align="left">mathvariant=”normal”</td>
<td id="_bfa69083-5bee-b06f-ddf9-d3220619d6ca" valign="top" align="left">mathrm{}</td>
<td id="_e6cdfe8d-2306-df1b-3338-de3eec73d437" valign="top" align="left">upright range</td>
</tr></tbody>
</table>

<p id="_5591df70-f265-1f51-24b1-f6213645aaa4">Where an alphanumeric range does not exist for a character, the UnicodeMath surface renders the plain character with the variant dropped, per the fallback rule.</p>
</clause>
</clause>

<clause id="_431b7950-e7d5-d5bc-da18-aa03d73bab01" obligation="normative">
<title id="_ea7d6d1f-eecb-0e43-5b25-6f20f78d98bb">Annex B: registry entry lifecycle</title>
<clause id="_bb6498eb-dfeb-30c3-876e-46c205a214c0" obligation="normative">
<title id="_a3788ada-a5d7-a16d-5864-d4b66fd301f0">General</title>
</clause>
</clause>

<clause id="_42223989-2abf-340a-a753-ccc106e69071" obligation="normative">
<title id="_d0378428-27c6-42fe-c462-b538c99ef623">Annex B: registry entry lifecycle</title>
<p id="_456b0868-7f6e-beae-0d55-eb652ccb903c">This annex walks a registry entry from definition to publication. The normative rules live in the registry clause; this annex shows them applied.</p>

<p id="_262a686c-5893-24c2-6f0f-4aacd1c91c30">This annex walks a registry entry from definition to publication, with representative entries per category. It illustrates <xref target="registry"/>; the normative rules are stated there.</p>

<clause id="_18efa786-21cf-eee3-ad89-7c24ac2bcd0e" obligation="normative">
<title id="_39c85099-53e2-1e29-315a-215a495fe6ea">Defining an entry</title>
<p id="_f872b2ea-6006-d6a0-3e16-43454c4fb7b5">An entry is a row of the registry data: name, glyph, the four format renderings, categories. Two examples:</p>

<table id="_334b5213-c919-a280-fdc1-9f5fb84a253a"><colgroup><col width="9.0909%"/><col width="9.0909%"/><col width="18.1818%"/><col width="18.1818%"/><col width="18.1818%"/><col width="18.1818%"/><col width="9.091%"/></colgroup>
<name id="_45f64f58-eecf-fbbb-b62d-f0e04811b709">.Representative registry entries</name>
<thead><tr id="_7cdfac82-3c80-500c-45c3-3efc5c567fa1"><th id="_cf8ee818-d177-03f4-655e-408ddb07d054" valign="top" align="left">name</th>
<th id="_78bbb414-6f53-d144-8efc-f97426fd59d2" valign="top" align="left">glyph</th>
<th id="_12c27fbf-1101-708d-e0e9-d3cc5fa39863" valign="top" align="left">mathml</th>
<th id="_3b92e95b-8691-3507-1cd0-5c1a1b2032dd" valign="top" align="left">latex</th>
<th id="_f9aa43d7-eb18-84ef-1a4e-e5796d6f3854" valign="top" align="left">omml</th>
<th id="_515aa923-5831-b646-9db2-9795800f4077" valign="top" align="left">unicodemath</th>
<th id="_185465d5-04dd-03ce-d80b-8509f96cf144" valign="top" align="left">categories</th>
</tr></thead>
<tbody><tr id="_d5bd79ba-5f61-7159-d24e-868b553466cf"><td id="_287c2095-3885-43e1-e523-fc1e8f7c4aa2" valign="top" align="left">Alpha</td>
<td id="_6cc52ff0-b8c1-77cf-8d39-baf7aa72f705" valign="top" align="left">α</td>
<td id="_5875bf12-ec5f-1909-0132-c3fbe7689f7d" valign="top" align="left"><tt>&amp;#x3b1;</tt></td>
<td id="_fd0d38d3-7eeb-7d29-7f59-f62143cc5bc1" valign="top" align="left"><tt>\alpha</tt></td>
<td id="_839fa6f0-c239-325f-e431-a3e30eb43ef6" valign="top" align="left">run “α”</td>
<td id="_b3918cde-5b1f-a384-d071-acb642f6d744" valign="top" align="left"><tt>α</tt></td>
<td id="_66769ffe-2ccf-4af6-5ae6-31aac1001b28" valign="top" align="left">greek</td>
</tr><tr id="_e85e7380-432a-7f15-ee0f-c93ffff4e228"><td id="_12708042-7342-1cc2-aacd-8114d3e10326" valign="top" align="left">Plusminus</td>
<td id="_932b73ac-63d5-e212-adf0-8ac64de6a28c" valign="top" align="left">±</td>
<td id="_8d03206b-2479-12a2-7139-4e1eb090848f" valign="top" align="left"><tt>&amp;#xb1;</tt></td>
<td id="_89297f31-0996-3a76-bd8e-e58b5d7f64fb" valign="top" align="left"><tt>\pm</tt></td>
<td id="_057197ab-1661-8389-ea47-56847c6bef4a" valign="top" align="left">run “±”</td>
<td id="_987229a3-fe4d-9763-eee8-efe6ddb58920" valign="top" align="left"><tt>±</tt></td>
<td id="_55b77de3-f8ca-156a-96dd-e199fc172bfc" valign="top" align="left">operator, relation</td>
</tr></tbody>
</table>

<p id="_abb8b5bc-9cae-a709-a9e5-ab42561cc7c2">The generated symbol class is derived from the name: <tt>Plurimath::Math::Symbols::Alpha</tt>, <tt>Plurimath::Math::Symbols::Plusminus</tt>. The class holds the entry; the tree and the readers refer to the class.</p>
</clause>

<clause id="_ad333088-48d9-4508-f93e-a2951b1538fb" obligation="normative">
<title id="_4dd6c519-11c7-89e1-982c-abd0b9f74592">Adding an entry</title>
<p id="_cd98129a-6e1d-baa6-7b98-42215001e1c6">The steps of a new entry, in order:</p>

<ol id="_3b6c83de-4dfc-faef-86cf-6b246e8f7b4f" type="arabic"><li><p id="_bee9e4ee-42bd-a0d1-8ba7-a8930ef5e19c">The entry is added to the registry data with all fields filled; a field for which no rendering exists carries the declared empty rendering, not prose.</p>
</li>
<li><p id="_6eab8cef-47e8-9676-d826-52daa301d96e">Generation runs; the new symbol class appears in the generated sources.</p>
</li>
<li><p id="_ff956ebf-ef00-2e9d-0da5-1e7fccd186e2">The collision build checks the name and the glyph against the existing registry, the model class names, and the UnitsDB symbol space. A collision fails the build.</p>
</li>
<li><p id="_acb05d53-514c-20e7-4778-a3e2bd8f38ca">The render corpus gains an entry exercising the new glyph in all six surfaces, frozen against the model version that ships it.</p>
</li>
<li><p id="_82f0c8d9-f61e-fa33-22f8-7fa98a30ec02">The registry edition is published; this document’s symbol-space count (1 438 at edition 1) is updated.</p>
</li>
</ol>

<p id="_0d31bb39-4f12-cd74-72c7-4d69df4a1406">No step reorders: a glyph that fails collision never ships; a corpus entry is never retrofitted after publication.</p>
</clause>

<clause id="_e4ea3523-3db8-8072-bcf0-e222ec2f4dcf" obligation="normative">
<title id="_311423d9-708f-40aa-db43-7de1c6712b69">Function entries</title>
<p id="_eced117b-5680-ab79-42ed-672fb273d411">Function classes are not registry rows in the same sense — their semantics live in this document (<xref target="annex-a"/>) and their renderings in their class definitions — but they obey the same discipline: a new function class ships with its operand definition, its per-surface rules, its fallbacks, and a frozen corpus entry per surface.</p>
</clause>

<clause id="_3254fc85-20fd-5ed6-40bf-3a201da66b5e" obligation="normative">
<title id="_84e85aab-1a51-4249-e345-7c7c41f146af">Deprecation path</title>
<p id="_28f1fc84-e1b9-aa22-44f0-33b286aac22f">A deprecated entry keeps its class, its glyph and its renderings byte-stable. The registry marks it deprecated with the edition of removal. Readers that encounter the entry keep parsing it; writers keep writing it. At the removal edition, the class is deleted, the corpus entries that used it are superseded, and the registry count decreases.</p>
</clause>

<clause id="_13264c9c-be05-4f69-353d-2f818db1a939" obligation="normative">
<title id="_1bdef4cf-e0cb-6e0c-5fd6-e2fa35b5a294">Counting</title>
<p id="_7fb033ef-da57-2ddd-3ce0-ed58110f489a">The symbol-space count is asserted by the build against the registry data, so this document’s count and the registry cannot disagree silently. Edition 1: 1 438 symbol entries, 103 function classes, 14 font styles, 10 table classes.</p>
</clause>

<clause id="_7743571a-291c-0ffa-e016-7214a045a976" obligation="normative">
<title id="_eb6e914f-b0ae-eced-d0d4-f7589add926f">Representative symbol entries</title>
<p id="_76f9b294-94a9-aae6-ad1e-e5e07366478a">The entries below are drawn from the registry at this edition; each row is one symbol entry with its input tokens and its LaTeX rendering as published.</p>

<table id="_062373ed-3bb8-340f-4758-70bd523ed3a3"><colgroup><col width="12.5%"/><col width="12.5%"/><col width="25%"/><col width="25%"/><col width="25%"/></colgroup>
<name id="_0543bab6-d352-3161-eee7-e028c7d66c2c">Greek letters</name>
<thead><tr id="_73c57cf1-11b2-0cf6-feef-76365e982a80"><th id="_9d17f6ff-6a72-535c-347e-1bafc8bc63f1" valign="top" align="left">Entry</th>
<th id="_e68d76bb-e250-f03b-9adf-e8dd5b1649c9" valign="top" align="left">Glyph</th>
<th id="_c43c25c2-42f2-c2c8-80f3-98586d2143d3" valign="top" align="left">AsciiMath</th>
<th id="_b4df2fd0-eaba-9a8f-f708-c0f587f6bf40" valign="top" align="left">UnicodeMath</th>
<th id="_0e2e5bad-b45c-71e0-9a0e-1e916fe1140e" valign="top" align="left">LaTeX</th>
</tr></thead>
<tbody><tr id="_908eb118-65d8-5c92-7ed1-b9a728e53645"><td id="_cbfc75ee-e54c-e1e4-9c91-f1d78e76a34a" valign="top" align="left">Alpha</td>
<td id="_6421b3a1-1176-20c7-2644-cc27e8359311" valign="top" align="left">α</td>
<td id="_2a851e42-713b-ff43-7280-5f85f8553abf" valign="top" align="left"><tt>alpha</tt></td>
<td id="_9abd86f8-bae3-a59e-89e7-b6b1dc12ba73" valign="top" align="left"><tt>alpha</tt></td>
<td id="_69301810-e688-3f0a-843d-24ae1c04b518" valign="top" align="left"><tt>\alpha</tt></td>
</tr><tr id="_95eb5fbd-ca08-5120-8669-ee0041b6803c"><td id="_0be7c34b-8b1b-3c6b-6278-0ac47afdc25d" valign="top" align="left">Beta</td>
<td id="_fd472ba8-75cf-210b-5995-a120f11c26d3" valign="top" align="left">β</td>
<td id="_4557d68c-8e3e-c036-b40b-00098c166e42" valign="top" align="left"><tt>beta</tt></td>
<td id="_2a99f413-c7bc-62d9-9ce1-472f125b6454" valign="top" align="left"><tt>beta</tt></td>
<td id="_1c95fa1c-cbfe-7ac5-2e56-09fa50055d73" valign="top" align="left"><tt>\beta</tt></td>
</tr><tr id="_c74eaf8f-6761-1061-295a-c468161b0c8a"><td id="_68ef18ac-e9d7-66d4-29fb-0579cf319b24" valign="top" align="left">Gamma</td>
<td id="_b1d91a64-6ab7-ee7f-5d49-2982c4cc9ef2" valign="top" align="left">Γ</td>
<td id="_28793c2f-420b-11ae-855b-75d87abddd15" valign="top" align="left"><tt>Gamma</tt></td>
<td id="_18f4ac73-06e9-e887-3df4-4e1d0546fde1" valign="top" align="left"><tt>Gamma</tt></td>
<td id="_dc6b2c79-5292-0f18-7809-8916feedbbcf" valign="top" align="left"><tt>\Gamma</tt></td>
</tr><tr id="_96e8419f-cc92-09c8-a1d2-9ed6bb9c5552"><td id="_7767bca0-4eca-0ff2-2edf-fcd2b7ddcecb" valign="top" align="left">Delta</td>
<td id="_43322a87-79e1-2849-79ba-487b0dd9bca1" valign="top" align="left">Δ</td>
<td id="_93263ece-e2b9-699e-04a7-66eea2ac756b" valign="top" align="left"><tt>Delta</tt></td>
<td id="_59828c92-23a1-1237-cf52-3d817bea3927" valign="top" align="left"><tt>Delta</tt></td>
<td id="_7190cb67-d440-1171-10a6-59bb03b79867" valign="top" align="left"><tt>\Delta</tt></td>
</tr><tr id="_eac7cf15-360a-4465-e317-9e51be2d11fe"><td id="_ff19c8ad-e16e-40e5-5a68-1a8e0a4b39ab" valign="top" align="left">Omega</td>
<td id="_3a257b4b-c703-f059-6023-cf53cc481f01" valign="top" align="left">Ω</td>
<td id="_395e4e60-5335-4d2b-abc3-6ca1b8c34178" valign="top" align="left"><tt>Omega</tt></td>
<td id="_92f79821-5337-7ac3-872b-fda9efa3cf2d" valign="top" align="left"><tt>Omega</tt></td>
<td id="_3b024413-6142-000c-84a5-9aaab8032420" valign="top" align="left"><tt>\Omega</tt></td>
</tr></tbody>
</table>

<table id="_7e90575a-91a4-9a0e-9910-8c3ccdced72e"><colgroup><col width="12.5%"/><col width="12.5%"/><col width="25%"/><col width="25%"/><col width="25%"/></colgroup>
<name id="_b494b17c-b022-a6c0-a8e6-a7cbc914ee7c">Nary operators</name>
<thead><tr id="_d8f9ae3f-28d5-f857-f2fa-d5be8392b966"><th id="_6ee7101c-6905-bda1-1f7f-d1178e28e571" valign="top" align="left">Entry</th>
<th id="_bbfb57ef-4435-4d3b-b3d9-d8c566b1ef33" valign="top" align="left">Glyph</th>
<th id="_2397dfb7-1a0d-1de6-e88d-4acef9579cb9" valign="top" align="left">AsciiMath</th>
<th id="_43c8741a-d6d8-3e22-7107-7bd76666c0b9" valign="top" align="left">UnicodeMath</th>
<th id="_0d6a1afd-263b-dbd0-b7b6-58ed93f82f21" valign="top" align="left">LaTeX</th>
</tr></thead>
<tbody><tr id="_feead39b-ec8a-76b6-d002-d6f5f4e7192a"><td id="_1091cf1c-c8a9-06e9-333c-98d5c9c31483" valign="top" align="left">Sum</td>
<td id="_7f782a68-aa8a-bc06-a095-27f7332266dd" valign="top" align="left">∑</td>
<td id="_e4de5841-8168-c1de-2b16-b2f59e1624e3" valign="top" align="left"><tt>sum</tt></td>
<td id="_2ebd390f-137d-452e-17e1-63ff70dbd3d0" valign="top" align="left"><tt>sum</tt></td>
<td id="_eec4a295-ba70-36ca-88d4-65e050d3c591" valign="top" align="left"><tt>\sum</tt></td>
</tr><tr id="_941dfab8-7a18-907b-2fd4-e2b6ec9587ec"><td id="_7f20c713-4801-72b7-c7c8-6fe4184d6019" valign="top" align="left">Prod</td>
<td id="_8eee2e61-7eef-5fb5-1244-3399cea73d68" valign="top" align="left">∏</td>
<td id="_5a57e12e-2b0f-f752-e86c-c24d3bbe671a" valign="top" align="left"><tt>prod</tt></td>
<td id="_99aab7e0-7db1-d349-9b29-295dae755f9f" valign="top" align="left"><tt>prod</tt></td>
<td id="_af7f8fc9-4bc7-c111-7794-50720b38174f" valign="top" align="left"><tt>\prod</tt></td>
</tr><tr id="_63e9d99c-26af-2a2e-7da3-29c1b02b214d"><td id="_9c233a98-5c39-598c-ef95-4fe2daf323fc" valign="top" align="left">Int</td>
<td id="_93ff37ae-6f68-ce68-f975-45d4255706e9" valign="top" align="left">∫</td>
<td id="_fb90ed98-4e76-ac5b-fc4f-30775c13fa88" valign="top" align="left"><tt>int</tt></td>
<td id="_2ea75ee2-2d4d-673b-fe23-fcd4420c4902" valign="top" align="left"><tt>int</tt></td>
<td id="_639daeb1-77b3-d3e0-2364-2d1f30f991f9" valign="top" align="left"><tt>\int</tt></td>
</tr><tr id="_47407921-6e6a-4262-416e-c54d42574612"><td id="_a8bde462-e6ce-b915-cd75-cf97cf581745" valign="top" align="left">Oint</td>
<td id="_3fd23496-5787-3b76-3efe-66dce049fac7" valign="top" align="left">∮</td>
<td id="_73aee990-9bfc-b5fe-3b05-ca5e83816bda" valign="top" align="left"><tt>oint</tt></td>
<td id="_6b16e5ca-fdaf-203b-2c11-d50e2bc2693a" valign="top" align="left"><tt>oint</tt></td>
<td id="_4f8fd591-c71d-0bbd-78c5-fa913a2a4f02" valign="top" align="left"><tt>\oint</tt></td>
</tr></tbody>
</table>

<table id="_92910fe6-d348-dc12-2167-1012b31860f2"><colgroup><col width="12.5%"/><col width="12.5%"/><col width="25%"/><col width="25%"/><col width="25%"/></colgroup>
<name id="_8acfc483-929e-66fa-8942-9a41848b8eef">Relations and operators</name>
<thead><tr id="_756165d0-f560-3dcc-0893-2fb3a899867d"><th id="_65c01a13-8c80-8610-6e5b-9c4ac47cdabb" valign="top" align="left">Entry</th>
<th id="_950858fc-8acc-01f3-77ba-e73a009a0c41" valign="top" align="left">Glyph</th>
<th id="_f42e4981-539e-0dbc-443b-6fb8008e005b" valign="top" align="left">AsciiMath</th>
<th id="_5bfa1717-b77f-5444-15f0-cd17293943a1" valign="top" align="left">UnicodeMath</th>
<th id="_94c688ed-8ef0-c36c-321a-41feba54a284" valign="top" align="left">LaTeX</th>
</tr></thead>
<tbody><tr id="_ed89ec9e-89dd-13a4-d7f8-d95287e64a75"><td id="_9439e9f8-b660-73ce-fb2c-01e67b3fdc39" valign="top" align="left">Pm</td>
<td id="_e71c68b2-7adf-b7f6-fdf1-31c5a22d4a46" valign="top" align="left">±</td>
<td id="_b6830169-d13c-2c73-2b2b-45c4abd145c2" valign="top" align="left"><tt>pm</tt></td>
<td id="_645a7ed2-ce7a-d40b-4a9e-ee7556c4112e" valign="top" align="left"><tt>pm</tt></td>
<td id="_f0175a9d-bf90-f422-2575-b2a375feff59" valign="top" align="left"><tt>\pm</tt></td>
</tr><tr id="_eeb5c990-5c16-2265-e93f-f48c52ce5084"><td id="_dc4120b1-dc78-d9c9-d317-ad7c237799a4" valign="top" align="left">Times</td>
<td id="_0bb75e14-b3bf-42a8-2c44-c4fb23302cc5" valign="top" align="left">×</td>
<td id="_717c28c9-688a-b375-1c6b-f168ef5280d6" valign="top" align="left"><tt>times</tt></td>
<td id="_5554bfcc-e990-68fd-fa5f-272f2198be9a" valign="top" align="left"><tt>times</tt></td>
<td id="_735ed384-01b3-843f-5d76-03d4a6bf48eb" valign="top" align="left"><tt>\times</tt></td>
</tr><tr id="_202384e4-6019-c792-844d-f0a7a0d6d15b"><td id="_5644b521-d462-7e66-e3e0-4f589f1da459" valign="top" align="left">Leq</td>
<td id="_59064276-d1f1-235e-9170-ffbf27552ffb" valign="top" align="left">≤</td>
<td id="_703bef27-8a51-2c13-112a-073de2f4e270" valign="top" align="left"><tt>leq</tt></td>
<td id="_515b4af4-7607-cea4-8589-8b13ce8d8a21" valign="top" align="left"><tt>le</tt></td>
<td id="_67e6c857-324f-7b01-0f8c-8aea31a695ae" valign="top" align="left"><tt>\leq</tt></td>
</tr><tr id="_a4965ce5-b9a6-a218-d5fd-0fbaabddb635"><td id="_b933c076-7ddc-c219-3714-75f1774910ed" valign="top" align="left">Geq</td>
<td id="_8a61efe9-2279-7517-d526-7c4eb9922262" valign="top" align="left">≥</td>
<td id="_252c5e68-5ab7-c327-adba-dd8f3a76c3c6" valign="top" align="left"><tt>geq</tt></td>
<td id="_974666de-2fb6-d50d-5a48-9ccd7ac4f974" valign="top" align="left"><tt>ge</tt></td>
<td id="_e4c280ca-e0bb-8b80-d37f-845372ab8c84" valign="top" align="left"><tt>\geq</tt></td>
</tr><tr id="_5599a84a-40eb-0d16-db21-362ba16a85db"><td id="_62d11327-5eef-30dd-009a-4db336edfde5" valign="top" align="left">Neq</td>
<td id="_b67fda3a-53d4-2309-2ee0-db250a9eb6bc" valign="top" align="left">≠</td>
<td id="_598f4ea3-aa63-6ae4-9eb5-09079730fd86" valign="top" align="left"><tt>neq</tt></td>
<td id="_557fa46f-2e4d-484b-7c41-843054cdf1fe" valign="top" align="left"><tt>ne</tt></td>
<td id="_bbbd88b6-174c-51d0-16b3-3f058b2927c4" valign="top" align="left"><tt>\neq</tt></td>
</tr><tr id="_e8c1665f-88b1-062b-fb26-07bb3aa796be"><td id="_ddbaf160-0eb0-f49a-d0bb-a41b5ca38690" valign="top" align="left">Approx</td>
<td id="_3a38ff6c-bab8-cf84-e1ea-1384e7a3d9ef" valign="top" align="left">≈</td>
<td id="_cf30bf28-1ef5-10d7-3649-5d1107f063bc" valign="top" align="left"><tt>approx</tt></td>
<td id="_44bf654d-d7ac-37db-2d24-d5d7fbef85ae" valign="top" align="left"><tt>approx</tt></td>
<td id="_e8d77871-2b8d-5f66-4eec-c62b8d0f9bb1" valign="top" align="left"><tt>\approx</tt></td>
</tr><tr id="_d60c7664-86fb-3315-e35e-5ef191508c8c"><td id="_7c184eda-435d-816c-8a5d-3d6a90ca254b" valign="top" align="left">Equiv</td>
<td id="_01efe233-619e-5cb5-dd6e-36d6df417840" valign="top" align="left">≡</td>
<td id="_608a93b3-b082-7f5b-6d41-a8fe68ff7f6c" valign="top" align="left"><tt>equiv</tt></td>
<td id="_1800f608-e175-e48c-0a18-485da009e3f0" valign="top" align="left"><tt>equiv</tt></td>
<td id="_105c158f-176d-13b4-e3ae-1dc8fde5d56c" valign="top" align="left"><tt>\equiv</tt></td>
</tr></tbody>
</table>

<table id="_cb9d1174-6346-5ab6-8151-902665c46b46"><colgroup><col width="12.5%"/><col width="12.5%"/><col width="25%"/><col width="25%"/><col width="25%"/></colgroup>
<name id="_7cda51f2-dc54-2dde-9a70-084992954428">Logic and quantifiers</name>
<thead><tr id="_22073ea9-f847-f34d-3db1-7ed25fc98ad1"><th id="_fe4137f1-430b-52ab-4c6f-8c35ca6fc384" valign="top" align="left">Entry</th>
<th id="_dc9e48e3-be09-65cd-be20-18188bd52645" valign="top" align="left">Glyph</th>
<th id="_5e039f21-9c6e-b374-bd65-a020efc3b8f6" valign="top" align="left">AsciiMath</th>
<th id="_8c0ad18b-57d9-6c6d-4677-2ab8e1a31241" valign="top" align="left">UnicodeMath</th>
<th id="_1d039601-e84e-c497-4d4a-b490c6bf88df" valign="top" align="left">LaTeX</th>
</tr></thead>
<tbody><tr id="_f689d614-cf90-03fc-e56a-cfb902f6869d"><td id="_e9242ddf-d0fd-b2df-04e4-2dfd4df1d422" valign="top" align="left">Forall</td>
<td id="_976c34ff-4c58-2315-7bd9-11b590cd32f0" valign="top" align="left">∀</td>
<td id="_413bd893-4ad8-69f9-5be0-f47b81d051fc" valign="top" align="left"><tt>forall</tt></td>
<td id="_740391d6-d870-1090-bef7-69f5a5859f3b" valign="top" align="left"><tt>forall</tt></td>
<td id="_52afaf00-4dfa-bb6f-c69f-00c77896df4c" valign="top" align="left"><tt>\forall</tt></td>
</tr><tr id="_7ed7ca17-d844-a814-61bb-0c5fa8398056"><td id="_42a0baf0-d09a-a7db-f9fb-ae545c09c6d0" valign="top" align="left">Exists</td>
<td id="_c17c297f-9df1-d6ea-bf32-acf032e80c2d" valign="top" align="left">∃</td>
<td id="_ff447ac8-42b3-ba19-9f91-6966c1a9061f" valign="top" align="left"><tt>exists</tt></td>
<td id="_f51dd07f-8407-cc4d-ca82-973b754ba83c" valign="top" align="left"><tt>exists</tt></td>
<td id="_ee51183e-cdd8-8335-ef0f-36413836944d" valign="top" align="left"><tt>\exists</tt></td>
</tr><tr id="_4ed48532-0788-a371-0564-221370d669ee"><td id="_c27aa8f4-a3f5-3faf-328b-8f5a87bff08a" valign="top" align="left">Neg</td>
<td id="_1e3cfa81-6331-52b6-0c0e-21b8b627c6b7" valign="top" align="left">¬</td>
<td id="_78b18ca1-040b-df40-2024-1c4dec823f16" valign="top" align="left"><tt>neg</tt></td>
<td id="_17e42b1d-613f-b552-dd11-f58847803bbe" valign="top" align="left"><tt>neg</tt></td>
<td id="_0a5953ff-e647-b942-c5dd-7968fb34728b" valign="top" align="left"><tt>\neg</tt></td>
</tr><tr id="_abc3b3e5-7af4-ab42-b695-4bc81fa19a9e"><td id="_17c1c0a5-9cb9-e73a-f5f1-6632183424ba" valign="top" align="left">Land</td>
<td id="_a05fbd5b-6388-61b8-1351-c17f3040efa0" valign="top" align="left">∧</td>
<td id="_291d557b-c53f-3d03-d50a-415f71bea5d3" valign="top" align="left"><tt>and</tt></td>
<td id="_de090683-f643-302b-47d5-4d4eea7bd504" valign="top" align="left"><tt>and</tt></td>
<td id="_02b7a2b2-3711-2082-8e94-a941b7db1daf" valign="top" align="left"><tt>\land</tt></td>
</tr><tr id="_ab7a9a69-4176-c9d3-70ea-161ecaf90b19"><td id="_0559e40d-6a06-a48d-dd7a-0147616debfd" valign="top" align="left">Lor</td>
<td id="_0108afa4-af50-4c86-41ec-fc1520def053" valign="top" align="left">∨</td>
<td id="_826333ec-0e0e-672d-2bca-9b45432899f5" valign="top" align="left"><tt>or</tt></td>
<td id="_0859c608-ccfd-4b77-fdeb-28b6ec30b034" valign="top" align="left"><tt>or</tt></td>
<td id="_e90d66b5-5b80-a39a-eed3-315cb5b7bd73" valign="top" align="left"><tt>\lor</tt></td>
</tr></tbody>
</table>

<table id="_3120f6fe-fcef-9ae0-48d7-baea1c17c74a"><colgroup><col width="12.5%"/><col width="12.5%"/><col width="25%"/><col width="25%"/><col width="25%"/></colgroup>
<name id="_eafa8609-b373-6196-325b-e3ff8ee45c95">Derivations and miscellany</name>
<thead><tr id="_60b0a6b7-4ca5-fe82-51b2-ec0af5078434"><th id="_86515171-9fc8-597f-2e41-2c110072554b" valign="top" align="left">Entry</th>
<th id="_f95ab3fb-9055-aa41-bb33-e52dd95129e8" valign="top" align="left">Glyph</th>
<th id="_4e40bf09-67a6-b615-ad18-17de422a9182" valign="top" align="left">AsciiMath</th>
<th id="_b66f5935-ea99-5b5d-e56e-12e77fa168a9" valign="top" align="left">UnicodeMath</th>
<th id="_08ff1a0b-2ee9-e6bc-8acf-295709d1a7d6" valign="top" align="left">LaTeX</th>
</tr></thead>
<tbody><tr id="_fefb2d68-1db4-16f8-9652-c66c3d2cc543"><td id="_478ecd9a-09fd-0f16-6b5a-7432da0187e8" valign="top" align="left">Partial</td>
<td id="_be483f04-bf7f-9cbd-011f-5321c8ecd0ac" valign="top" align="left">∂</td>
<td id="_b4e2e3ef-1a65-ead2-9517-075520b40a8e" valign="top" align="left"><tt>partial</tt></td>
<td id="_fcfd7c8c-cbef-9058-327c-33e42018c526" valign="top" align="left"><tt>partial</tt></td>
<td id="_d2d8f33c-e381-ea69-456d-d4363e6fcf1d" valign="top" align="left"><tt>\partial</tt></td>
</tr><tr id="_e205a854-4588-70c1-59f1-602b6b3f62da"><td id="_832d54e9-c415-f31b-b82e-010033efed28" valign="top" align="left">Infty</td>
<td id="_c3e95b84-aaca-4545-8841-794c86a950fd" valign="top" align="left">∞</td>
<td id="_5adb5fa5-7819-7555-9d6e-7b562e1118b7" valign="top" align="left"><tt>oo</tt></td>
<td id="_fb43f006-88fe-2381-f1c3-2684401330cf" valign="top" align="left"><tt>infty</tt></td>
<td id="_18cae7a5-bccb-8bb8-f6aa-44a798d03f18" valign="top" align="left"><tt>\infty</tt></td>
</tr><tr id="_4104d7c2-6213-1c9f-03a1-5a92fb0c6ae4"><td id="_f4325044-8748-7444-9ee3-df2acf9c973a" valign="top" align="left">Rightarrow</td>
<td id="_a8c42960-6588-b12d-204f-686efbd14a1e" valign="top" align="left">⇒</td>
<td id="_fb13031f-adf9-b6af-29b1-d465e2725fbf" valign="top" align="left"><tt>=&gt;</tt></td>
<td id="_feae8bbe-7b9b-3cc6-aa78-a225436a75f0" valign="top" align="left"><tt>Rightarrow</tt></td>
<td id="_7afd76fe-1d9d-7460-44dc-33da4241fa88" valign="top" align="left"><tt>\Rightarrow</tt></td>
</tr><tr id="_76795646-1ec8-1707-e82a-7d33cf5a6fb9"><td id="_82fe19fc-1e3c-c2f6-9c0b-3a863a500f64" valign="top" align="left">Cup</td>
<td id="_86a14de7-0e1e-83ca-78dd-0f41b6ce81b6" valign="top" align="left">∪</td>
<td id="_eedb3a76-ebc0-be94-0513-d67df955b3b4" valign="top" align="left"><tt>cup</tt></td>
<td id="_84f66a33-2df8-2d4f-e7ac-64ede30b0720" valign="top" align="left"><tt>cup</tt></td>
<td id="_3156819c-9c3c-82e9-7c1d-2a07ae44e8d9" valign="top" align="left"><tt>\cup</tt></td>
</tr><tr id="_8d5d5980-c67e-c64f-ac56-f80ecca65bfc"><td id="_204b9721-d7c9-18f1-a11c-aee80dba7ad6" valign="top" align="left">Cap</td>
<td id="_191c9ce5-7e18-6670-4572-1eee7c2401ad" valign="top" align="left">∩</td>
<td id="_21a797aa-5f82-34e1-c6fd-8cbb413a4c82" valign="top" align="left"><tt>cap</tt></td>
<td id="_94ae9f83-2d1d-9658-a9f8-5103d98b2f73" valign="top" align="left"><tt>cap</tt></td>
<td id="_f9a305b3-ecff-660c-a637-706f902dd5c3" valign="top" align="left"><tt>\cap</tt></td>
</tr></tbody>
</table>

<p id="_be68175b-7d61-f99f-3d89-97bfd66c3013">An entry carries more than the table shows: each row’s registry record also holds the MathML and OMML renderings and the additional input tokens (an entry may have several accepted tokens per notation; Alpha accepts <tt>alpha</tt> and the numeric character reference, for instance). The tables show the primary tokens.</p>
</clause>
</clause>

<clause id="_b1d961bb-2e0a-1082-97f2-73af0ffa6540" obligation="normative">
<title id="_aebaac56-1879-1ae4-015c-80e0a3f8d09a">Annex C: test-suite examples</title>
<clause id="_eeb2bd57-7933-089a-db63-d7310849682a" obligation="normative">
<title id="_a1520fdb-f7c0-a1d2-3cc3-4f2d3bb760e5">General</title>
<p id="_d677a40c-c59d-ca85-a655-4f92308ecc24">Vectors illustrative of the conformance classes of <xref target="conformance-classes"/>. Each vector states the construction, the property under test, and the expected outcome. The replay corpora carry the frozen versions of these vectors.</p>
</clause>

<clause id="_6f93b840-9d94-958a-37ea-c728dbfc4a49" obligation="normative">
<title id="_f1be7da1-139f-edba-795f-d57e2dc4069f">Structural equality (class <tt>model</tt>)</title>
<example id="_a1f511c7-c685-6c7e-3984-6e349b2c33f6"><p id="_c3026c89-a670-0195-172f-b41a6a0af2b3">Two trees built independently — one by nesting <tt>Power</tt> over <tt>Frac</tt>, one by rendering the equivalent LaTeX and reading it back with the LaTeX reader — <strong>Expected outcome.</strong> structural equality holds: same classes, same values, same operand structure at every node.</p>
</example>

<example id="_1ca41e37-dd2e-fb39-fc80-c267e09d0146"><p id="_b4f1a162-4488-5ada-66ca-63bc65dbb8d4">A tree containing a <tt>Text</tt> node whose content contains characters escaped differently in two constructions (raw <tt>&lt;</tt> versus the escaped entity) — <strong>Expected outcome.</strong> the trees are equal; <tt>Text</tt> content is compared after unescaping, because content is data and escaping is a surface concern.</p>
</example>
</clause>

<clause id="_173ae9a6-9793-26c3-37f3-69338c3f097b" obligation="normative">
<title id="_59e01ac7-dcab-67aa-6a68-45ef198ce45f">Math zone (class <tt>model</tt>)</title>
<example id="_c42e3436-0d69-ceb7-5ea9-8733d7073d0a"><p id="_2e1e2364-dc3f-f84a-d1ed-1497a130c035"><tt>Formula.new([Symbol.new("+")])</tt> printed to the math zone — <strong>Expected outcome.</strong> the zone line is <tt>Formula</tt> followed by the indented line <tt>└─ Symbol("+")</tt>.</p>
</example>
</clause>

<clause id="_e89f3213-f70f-0fad-20b0-80071a0d4314" obligation="normative">
<title id="_3e7f68fb-1607-8642-6bb0-3f9f766d9736">Render replay (class <tt>render-&lt;format&gt;</tt>)</title>
<example id="_6c4d4e6d-c942-b724-ee9a-3157c01dca47"><p id="_d3e5c8c9-4e57-8d2d-b9aa-f04efd55bf35">The tree for <tt>x^2 + y_1</tt> rendered to each surface — <strong>Expected outcome.</strong> MathML <tt>x^{2}+y_{1}</tt>-equivalent markup with <tt>msup</tt>/<tt>msub</tt>; LaTeX <tt>x^{2}+y_{1}</tt>; UnicodeMath <tt>x^2+y_1</tt>; AsciiMath <tt>x^2+y_1</tt>; OMML with run-based sub/superscript structures; HTML with sub/sup elements. All six byte-frozen in the corpus.</p>
</example>

<example id="_ba9980c9-620f-5aec-3447-4a7cd7f33330"><p id="_d4507dfc-368a-80d4-5eaf-82324dd80526"><tt>Frac</tt> with numerator <tt>a+b</tt> and denominator <tt>c</tt>, inside <tt>Fenced</tt> with round delimiters — <strong>Expected outcome.</strong> MathML <tt>mrow(mo("("), mfrac(...), mo(")"))</tt>; LaTeX <tt>\left(\frac{a + b}{c}\right)</tt>; UnicodeMath <tt>(a+b)/c</tt>; OMML fraction structure inside delimiter structure.</p>
</example>
</clause>

<clause id="_3bb6e84e-604a-cb4e-9de4-0393584402a8" obligation="normative">
<title id="_3c49cc8e-dc46-b359-d609-7e3d7d4cf5a3">Fallback verification (classes <tt>render-*</tt>)</title>
<example id="_5e3abc13-7927-eb4d-745b-609edd270c51"><p id="_73bc7600-4ea5-fa17-3f40-313821e66872">A <tt>Color</tt> node rendering to LaTeX without colour context, and to MathML — <strong>Expected outcome.</strong> LaTeX output omits the colour and renders the operand; MathML output carries <tt>mathcolor</tt>. Both are the declared behaviours; neither emits a marker.</p>
</example>
</clause>

<clause id="_b791a55f-abe4-5045-5d60-dbc4a884f8d5" obligation="normative">
<title id="_ce225a43-6fe1-46f9-1adf-c4b4be97c867">Byte stability (all render classes)</title>
<example id="_29391b98-555e-93bc-584a-037a1ea3b8a3"><p id="_50d46ac2-6cff-cad3-77b0-52b11ce4c225">The full render corpus replayed on two implementations, different operating systems, same model version — <strong>Expected outcome.</strong> byte-identical output for every entry of every surface; any difference is nonconformance.</p>
</example>
</clause>

<clause id="_6978e49c-8673-778f-9f9a-ecb313a1dc67" obligation="normative">
<title id="_67882ab7-fb0a-03fd-512e-ee289c803c3a">Model identity (class <tt>model</tt>)</title>
<example id="_f81801fd-79a5-b178-9a7f-5ff72c32b84c"><p id="_98ab5a7b-27ad-68e8-1f2b-a3c00b10a0ba">The same formula constructed through two different paths — direct tree construction and reading its AsciiMath form — <strong>Expected outcome.</strong> the trees are structurally equal, and the math zones are identical line for line.</p>
</example>

<example id="_9ba5a362-16de-4312-eae6-c257f51640d2"><p id="_783c6d23-e8bc-962d-603c-9ca1095bcc7e">A tree containing an <tt>Uncertainty</tt> node with category <tt>standard</tt>, magnitude <tt>0.2</tt>, attached to an estimate <tt>10.3</tt> — <strong>Expected outcome.</strong> the node is carried as specified in document 1002; every surface renders the uncertainty in its declared form; no surface recomputes the magnitude; the math zone prints the node with its fields.</p>
</example>
</clause>

<clause id="_56e6c1b2-1f99-b3f4-a0c1-1f9598d4e2f6" obligation="normative">
<title id="_991e189a-a1c2-7ea4-71dc-e6be681ecc95">Units embedding (classes <tt>render-*</tt>)</title>
<example id="_ffb8da2e-9ead-785c-2f17-dda725cdd16c"><p id="_dd51fb61-4612-9b2e-206a-609eb9e1e196">A tree whose top level is a <tt>Unitsml</tt> node with expression <tt>kg*m/s^2</tt> — <strong>Expected outcome.</strong> each surface emits the UnitsML-provided form for its format (MathML, OMML, LaTeX, Unicode, XML per CalConnect 36816); the asciiunits expression is preserved verbatim in the model; no surface expands or rewrites the expression.</p>
</example>
</clause>

<clause id="_4a9c98be-ba0d-0577-bedc-82b0727ae2a7" obligation="normative">
<title id="_7a9bb57e-4209-f538-72be-de0e0130959e">Fallback discipline (classes <tt>render-*</tt>)</title>
<example id="_feb3f876-5a32-eb40-663f-559758262964"><p id="_f498bafa-0232-b772-7dec-9c9038b66cae">An <tt>Mglyph</tt> node rendered to OMML, and a <tt>Color</tt> node rendered to LaTeX without colour context — <strong>Expected outcome.</strong> <tt>Mglyph</tt> degrades to its alt text in OMML; the colour is dropped and its operand rendered. Neither output carries a marker or placeholder; both are the declared fallbacks of <xref target="fallbacks"/>.</p>
</example>
</clause>

<clause id="_d18eca71-c860-db22-3791-73a417df3788" obligation="normative">
<title id="_2f4bc51e-149c-2fca-31df-55911c0541f6">Registry stability (class <tt>model</tt>)</title>
<example id="_53b56bd2-195e-6ad7-f91e-a5c2cb0a19b2"><p id="_8f02de33-eadd-6473-2ca3-46094be8a750">A tree containing the symbol entries <tt>Alpha</tt> and <tt>Plusminus</tt>, rendered before and after a registry regeneration within the same edition — <strong>Expected outcome.</strong> byte-identical output in all six surfaces; regeneration changes nothing observable. A change in observable output within an edition is a registry defect.</p>
</example>
</clause>

<clause id="_aef9e42e-cd58-4896-4982-e46ecb58e71d" obligation="normative">
<title id="_b1047534-0c36-8499-8208-8930e3e4bc2a">Normalisation (class <tt>model</tt>)</title>
<example id="_488e9aed-983e-3220-fe4e-330b0f9d37a8"><p id="_2b227f8c-f58e-b4c8-313b-a9906dd10823">The same expression constructed with and without an explicit single-child container around its operand — <strong>Expected outcome.</strong> the normalised trees are equal; the writers receive the same canonical form from both constructions and emit the same bytes in every surface.</p>
</example>
</clause>
</clause>


</sections><bibliography><references id="_c440f8b7-af79-c099-476b-e320f2ae1dd6" normative="true" obligation="informative">
<title id="_270c5ee6-077e-f285-ff95-287984a30140">Normative references</title><p id="_49996d2b-65c1-916b-9bbf-42b933aa0025">The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.</p>


<bibitem anchor="mathml4" id="_4e5e21ba-1fc4-a979-59b4-45278d1754c5"><formattedref format="application/x-isodoc+xml">W3C Recommendation. The <tt>Math::Function::Intent</tt> and <tt>Math::Function::Semantics</tt> nodes carry the MathML 4 <tt>intent</tt> and <tt>semantics</tt> elements; the MathML rendering surface targets MathML 4.</formattedref><docidentifier>MathML 4</docidentifier><docnumber>4</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="ecma376" id="_2c302247-6f19-4bae-a466-439ebd0bced0"><formattedref format="application/x-isodoc+xml">Office Open XML File Formats, Part 1. The OMML rendering surface produces DrawingML mathematics (<tt>m:</tt> namespace) as defined there.</formattedref><docidentifier type="ECMA">ECMA-376</docidentifier><docnumber>376</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="utr28" id="_4678c5aa-9efb-16bd-c3ec-06421ea84e61"><formattedref format="application/x-isodoc+xml">Unicode Support for Mathematics (the UnicodeMath linear format). The UnicodeMath surface reads and writes it.</formattedref><docidentifier>Unicode Technical Report #28</docidentifier><docnumber>28</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem id="_0a9a981e-ce30-f0f5-da2d-20f7bd373246" type="standard" schema-version="v1.5.6" anchor="jcgm200">
  <fetched>2026-11-05</fetched>
  
<title language="en" script="Latn">International vocabulary of metrology – Basic and general concepts and associated terms (VIM)</title>

  
<title language="fr" script="Latn">Vocabulaire international de métrologie – Concepts fondamentaux et généraux et termes associés (VIM)</title>

  <uri language="en" script="Latn" type="citation">https://www.bipm.org/documents/20126/2071204/JCGM_200_2012.pdf/f0e1ad45-d337-bbeb-53a6-15fe649d0ff1</uri>
  <docidentifier language="en" script="Latn" type="BIPM" primary="true">JCGM 200:2012</docidentifier>
  <docidentifier language="fr" script="Latn" type="BIPM" primary="true">JCGM 200:2012</docidentifier>
  <docidentifier type="BIPM" primary="true">JCGM 200:2012</docidentifier>
  <docnumber>JCGM 200:2012</docnumber>
  <date type="published">
    <on>2012</on>
  </date>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en" script="Latn">International Bureau of Weights and Measures</name>

      
<name language="fr" script="Latn">Bureau international des poids et mesures</name>

      <abbreviation language="fr" script="Latn">BIPM</abbreviation>
      <uri>www.bipm.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <organization>
      
<name language="en" script="Latn">International Organization for Standardization</name>

      
<name language="fr" script="Latn">Organisation internationale de normalisation</name>

      <abbreviation language="en" script="Latn">ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <role type="publisher"/>
    <organization>
      
<name language="en" script="Latn">International Organization for Standardization</name>

      
<name language="fr" script="Latn">Organisation internationale de normalisation</name>

      <abbreviation language="en" script="Latn">ISO</abbreviation>
      <uri>www.iso.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="publisher"/>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Electrotechnical Commission</name>

      
<name language="fr" script="Latn">Commission électrotechnique internationale</name>

      <abbreviation language="en" script="Latn">IEC</abbreviation>
      <uri>www.iec.ch</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Organization of Legal Metrology</name>

      
<name language="fr" script="Latn">Organisation Internationale de Métrologie Légale</name>

      <abbreviation language="fr" script="Latn">OIML</abbreviation>
      <uri>www.oiml.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Union of Pure and Applied Chemistry</name>

      
<name language="fr" script="Latn">Union internationale de chimie pure et appliquée</name>

      <abbreviation language="en" script="Latn">IUPAC</abbreviation>
      <uri>www.iupac.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Union of Pure and Applied Physics</name>

      
<name language="fr" script="Latn">Union internationale de physique pure et appliquée</name>

      <abbreviation language="en" script="Latn">IUPAP</abbreviation>
      <uri>www.iupap.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Federation of Clinical Chemistry and Laboratory Medicine</name>

      
<name language="fr" script="Latn">Fédération internationale de chimie clinique et de biologie moléculaire</name>

      <abbreviation language="en" script="Latn">IFCC</abbreviation>
      <uri>www.ifcc.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author"/>
    <organization>
      
<name language="en" script="Latn">International Laboratory Accreditation Cooperation</name>

      
<name language="fr" script="Latn">Coopération internationale d’accréditation des laboratoires</name>

      <abbreviation language="en" script="Latn">ILAC</abbreviation>
      <uri>www.ilac.org</uri>
    </organization>
  </contributor>
  <contributor>
    <role type="author">
      <description>committee</description>
    </role>
    <organization>
      
<name language="fr" script="Latn">Bureau international des poids et mesures</name>

      <subdivision>
        
<name language="en" script="Latn">Joint Committee for Guides in Metrology</name>

        
<name language="fr" script="Latn">Comité commun pour les guides en métrologie</name>

        <abbreviation>JCGM</abbreviation>
      </subdivision>
      <abbreviation language="fr" script="Latn">BIPM</abbreviation>
    </organization>
  </contributor>
  <edition>3</edition>
  <language>en</language>
  <language>fr</language>
  <script>Latn</script>
  <place>
    <city>Paris</city>
  </place>
</bibitem>
<bibitem anchor="cc36813" id="_319de3f6-2979-6e24-54f2-0fe7fe6b05a8"><formattedref format="application/x-isodoc+xml">of the UnitsML series</formattedref><docidentifier>CalConnect 36813 (numeric contract)</docidentifier><docnumber>36813 (numeric contract)</docnumber><language>en</language><script>Latn</script></bibitem>
<bibitem anchor="cc36816" id="_e253d860-0d90-5483-05c9-acf67f2ee64a"><formattedref format="application/x-isodoc+xml">of the UnitsML series, together with 36813, for the contract of the <tt>Unitsml</tt> node.</formattedref><docidentifier>CalConnect 36816 (XML usage)</docidentifier><docnumber>36816 (XML usage)</docnumber><language>en</language><script>Latn</script></bibitem>
</references><references id="_10e063ef-7413-da5a-a93d-0c66b9eede6d" normative="false" obligation="informative">
<title id="_50ceb1e1-516f-2673-d73d-4f0c58b4d023">Bibliography</title><bibitem anchor="plurimath-repo" id="_7f4a376c-24dc-0918-6b87-18b3d6d13554">
  <formattedref format="application/x-isodoc+xml">— <link target="https://github.com/plurimath/plurimath"/></formattedref>
  <docidentifier>Plurimath repository</docidentifier>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="pm-spec-overview" id="_c0d95256-189e-5299-40ea-a92ce1ef35af">
  <formattedref format="application/x-isodoc+xml">— the design corpus underlying this series</formattedref>
  <docidentifier>Plurimath specification set overview</docidentifier>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="pendrill2024" id="_a8d510bf-b87c-b7de-2754-10d4035850bf">
  <formattedref format="application/x-isodoc+xml"><em>Quantities and units: order amongst complexity</em>, De Gruyter</formattedref>
  <docidentifier>Pendrill, L. R. (2024)</docidentifier>
  <docnumber>2024)</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="isq-smart" id="_0aebb664-d7a7-fc6d-7c1d-1822a8446fc5">
  <formattedref format="application/x-isodoc+xml">concept systems — <link target="https://metanorma.github.io/isq-smart/methodology/concept-system/"/></formattedref>
  <docidentifier>isq-smart methodology</docidentifier>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="mathml4-b" id="_7a30e017-58d3-e27f-22d8-11e05158c285">
  <formattedref format="application/x-isodoc+xml">— <link target="https://www.w3.org/TR/MathML4/"/></formattedref>
  <docidentifier>MathML 4</docidentifier>
  <docnumber>4</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="ecma376-b" id="_cf745627-8982-d948-a2c3-a9073a262808">
  <formattedref format="application/x-isodoc+xml">Office Open XML File Formats</formattedref>
  <docidentifier type="ECMA">ECMA-376</docidentifier>
  <docnumber>376</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem><bibitem anchor="utr28-b" id="_028d01f5-c1a5-9624-8a6e-f71036556587">
  <formattedref format="application/x-isodoc+xml">Unicode Support for Mathematics</formattedref>
  <docidentifier>Unicode Technical Report #28</docidentifier>
  <docnumber>28</docnumber>
  <language>en</language>
  <script>Latn</script>
</bibitem>







</references></bibliography>
</metanorma>
