Draft Standard

Ribose Standard

•
1002(d) (draft 2026-10-31)
Plurimath specifications — Uncertainty model
Plurimath
Ribose Standard

Draft Standard

Warning for Drafts

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.





Foreword

General

This document is the second document of the Plurimath specifications series. It specifies the uncertainty model: the node that carries a measured value together with its uncertainty through the Plurimath system, the categories of uncertainty it represents, the discipline that governs the numbers it carries, and the representation of each category in every output format.

The model described here is implemented in the plurimath gem of the 0.11 series (the Plurimath::Math::Function::Uncertainty class). Where this document and the implementation disagree, the disagreement is a defect in one of the two.

Documents in the series

Table 1 — Documents in the series
NumberTitleSubject
1001Math modelThe formula tree, the node classes, the registry, the rendering surfaces
1002Uncertainty modelThis document: the uncertainty node, its categories, its number discipline, its per-format encodings
1003Format interfacesThe per-format readers and writers
1004EvaluationNumeric evaluation and uncertainty propagation

Maintainers

This document is maintained by the Plurimath project at https://github.com/plurimath/plurimath.


Introduction

A reported measurement is a pair: the measured value and its uncertainty. The GUM (JCGM 100) fixes the vocabulary — standard uncertainty, expanded uncertainty with its coverage factor, coverage interval — and the reporting discipline; JCGM 101 adds the coverage interval obtained by Monte Carlo. Plurimath carries these reported results as first-class content: an uncertainty is a node of the formula tree (PM 1001), not decoration around a number, and it survives every format transition the system performs.

The design problem is that the six output formats carry uncertainty very differently. AsciiMath has no uncertainty at all and needs an explicit call syntax; LaTeX renders the concise reporting form natively but needs appended statements for a coverage factor; UnicodeMath needs an intent wrapper to keep the semantics machine-readable; MathML 4 has intent attributes; OMML has neither and needs a marker convention. This document defines one model and one encoding per format, so that a result written once renders faithfully everywhere and, where a format can carry the semantics, carries them machine-readably.

Two disciplines run through the whole document. First, the node records reported numbers exactly as written: it never calculates, rounds or converts them — rounding is the author’s act (JCGM 100 7.2.2). Second, every category has one spelling per format: the same result is written the same way by every conforming implementation.

EXAMPLE

The reported result “10.3 g, standard uncertainty 0.2 g” is one Uncertainty node of category standard. It renders as ustd(10.3, 0.2) "unitsml(g)" in AsciiMath, as 10.3(0.2) g in LaTeX and HTML, and as an intent-marked construct in MathML, OMML and UnicodeMath. Reading any of the lossless forms back yields the node again.

0.1  The design forces

Four forces shaped the model, and the document keeps them in view because every clause is a resolution among them:

  • Fidelity. A reported result is a statement by its author. The model carries the statement — the digits, the category, the kind, the notation — and adds nothing.

  • One encoding per format. Two spellings of the same category in the same format would reintroduce the ambiguity the GUM warns against. Every format has exactly one encoding per category, fixed to the byte.

  • Semantics where the format allows. Where a format has a machine-readable channel — intent in MathML and UnicodeMath, the call name in AsciiMath, the marker run in OMML — the encoding uses it, so that consumers read fields, not shapes.

  • No computation. The node is a record. Propagation, combination and interval construction live in document 1004, on demand, with their own discipline.

1  Scope

1.1  General

This document specifies the uncertainty model of the Plurimath system:

  • the uncertainty node and its fields;

  • the three uncertainty categories — standard, expanded, coverage interval — with the fields each requires and forbids;

  • the notation distinction (absolute and concise) and the concise-form rule;

  • the exact-decimal discipline that governs every number the node carries;

  • the representation of each category in each output format, including the marker conventions of MathML, OMML and UnicodeMath;

  • units on an uncertainty, through the UnitsML embedding;

  • conformance of an implementation of this model.

This document does not specify:

  • the syntax with which each input notation writes an uncertainty, beyond what the per-format encodings of clause 9 imply for the formats that read (document 1003 specifies the reading contracts);

  • uncertainty arithmetic: propagation, combination, degrees of freedom, coverage-factor computation — evaluation is document 1004;

  • which numerical tolerance conventions apply to evaluation output (CalConnect 36813 governs those).

1.2  Relationship to the series

Table 2 — Relationship to the series
DocumentRelationship to this one
1001 Math modeldefines the tree this node lives in and the rendering surfaces this document encodes for
1003 Format interfacesdefines the reader contracts for the encodings this document defines
1004 Evaluationconsumes uncertainty nodes numerically; this node never computes
CalConnect 36813, 5, 6numeric contract, XML usage, and the content language of the unit embedding

1.3  Audience

Implementers of Plurimath, implementers of independent readers and writers that must carry uncertainty through these formats, and authors of documents 1003 and 1004.

2  Normative references

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.

JCGM 100:2008, INTERNATIONAL ORGANIZATION FOR STANDARDIZATION, ORGANISATION INTERNATIONALE DE NORMALISATION (ISO), INTERNATIONAL ELECTROTECHNICAL COMMISSION, COMMISSION ÉLECTROTECHNIQUE INTERNATIONALE (IEC), INTERNATIONAL ORGANIZATION OF LEGAL METROLOGY, ORGANISATION INTERNATIONALE DE MÉTROLOGIE LÉGALE (OIML), INTERNATIONAL UNION OF PURE AND APPLIED CHEMISTRY, UNION INTERNATIONALE DE CHIMIE PURE ET APPLIQUÉE (IUPAC), INTERNATIONAL UNION OF PURE AND APPLIED PHYSICS, UNION INTERNATIONALE DE PHYSIQUE PURE ET APPLIQUÉE (IUPAP), INTERNATIONAL FEDERATION OF CLINICAL CHEMISTRY AND LABORATORY MEDICINE, FÉDÉRATION INTERNATIONALE DE CHIMIE CLINIQUE ET DE BIOLOGIE MOLÉCULAIRE (IFCC), INTERNATIONAL LABORATORY ACCREDITATION COOPERATION, COOPÉRATION INTERNATIONALE D’ACCRÉDITATION DES LABORATOIRES (ILAC), and BUREAU INTERNATIONAL DES POIDS ET MESURES (BIPM). Guide to the expression of uncertainty in measurement. Report no. JCGM 100:2008. First edition. Paris: International Bureau of Weights and Measures, Bureau international des poids et mesures; International Organization for Standardization, Organisation internationale de normalisation; International Electrotechnical Commission, Commission électrotechnique internationale, 2008. Available from: https://www.bipm.org/documents/20126/2071204/JCGM_100_2008_E.pdf/cb0ef43f-baa5-11cf-3f85-4dcd86f77bd6.

JCGM 101:2008, INTERNATIONAL ORGANIZATION FOR STANDARDIZATION, ORGANISATION INTERNATIONALE DE NORMALISATION (ISO), INTERNATIONAL ELECTROTECHNICAL COMMISSION, COMMISSION ÉLECTROTECHNIQUE INTERNATIONALE (IEC), INTERNATIONAL ORGANIZATION OF LEGAL METROLOGY, ORGANISATION INTERNATIONALE DE MÉTROLOGIE LÉGALE (OIML), INTERNATIONAL UNION OF PURE AND APPLIED CHEMISTRY, UNION INTERNATIONALE DE CHIMIE PURE ET APPLIQUÉE (IUPAC), INTERNATIONAL UNION OF PURE AND APPLIED PHYSICS, UNION INTERNATIONALE DE PHYSIQUE PURE ET APPLIQUÉE (IUPAP), INTERNATIONAL FEDERATION OF CLINICAL CHEMISTRY AND LABORATORY MEDICINE, FÉDÉRATION INTERNATIONALE DE CHIMIE CLINIQUE ET DE BIOLOGIE MOLÉCULAIRE (IFCC), INTERNATIONAL LABORATORY ACCREDITATION COOPERATION, COOPÉRATION INTERNATIONALE D’ACCRÉDITATION DES LABORATOIRES (ILAC), and BUREAU INTERNATIONAL DES POIDS ET MESURES (BIPM). Supplement 1 to the “Guide to the expression of uncertainty in measurement” — Propagation of distributions using a Monte Carlo method. Report no. JCGM 101:2008. First edition. Paris: International Bureau of Weights and Measures, Bureau international des poids et mesures; International Organization for Standardization, Organisation internationale de normalisation; International Electrotechnical Commission, Commission électrotechnique internationale, 2008. Available from: https://www.bipm.org/documents/20126/2071204/JCGM_101_2008_E.pdf/325dcaad-c15a-407c-1105-8b7f322d651c.

JCGM 200:2012, INTERNATIONAL ORGANIZATION FOR STANDARDIZATION, ORGANISATION INTERNATIONALE DE NORMALISATION (ISO), INTERNATIONAL ELECTROTECHNICAL COMMISSION, COMMISSION ÉLECTROTECHNIQUE INTERNATIONALE (IEC), INTERNATIONAL ORGANIZATION OF LEGAL METROLOGY, ORGANISATION INTERNATIONALE DE MÉTROLOGIE LÉGALE (OIML), INTERNATIONAL UNION OF PURE AND APPLIED CHEMISTRY, UNION INTERNATIONALE DE CHIMIE PURE ET APPLIQUÉE (IUPAC), INTERNATIONAL UNION OF PURE AND APPLIED PHYSICS, UNION INTERNATIONALE DE PHYSIQUE PURE ET APPLIQUÉE (IUPAP), INTERNATIONAL FEDERATION OF CLINICAL CHEMISTRY AND LABORATORY MEDICINE, FÉDÉRATION INTERNATIONALE DE CHIMIE CLINIQUE ET DE BIOLOGIE MOLÉCULAIRE (IFCC), INTERNATIONAL LABORATORY ACCREDITATION COOPERATION, COOPÉRATION INTERNATIONALE D’ACCRÉDITATION DES LABORATOIRES (ILAC), and BUREAU INTERNATIONAL DES POIDS ET MESURES (BIPM). International vocabulary of metrology – Basic and general concepts and associated terms (VIM). Report no. JCGM 200:2012. Third edition. Paris: International Bureau of Weights and Measures, Bureau international des poids et mesures; International Organization for Standardization, Organisation internationale de normalisation; International Organization for Standardization, Organisation internationale de normalisation; International Electrotechnical Commission, Commission électrotechnique internationale, 2012. Available from: https://www.bipm.org/documents/20126/2071204/JCGM_200_2012.pdf/f0e1ad45-d337-bbeb-53a6-15fe649d0ff1.

CalConnect 36813 (numeric contract), of the UnitsML series, for the exact-decimal discipline.

CalConnect 36817 (asciiunits content language), of the UnitsML series, for the unit embedding.

PM 1001 (math model), of this series, for the tree and the rendering surfaces.

3  Terms and definitions

For the purposes of this document, the following terms and definitions apply.

For the purposes of this document, the following terms and definitions apply.

3.1 uncertainty node

the tree node carrying a measured value with its uncertainty; an instance of the model of clause 5

3.2 category

which kind of uncertainty the node represents: standard, expanded, or coverage-interval

3.3 standard uncertainty

the uncertainty of the result expressed as a standard deviation (JCGM 100 7.2.1); category standard

3.4 expanded uncertainty

a quantity defining an interval about the result with a stated coverage probability, obtained from a standard uncertainty by multiplication with a coverage factor (JCGM 100 6.2.1); category expanded

3.5 coverage interval

an interval containing the measured value with a stated coverage probability, given by its endpoints (JCGM 101 5.3); category coverage-interval

3.6 coverage factor

the positive number multiplying a standard uncertainty to yield an expanded uncertainty; conventionally written k

3.7 coverage probability

the probability that the interval covers the true value; a number strictly between 0 and 1

3.8 interval kind

which shortest-probability property a coverage interval has: shortest or probabilistically-symmetric

3.9 notation

how a standard uncertainty is written: absolute (10.3(0.2) shape) or concise (10.3(2) shape)

3.10 concise form

the reporting form in which the uncertainty magnitude is written as a digit string in the last decimal places of the value, with as many decimal places as the value

3.11 estimate

the measured value the uncertainty qualifies; carried verbatim

3.12 magnitude

the uncertainty magnitude; an unsigned plain decimal

3.13 marker

the machine-readable name string that the MathML intent, OMML and UnicodeMath encodings carry: standard-uncertainty, expanded-uncertainty, or coverage-interval, qualified by :concise and by the interval kind where applicable

3.14 exact decimal

a decimal string preserved verbatim from its source; 2.10 and 2.1 are different exact decimals

3.15 InvalidUncertainty

the typed error a conforming implementation raises when an uncertainty node is constructed with an inconsistent field set

3.16 statement

the fixed text appended to the shape-only encodings stating the interval kind, the coverage factor or the coverage probability

3.17 encoding

the one rendering of a node in one format, defined by clause 9 and frozen in the corpus

3.18 round trip

reading a node’s encoding in a lossless format back to a node equal to the original

3.19 refusal

construction-time rejection with an InvalidUncertainty naming the violated rule

3.20 corpus

the frozen set of nodes and encodings used to discharge conformance claims

4  Conventions

4.1  General

Encodings are written as literal output: 10.3(0.2) is the two-character-group rendering with a full-width-free ASCII parenthesis pair; ± is the Unicode character U+00B1. Format names follow PM 1001: MathML, OMML, LaTeX, UnicodeMath, HTML, AsciiMath.

4.2  Examples

Examples appear in blocks titled Example and end with an Expected outcome paragraph stating the observable behaviour of a conforming implementation. Where an example shows per-format output, the outcome lists the rendering of every format the example names.

4.3  Numbers

Number fields carry exact decimals as text. This document never rounds: where a rule compares decimals it compares them exactly, digit by digit, without converting to floating point.

4.4  Model references

The node model is written in LML (clause 5) as in PM 1001; the LML blocks are normative and compile with the LutaML toolchain.

4.5  The formats

Table 3 — Format names and roles
FormatRoleCarries semantics via
AsciiMathlossless linear formthe category call
LaTeXoutput; displayshape and statements
HTMLoutput; displayshape and statements
UnicodeMathlossless linear formthe ⓘ intent wrapper
MathMLlossless markup formthe intent attribute
OMMLlossless office formthe marker run

4.6  Marker rendering in prose

Marker strings are shown in monospace; ± denotes U+00B1; the ⓘ and ⓐ characters are U+24D8 and U+24D0. Encodings in tables are literal: what the table shows is what a conforming writer emits, byte for byte, apart from the number slots.

5  The uncertainty node

5.1  General

The uncertainty node is specified as an LML model. It is one indivisible result: rendering never splits it across lines, and no surface recomputes any of its fields.

5.2  The model

lml "1.0"

models UncertaintyModel {

  class Uncertainty {
    attribute value, ExactDecimal[1]
    attribute category, UncertaintyCategory[1]
    attribute magnitude, ExactDecimal
    attribute coverage_factor, ExactDecimal
    attribute coverage_probability, ExactDecimal
    attribute lower, ExactDecimal
    attribute upper, ExactDecimal
    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
  }

  class ExactDecimal {
    attribute text, String[1]
  }
}
Figure 1

The ExactDecimal of the model corresponds to a Number node of the tree (PM 1001) whose text is a plain decimal; the node never holds computed values.

5.3  Field rules

The category determines which fields are required and which are forbidden. A node is well formed when, for its category:

Table 4 — Field rules by category
Fieldstandardexpandedcoverage-interval
valuerequiredrequiredrequired
magnituderequiredrequiredforbidden
coverage_factorforbiddenrequiredforbidden
coverage_probabilityforbiddenoptionaloptional
lower, upperforbiddenforbiddenrequired
interval_kindforbiddenforbiddenrequired
notationabsolute or conciseunqualifiedunqualified
unitoptionaloptionaloptional

Constructing a node that violates its category’s field set raises InvalidUncertainty with a message naming the field and the category. The validation runs at construction; a tree therefore never contains a malformed uncertainty node.

EXAMPLE

A node of category expanded given a lower endpoint. Expected outcome. construction raises InvalidUncertainty with the message “lower does not apply to a expanded uncertainty”; no tree is produced.

5.4  The value

The value is a signed plain decimal: an optional minus sign, digits, and an optional fractional part. It is carried verbatim: no canonicalisation of trailing zeros, no exponent forms, no thousands separators.

5.5  Indivisibility

The node renders as one unit in every format. A line break inside a rendered uncertainty never occurs; a surface asked to break inside one places the break before or after the whole node.

5.6  Markers

The marker is the machine-readable name of the node, carried by the intent mechanisms of MathML, OMML and UnicodeMath:

Table 5 — Marker names
CategoryBase markerQualifiersFull shape
standardstandard-uncertainty:concise when notation is concisestandard-uncertainty(v,m) or standard-uncertainty:concise(v,m)
expandedexpanded-uncertaintynoneexpanded-uncertainty(v,m,k,p)
coverage-intervalcoverage-interval:shortest or :probabilistically-symmetriccoverage-interval:l,u,p qualified

Marker arguments are the node’s numbers in the fixed order of clause 9’s encodings, comma-separated without spaces.

5.7  The fields, one by one

5.7.1  value

The measured value: a signed plain decimal held verbatim. It is the only field every category requires. The minus sign belongs to the value; magnitudes and endpoints are unsigned.

5.7.2  magnitude

The uncertainty magnitude: an unsigned plain decimal. For the standard category it is the standard uncertainty; for the expanded category it is the expanded uncertainty itself. It never appears on a coverage-interval node.

5.7.3  coverage_factor

The factor k that turned a standard uncertainty into the expanded one: an unsigned plain decimal greater than zero. 0 and negative values are refused, as is any form that is not a plain decimal. The factor is reported, never recomputed: a node does not know which distribution or degrees of freedom produced its k, and this document does not pretend it does.

5.7.4  coverage_probability

The probability p attached to an expanded uncertainty or a coverage interval: an unsigned plain decimal strictly between 0 and 1, checked exactly (clause 8). Optional on both categories.

5.7.5  lower and upper

The endpoints of a coverage interval: unsigned plain decimals. This document does not require lower < upper — the reported endpoints are carried verbatim, and an author who reports inverted endpoints has made their own statement; evaluation (document 1004) may flag it, construction does not.

5.7.6  interval_kind

Which property the interval has: shortest or probabilistically-symmetric. Required on a coverage-interval node and forbidden elsewhere, because an interval without its kind is not interpretable — for a skewed distribution the two intervals differ, and the difference is information.

5.7.7  notation

How a standard uncertainty reports: absolute or concise (clause 7). Present only on the standard category; the concise rule makes it meaningless anywhere else.

5.7.8  unit

The measurement unit, held as a UnitsML embedding (clause 10). Optional on every category.

5.8  Equality

Two nodes are equal when their categories and all ten fields are equal, field by field. Equality is exact: 0.2 and 0.20 are different magnitudes and therefore different nodes. Equality does not consult encodings: two nodes with equal fields have equal encodings by the determinism of clause 9.

5.9  Cloning

Copying a node copies the tree structures it holds (its value, numbers and unit) and shares nothing mutable. A copy is created through the constructor and revalidated; a validation passing at construction time cannot be bypassed by copying.

5.10  The validation rules as a model

The field rules of clause 5, written as the model they enforce:

models UncertaintyValidation {

  class StandardRule {
    attribute requires, String { cardinality 1..n }
    attribute forbids, String { cardinality 1..n }
    attribute allows_notation, Boolean[1]
  }

  class ExpandedRule {
    attribute requires, String { cardinality 1..n }
    attribute forbids, String { cardinality 1..n }
  }

  class CoverageIntervalRule {
    attribute requires, String { cardinality 1..n }
    attribute forbids, String { cardinality 1..n }
    attribute requires_kind, Boolean[1]
  }
}
Figure 2

with the populations: StandardRule requires value, magnitude and forbids coverage_factor, coverage_probability, lower, upper, interval_kind; ExpandedRule requires value, magnitude, coverage_factor and forbids lower, upper, interval_kind; CoverageIntervalRule requires value, lower, upper, interval_kind and forbids magnitude, coverage_factor. The notation check is the standard category’s alone; every refusal raises InvalidUncertainty at construction.

6  The three categories

6.1  Standard uncertainty

The standard uncertainty (JCGM 100 7.2.1) reports the result v with its standard uncertainty m. It carries value and magnitude, and its notation distinguishes the absolute form from the concise form (clause 7). It carries no coverage factor, no coverage probability and no endpoints.

EXAMPLE

“10.3 g, standard uncertainty 0.2 g”. Expected outcome. a node with value 10.3, magnitude 0.2, notation absolute, unit g; rendering per clause 9 gives ustd(10.3, 0.2) "unitsml(g)" in AsciiMath and 10.3(0.2) g in LaTeX and HTML.

6.2  Expanded uncertainty

The expanded uncertainty (JCGM 100 6.2.1, 7.2.3) reports the result v with uncertainty magnitude m and coverage factor k, optionally with the coverage probability p that was used to choose k. The magnitude here is the expanded uncertainty itself, not a standard uncertainty.

The coverage factor is a positive unsigned decimal: 0, 0.5 and negative factors do not describe coverage factors and are refused. The coverage probability, when present, lies strictly between 0 and 1; both bounds are exact decimal comparisons, not float comparisons.

EXAMPLE

“U = 0.5 g at k = 2, p = 95%”. Expected outcome. a node with value 10.3, magnitude 0.5, coverage factor 2, coverage probability 0.95, unit g; rendering per clause 9 gives uexp(10.3, 0.5, 2, 0.95) "unitsml(g)" in AsciiMath and (10.3 ± 0.5) g (k = 2, p = 0.95)-shaped output in LaTeX and HTML with the statements appended.

6.3  Coverage interval

The coverage interval (JCGM 101 5.3, 5.5) reports the result v with the interval [l, u] and its kind: shortest or probabilistically-symmetric, optionally with the coverage probability p. The magnitude and coverage factor fields do not apply.

The interval kind is carried because the two kinds differ semantically — the shortest interval of a distribution need not be its probabilistically symmetric one — and the distinction survives every encoding that can carry it. In AsciiMath the symmetric kind is spelled symmetric (the - of probabilistically-symmetric would read as minus); the model carries the one kind and each format spells it its own way.

EXAMPLE

“10.3 g, 95% coverage interval [9.9, 10.7], shortest”. Expected outcome. a node with value 10.3, lower 9.9, upper 10.7, interval kind shortest, coverage probability 0.95, unit g; rendering per clause 9 gives ucov(10.3, 9.9, 10.7, 0.95, shortest) in AsciiMath and 10.3, [9.9, 10.7] with the probability statement in LaTeX and HTML.

6.4  Category identity

The category is part of the node’s identity: two nodes with the same numbers and different categories are different nodes. A round trip that loses the category is a lossy round trip, and the encodings of clause 9 are designed so that no lossless format loses it.

6.5  Choosing a category

The category is the author’s statement about their result, and the model carries it rather than inferring it:

Table 6 — Category guidance
The author’s reportCategoryFields the node carriesSurface shape
“u = 0.2 g”standardvalue, magnitudev(m) reporting form
“U = 0.5 g, k = 2”expandedvalue, magnitude, factor(v ± m) with statements
“[9.9, 10.7] at 95%”coverage-intervalvalue, endpoints, kindv, [l, u] with statements

Converting between categories is not a rendering act: turning a standard uncertainty into an expanded one requires multiplying by a factor — a computation belonging to document 1004, performed on request, producing a new node. An encoding never silently upgrades one category’s shape to another’s.

6.6  The category in the encodings

Every encoding that can carry semantics carries the category name explicitly: the AsciiMath call names it (ustd, uexp, ucov), and the markers begin with it (standard-uncertainty, expanded-uncertainty, coverage-interval). The shape-only encodings (LaTeX, HTML) distinguish the categories by shape alone — the reporting form, the ± form, the interval form — which is unambiguous precisely because the model defines exactly three shapes and refuses everything else.

EXAMPLE

The three categories with the same value 10.3 and unit g, side by side in LaTeX. Expected outcome. 10.3(0.2) g, (10.3 \pm 0.5) g~(k = 2), and 10.3,~[9.9, 10.7] g~(shortest, p = 0.95) — three distinguishable shapes, no shared ambiguity.

6.7  The JCGM grounding

Table 7 — Category grounding in the JCGM family
CategoryGroundingWhat the node carries beyond the JCGM form
standardJCGM 100 7.2.1–7.2.2 reporting formsthe notation distinction and the exact-decimal discipline
expandedJCGM 100 6.2.1, 7.2.3the reported factor and probability, carried verbatim
coverage-intervalJCGM 101 5.3, 5.5the interval kind, made explicit per endpoint pair

The model adds no metrology of its own. Everything metrological — which k to choose, which interval is shortest, whether the distribution is symmetric enough for the symmetric interval — is the author’s or the evaluator’s (document 1004); the node records what was reported.

6.8  Interval kinds, precisely

The shortest coverage interval of a probability distribution and its probabilistically symmetric interval coincide only for symmetric distributions. JCGM 101 distinguishes them because Monte Carlo results need not be symmetric; a reported interval says which one it is, and downstream consumers treat them differently when combining or comparing results. The model carries the distinction on every interval node; the encodings carry it in every channel that carries anything.

7  Notation and the concise form

7.1  Absolute and concise

A standard uncertainty is written in one of two notations. The absolute notation carries the full magnitude: 10.3(0.2) means v = 10.3 with u = 0.2. The concise notation carries the magnitude as a digit string aligned to the value’s last decimal places: 10.3(2) means the same result with u = 0.2.

7.2  The concise rule

The concise form is well defined only when the magnitude has exactly as many decimal places as the value. The magnitude’s digits after its decimal point, with leading zeros of the fraction removed, form the concise digit string. A magnitude whose decimal places do not match the value’s cannot be written concisely after it, and constructing such a node is refused:

EXAMPLE 1

value 10.3, magnitude 0.25, concise notation. Expected outcome. construction raises InvalidUncertainty: “magnitude 0.25 cannot be written concisely after 10.3: it needs as many decimal places as the value”. The node is not created; nothing renders.

EXAMPLE 2

value 10.3, magnitude 0.2, concise notation. Expected outcome. the node is accepted. Its concise digit string is 2. The AsciiMath encoding renders the concise reporting form 10.3(2); the other surfaces render the absolute shape with the marker qualified :concise, because only the reporting form is concise, never the carried magnitude.

7.3  What concise means for the model

The notation is a property of the standard category alone. The model always carries the full magnitude; the concise notation says that the AsciiMath and any other reporting-shaped encoding of this node uses the concise reporting form. Reading a concise form back yields a node with notation concise and the reconstructed full magnitude: 10.3(2) reads back as value 10.3, magnitude 0.2.

7.4  The expanded and interval categories carry no notation

A notation argument accompanying an expanded uncertainty or a coverage interval is refused: the notion belongs to the standard-uncertainty reporting form. This keeps the concise digit string unambiguous: it appears only where its decimal-places rule is defined.

7.5  Concise across value shapes

The concise rule binds the magnitude’s decimal places to the value’s, so its behaviour at the edges is pinned by examples:

Table 8
ValueMagnitudeConcise?Reporting form
10.30.2yes10.3(2)
102yes10(2)
10.00.0yes10.0(0)
10.30.25norefused at construction
10.32norefused at construction
-42.10.5yes-42.1(5)

A zero magnitude is well formed (10.0(0)) — a reported uncertainty of zero is the author’s statement. The negative value carries its sign on the value; the magnitude stays unsigned.

7.6  Notation is not a suggestion to writers

A writer that receives a concise node and renders the absolute reporting form has not honoured the model: the notation is carried precisely so the reporting shape follows the author’s choice. The encodings of clause 9 emit the concise reporting form exactly where this document says (AsciiMath) and the qualified marker where the format carries semantics.

7.7  Reading the concise form

Reading 10.3(2) reconstructs the full magnitude by aligning the digit string to the value’s decimal places: one digit at one decimal place gives 0.2. The reconstruction is defined only because the concise rule guaranteed the place counts match; a malformed concise form is a reading error, not a reconstruction opportunity (document 1003 owns the error behaviour).

8  Exact-decimal discipline

8.1  The grammar

Every number the node carries is a plain decimal:

Table 9 — Number grammar
FieldGrammarExamples
value-? digits ( . digits )?10.3, -42, 0.0015
magnitude, coverage_factor, coverage_probability, lower, upperdigits ( . digits )?0.2, 2, 0.95

No exponent forms, no signs on the unsigned fields, no separators. A value carried as anything else — a computed float, a Number with a base or a size qualifier, an empty string — is refused at construction.

8.2  Verbatim preservation

The node stores the digits as written. 2.10 and 2.1 are different exact decimals: the trailing zero is the author’s statement of precision, and the model does not speak over it. Every encoding emits the digits verbatim; every exact comparison in this model — the concise rule, the probability bounds — compares the decimal strings digit-wise without converting to floating point.

EXAMPLE

A node with value 10.30, magnitude 0.20. Expected outcome. every encoding emits 10.30 and 0.20 with the trailing zeros intact; no surface normalises them away.

8.3  Rounding is the author’s act

The node never calculates, rounds or converts its numbers (JCGM 100 7.2.2). Where evaluation (document 1004) produces numbers, they are produced as exact decimals by the evaluation rules of CalConnect 36813 and attached to new nodes; an existing node’s fields are never rewritten in place.

8.4  Comparisons without floating point

The two comparisons the model performs — the concise decimal-places rule and the coverage-probability bounds — are defined on the digit strings:

  • the probability check requires the first nonzero digit of the fraction to exist (strictly greater than zero) and the string to compare strictly less than "1" digit-wise;

  • the concise rule compares decimal-place counts, which is a property of the strings alone.

Both refuse inputs whose comparison would require rounding.

8.5  Worked comparisons

The comparisons are on strings, and the examples below pin the edge behaviour.

EXAMPLE 1

Probability 0.999 against the bound 1. Expected outcome. accepted: digit-wise, 0.999 is strictly less than 1. The check does not convert to float; a float conversion of 0.999999999999999999 would equal 1.0 and wrongly refuse.

EXAMPLE 2

Probability 1.0. Expected outcome. refused: the string equals the upper bound digit-wise; a probability of exactly one is not a coverage probability.

EXAMPLE 3

Probability 0.0. Expected outcome. refused: the string has no nonzero digit, so it is not strictly greater than zero.

EXAMPLE 4

Probability 0.90. Expected outcome. accepted: trailing zeros do not affect the digit-wise comparison; the encoding emits 0.90 verbatim, never 0.9.

EXAMPLE 5

Magnitude 0.2 against value 10.3 for conciseness: decimal places 1 and 1. Expected outcome. accepted; the concise digit string is 2.

EXAMPLE 6

Magnitude 0.02 against value 10.3 for conciseness: decimal places 2 and 1. Expected outcome. refused: the magnitudes’ decimal places do not match the value’s, and 10.3(02) is not a defined form.

8.6  Where the discipline comes from

JCGM 100 7.2.2 fixes the reporting forms and assigns rounding to the reporter. The exact-decimal discipline is that assignment made executable: the model cannot round because it does not compute, and it cannot silently normalise because its numbers are text. The same discipline governs the whole Plurimath stack through CalConnect 36813; this document applies it to the uncertainty fields.

9  Per-format encodings

9.1  The encoding matrix

Each format has one encoding per category. The matrix states which formats carry the semantics machine-readably (via the marker) and which carry the reported shape only.

Table 10 — Encoding matrix
Formatstandardexpandedcoverage-intervalSemantics carrier
AsciiMathustd(v, m)uexp(v, m, k, p)ucov(v, l, u, p, kind)the call itself
LaTeXv(m)(v \pm m) + statementsv, [l, u] + statementsshape only
HTMLv(m)(v ± m) + statementsv, [l, u] + statementsshape only
UnicodeMathintent wrapperintent wrapperintent wrapperⓘ("marker"...)
MathMLintent on the enclosing mrowsamesameintent attribute
OMMLmarker run + shapesamesamemarker convention

9.2  AsciiMath

The category call names are ustd, uexp, ucov. Arguments are the node’s numbers in category order, comma-space separated. The interval kinds are spelled shortest and symmetric in AsciiMath (the model’s probabilistically-symmetric, respelled because AsciiMath reads - as minus). The concise notation renders the reporting form v(digits) instead of a call. The unit travels in the quoted UnitsML channel "unitsml(...)" when the unit is expressible there (clause 10).

EXAMPLE

The four standard-uncertainty shapes. Expected outcome. value 10.3 magnitude 0.2 absolute: ustd(10.3, 0.2); the same with notation concise: 10.3(2); expanded with k = 2, p = 0.95: uexp(10.3, 0.5, 2, 0.95); interval shortest with p = 0.95: ucov(10.3, 9.9, 10.7, 0.95, shortest); the symmetric kind spells symmetric in the same position.

9.3  LaTeX

The standard category renders the reporting form v(m) — the full magnitude in the parentheses, whatever the notation. The expanded category renders (v \pm m) followed by the statements ~(k = K) and (p = P) for the fields present. The interval category renders v,~[l, u] followed by the kind and probability statements. Statements are appended after the unit.

EXAMPLE

The expanded node of clause 6 in LaTeX. Expected outcome. (10.3 \pm 0.5) g~(k = 2, p = 0.95) — shape, unit, then the statements, in that order.

9.4  HTML

The HTML encoding is the LaTeX encoding with the Unicode ± (U+00B1), plain spaces, and no TeX-specific spacing. Interval and statement shapes are identical.

9.5  UnicodeMath

The whole node is wrapped in an intent: ⓘ("marker" visible), where marker is the full marker string of clause 5 and visible is the display shape — the reporting form for standard, (v±m) plus statement text for expanded, v, [l, u] plus statement text for the interval. A unit travels in ⓐ(unit ...) inside the wrapper.

EXAMPLE

The standard node in UnicodeMath. Expected outcome. ⓘ("standard-uncertainty(10.3,0.2)"10.3(0.2)) — marker with arguments, then the visible shape.

9.6  MathML

The node renders as an mrow carrying the intent attribute with the marker string. Its content: mn for the value, a fenced group for the magnitude ((m)), (v ± m) for expanded, mn(v), mfenced[l, u] for the interval, followed by the unit’s MathML form when present.

9.7  OMML

The OMML surface carries the marker as a convention: a run holding the marker string precedes the shape runs (value run, fence with magnitude run, and so on), and the unit, when present, is boxed. OMML has no intent mechanism; the marker run is the machine-readable channel, and consumers that do not understand it ignore one run of text.

9.8  Statements

The appended statements of LaTeX, HTML and UnicodeMath state the fields the shape cannot show: the coverage factor as k = K, the coverage probability as p = P, the interval kind as its spelled name. Statements appear in one fixed order — kind, factor, probability — after the unit.

9.9  Emission algorithms

The encodings are stated as algorithms so that two implementations cannot diverge over punctuation or order.

9.9.1  AsciiMath emission

  1. Begin the call: the category name (ustd, uexp, ucov) and (.

  2. Append the arguments in the order of Annex A, comma-space separated, omitting absent optional arguments.

  3. Close the call with ).

  4. For a standard node with concise notation, emit instead the reporting form: the value, (, the concise digit string, ).

  5. If the unit is expressible in UnitsML, append a space and "unitsml(<expression>)"; otherwise append a space and the unit’s own AsciiMath rendering.

9.9.2  LaTeX emission

  1. Standard: the value, (, the full magnitude, ).

  2. Expanded: (, the value, ` \pm `, the magnitude, ).

  3. Interval: the value, ,~[, the lower, `, `, the upper, ].

  4. Append the unit’s LaTeX rendering, preceded by a space, when present.

  5. Append the statements (Annex A order), each preceded by ~ in LaTeX.

9.9.3  HTML emission

Identical to LaTeX with three substitutions: ± (U+00B1) for \pm, plain spaces for the tildes, and no TeX spacing inside the interval.

9.9.4  UnicodeMath emission

  1. Begin ⓘ(" and the marker string (clause 5), then ".

  2. Append the visible shape: the reporting form for standard (absolute shape regardless of notation), (v±m) for expanded with the statement texts appended as plain text, v, [l, u] for the interval likewise.

  3. If the unit is present, append `ⓐ(unit ` and the unit’s UnicodeMath rendering and ).

  4. Close with ).

9.9.5  MathML emission

  1. Open an mrow with the intent attribute set to the marker string.

  2. Standard: mn with the value, then an mfenced open and close parenthesis containing mn with the full magnitude.

  3. Expanded: mfenced containing mn(value), mo(±), mn(magnitude).

  4. Interval: mn(value), mo(,), mfenced with open bracket and close bracket containing mn(lower), mo(,), mn(upper).

  5. Append the unit’s MathML form when present. Close the mrow.

9.9.6  OMML emission

  1. Emit a run containing the marker string.

  2. Emit the shape runs: the value, then a fenced group for the magnitude (standard) or the parenthesised ± group (expanded) or the bracketed interval (interval).

  3. If the unit is present, emit it boxed after the shape.

9.10  Reading contracts

The reading contracts of the lossless encodings belong to document 1003. This document constrains them with one rule each:

  • AsciiMath: the call forms and the concise reporting form read back to the node with the fields the arguments carry;

  • UnicodeMath: the ⓘ wrapper is authoritative for the fields; the visible shape is regenerated;

  • MathML: the intent attribute is authoritative;

  • OMML: the marker run is authoritative;

  • LaTeX and HTML: display surfaces, not read.

A reader that finds a marker and a visible shape disagreeing follows the marker.

9.11  Encodings by category, format by format

9.11.1  AsciiMath

Table 11 — Encoding table, AsciiMath
NodeEncoding
standard, absolute, no unitustd(10.3, 0.2)
standard, concise10.3(2)
standard, absolute, unit gustd(10.3, 0.2) "unitsml(g)"
expanded with k and puexp(10.3, 0.5, 2, 0.95)
expanded without puexp(10.3, 0.5, 2)
interval, shortest, with pucov(10.3, 9.9, 10.7, 0.95, shortest)
interval, symmetric, without pucov(10.3, 9.9, 10.7, symmetric)

9.11.2  LaTeX

Table 12 — Encoding table, LaTeX
NodeEncoding
standard, absolute10.3(0.2)
standard, concise10.3(0.2) — the carried magnitude, never the digit string
expanded with k and p(10.3 \pm 0.5)~(k = 2,~(p = 0.95))
expanded without p(10.3 \pm 0.5)~(k = 2)
interval, shortest, with p10.3,~(shortest,(p = 0.95))

9.11.3  UnicodeMath

The wrapper makes the shape visible and the fields authoritative:

Table 13 — Encoding table, UnicodeMath
NodeEncoding
standard, absoluteⓘ("standard-uncertainty(10.3,0.2)"10.3(0.2))
standard, conciseⓘ("standard-uncertainty:concise(10.3,0.2)"10.3(0.2))
expanded with k and pⓘ("expanded-uncertainty(10.3,0.5,2,0.95)"(10.3±0.5)(k = 2)(p = 0.95))
interval, shortest, with pⓘ("coverage-interval:shortest(10.3,9.9,10.7,0.95)"10.3, [9.9, 10.7](shortest)(p = 0.95))

9.11.4  MathML and OMML

Both carry the marker of clause 5 as the authoritative channel and the same visible shapes as HTML, with the construction rules of the emission algorithms. The marker argument list is identical in both.

9.12  Statement grammar

The statement texts are a small fixed grammar, so that a reader can recover k, p and the kind from the shape-only encodings:

statement = kind-statement | factor-statement | probability-statement
kind-statement        = "(" kind ")"
factor-statement      = "(" "k" "=" unsigned-decimal ")"
probability-statement = "(" "p" "=" unsigned-decimal ")"
kind = "shortest" | "probabilistically-symmetric"
Figure 3

Statements appear in the order kind, factor, probability, separated by a space in HTML and by ~ in LaTeX. The readers of document 1003 use this grammar to recover the fields; a statement outside the grammar is not part of a node’s encoding.

10  Units on an uncertainty

10.1  The unit field

A node may carry one unit, held as a UnitsML embedding (PM 1001, Unitsml node). The unit qualifies the value, the magnitude and the endpoints alike: the node reports “10.3 g with 0.2 g”, and the unit appears once.

10.2  Expressibility

When the unit is expressible in the asciiunits content language (CalConnect 36817) — a single symbol such as g, kg, m/s2 — the AsciiMath encoding embeds it in the quoted UnitsML channel: ustd(10.3, 0.2) "unitsml(g)". The embedding is attempted at encoding time; the attempt uses the UnitsML reader, and a unit the reader refuses falls back to visible placement.

EXAMPLE

A node with unit g in AsciiMath. Expected outcome. ustd(10.3, 0.2) "unitsml(g)" — the channel carries the unit machine-readably and the unit does not appear again in the call or after it.

10.3  Visible placement

When the unit is not expressible in UnitsML — arbitrary text the reader rejects — the AsciiMath encoding places the unit visibly after the call, which is the only place the AsciiMath reader accepts it: ustd(10.3, 0.2) <unit>. The unit then travels as ordinary trailing content, and the format’s own encoding carries it (LaTeX after the shape, UnicodeMath inside ⓐ(...), and so on).

10.4  Constraints

The unit is either a Unitsml node or a non-empty formula holding no uncertainty: a unit containing an uncertainty is refused (InvalidUncertainty, “unit must not contain an uncertainty”). A unit is not a place for content; it names the measurement unit and nothing else.

10.5  Losslessness

The unit survives every lossless round trip. The quoted channel and the visible placements of clause 9 read back to the unit field; a format transition that silently drops the unit is a defect of the encoding, not a permitted loss.

10.6  Worked unit cases

Table 14 — Unit expressibility
UnitExpressible in UnitsMLAsciiMath encoding
gyesustd(10.3, 0.2) "unitsml(g)"
m/s2yesustd(10.3, 0.2) "unitsml(m/s2)"
mmyesustd(500.0, 0.5) "unitsml(mm)"
arbitrary textnoustd(10.3, 0.2) <unit rendered visibly>

The expressibility question is answered by the UnitsML reader at encoding time, not by a table in this document: a unit the reader accepts travels in the channel, and a unit it refuses travels visibly. The same node encodes differently across the two cases only in where the unit sits; the unit field itself is identical.

10.7  Units on intervals

The interval endpoints share the value’s unit; the unit appears once. [9.9, 10.7] g is one unit for the interval, not one per endpoint — reporting two units would double-count the measurement unit and is not a defined encoding.

11  Conformance

11.1  General

Conformance to this document is the implementation of the uncertainty node per clause 5 with the encodings of clause 9. Claims are per class; every claim is discharged by replaying frozen vectors.

11.2  Conformance classes

Table 15 — Conformance classes
ClassLicenses the implementation to claimReplay requirements
uncertainty-modelconstructs, validates and inspects uncertainty nodes per clauses 5 to 8the construction and refusal vectors of Annex C
encode-asciimathencodes uncertainty nodes per clause 9 in AsciiMaththe AsciiMath column of the uncertainty corpus, byte-identically
encode-latexencodes per clause 9 in LaTeXthe LaTeX column, byte-identically
encode-htmlencodes per clause 9 in HTMLthe HTML column, byte-identically
encode-unicodemathencodes per clause 9 in UnicodeMaththe UnicodeMath column, byte-identically
encode-mathmlencodes per clause 9 in MathML with intent markersthe MathML column, byte-identically
encode-ommlencodes per clause 9 in OMML with the marker conventionthe OMML column, byte-identically
full-uncertaintyall of the aboveall columns

An encode-<format> claim carries uncertainty-model with it.

11.3  The uncertainty corpus

The corpus is a frozen set of nodes with, per format, their expected encodings. Entries state their provenance (the node’s fields, the model version that froze the encodings) and replay without modification. Encodings change only at an edition of this document.

11.4  Round-trip classes

A claim of round-trip for a format means: reading the format’s encoding of a corpus node back yields a node equal to it. Round-trip claims exist for the formats whose readers are specified in document 1003; this document defines the property, that document its mechanics.

11.5  Corpus governance

The uncertainty corpus is owned like every corpus in the series: entries are frozen with provenance, replay byte-identically, and change only at an edition. A change to any encoding of this document — a punctuation move, a statement rewording, a marker change — produces a model-version change and a new corpus generation, never a patch over frozen bytes.

The corpus covers, at minimum: every category in every format; the concise and absolute notations; the two interval kinds; optional fields present and absent; the unit expressible and not expressible; and every refusal vector of Annex C.

11.6  Drift and disagreement

An implementation whose encodings differ from the corpus does not conform at the corpus’s model version. An implementation whose tree differs from the clause 5 model does not conform, whatever its encodings do. Disagreements between this document and the implementation are resolved by fixing one of the two and recording which moved.

12  Annex A: encoding details

12.1  General

This annex fixes the remaining details the clause 9 tables summarise: argument orders, statement texts, spelling tables and the marker grammar. The encodings here are normative to the byte for the fixed parts (call names, punctuation, marker strings); the numbers are verbatim by clause 8.

12.2  Argument orders

Table 16 — Call argument orders
CallArguments in orderOptional
ustd(v, m)value, magnitudenone
uexp(v, m, k, p)value, magnitude, coverage factor, coverage probabilityp
ucov(v, l, u, p, kind)value, lower, upper, coverage probability, kindp

Omitted optional arguments do not leave empty positions: uexp(10.3, 0.5, 2) is the encoding of an expanded node without probability, and ucov(10.3, 9.9, 10.7, shortest) of an interval without one.

12.3  Statement texts

Table 17 — Statements appended after the unit
FieldLaTeX textHTML text
interval kind~(shortest)(shortest)
coverage factor~(k = 2)(k = 2)
coverage probability~(p = 0.95)(p = 0.95)

Statements appear in the order kind, factor, probability. The kind statement appears only for the interval category, the factor statement only for the expanded category, the probability statement for either when the field is present.

12.4  Interval kind spelling

Table 18 — Interval kind by surface
Model valueAsciiMathMarkers and statements
shortestshortestshortest
probabilistically-symmetricsymmetricprobabilistically-symmetric

The AsciiMath respelling exists because - reads as minus there. Every other surface uses the full model name.

12.5  Concise digit string

The concise digit string is computed from the magnitude’s text: remove the decimal point, remove the leading zeros of the result. An empty result renders as 0.

EXAMPLE

Magnitudes and their concise digit strings at value 10.3. Expected outcome. 0.2 gives 2; 0.20 gives 20 — and the node is refused, because 0.20 has two decimal places against the value’s one; 2 gives 2 at value 10 (decimal places zero on both sides); 0.0 gives 0 at value 10.0.

12.6  Marker grammar

marker          = category-marker [ ":concise" ] [ ":" kind ]
category-marker = "standard-uncertainty" | "expanded-uncertainty" | "coverage-interval"
kind            = "shortest" | "probabilistically-symmetric"
Figure 4

The :concise qualifier appears only on the standard marker, the :kind qualifier only on the coverage-interval marker. Where the enclosing format shows marker arguments, they are the numbers in the call argument order of this annex, comma-separated without spaces.

EXAMPLE

Markers and their argument shapes. Expected outcome. standard-uncertainty(10.3,0.2); standard-uncertainty:concise(10.3,0.2); expanded-uncertainty(10.3,0.5,2,0.95); coverage-interval:shortest(10.3,9.9,10.7,0.95); coverage-interval:probabilistically-symmetric(10.3,9.9,10.7).

13  Annex B: rejected designs

This annex records the designs this model rejected and why, so that the decisions do not relitigate themselves.

13.1  Uncertainty as arithmetic affinity

Carrying uncertainty as an arithmetic property that propagates through every operator automatically (the design of Python’s uncertainties package, where ufloat(10.3, 0.2) * 2 yields a value with a propagated uncertainty) was rejected. Plurimath’s tree is a formula tree, not an evaluation graph: propagation happens in evaluation (document 1004), on demand, with the GUM rules applied where the author asked for them. Attaching propagation to the node would force every rendering to be an evaluation and would give reported results and computed results different semantics in the same tree.

13.2  Uncertainty as a first-class linear token

Wolfram’s Around[10.3, 0.2] renders 10.3 ± 0.2 and reads back symmetrically. The ± form was rejected as the model’s carrier because it is ambiguous between the standard-uncertainty reading (± one standard uncertainty, the GUM convention) and the expanded reading (± U with a coverage factor) — the ambiguity the GUM itself warns about when the form is used without qualification. The ± shape remains a rendering of the expanded category, never the carrier.

13.3  Concise as an input notation for reporting-shaped readers

Accepting 10.3(2) as an input shorthand everywhere was rejected: the concise rule needs the value’s decimal-place count, and a reader that accepts it must silently reconstruct the magnitude — a transformation that belongs to a defined reading contract, not to every surface. The concise form is a reporting form the AsciiMath encoding emits and the AsciiMath reader of document 1003 reads under its stated rule.

13.4  +- as an infix input

The AsciiMath-style +- infix was rejected outright: 3+-1 is genuinely ambiguous, and the node model has no operation it could denote. The ± character is output-only, inside the encodings of clause 9.

13.5  Per-format uncertainty markup families

Encoding uncertainties as format-native layout per format (say, OMML phantom boxes that simulate reporting forms without any marker) was rejected: the semantics would live nowhere machine-readably. Every format’s encoding carries the marker where the format has any machine-readable channel at all (intent in MathML and UnicodeMath, the marker run in OMML, the call in AsciiMath).

13.6  Why three categories and no more

The GUM family gives exactly three reported shapes: the standard uncertainty (one number), the expanded uncertainty (magnitude with a factor and optionally a probability), and the coverage interval (endpoints with a kind and optionally a probability). A fourth category — “coverage factor with asymmetric magnitudes”, say — would need a shape no encoding defines and a semantics no JCGM document states; when such a category appears in practice, this document gains it at an edition, with its fields, its encodings and its corpus, rather than by stretching an existing one.

13.7  Why the model carries the reporting notation

A stricter design would carry only absolute magnitudes and let writers choose the reporting form. The concise notation is carried because the reporting form is part of how the author reported the result: 10.3(2) and 10.3(0.2) are the same measurement but not the same document. The model carries the distinction; the encodings honour it.

13.8  Why statements and not subscripts or footnotes

The k and p statements of the LaTeX and HTML encodings could be typeset as subscripts or marginal notes. Statements were chosen because they round-trip: a subscript would need parsing conventions in every reader to recover k and p, while the statement text is recoverable by the readers of document 1003 from the fixed statement grammar of this document’s encodings.

13.9  Why markers rather than format profiles

A cleaner-looking alternative to the OMML marker run and the UnicodeMath wrapper is a “profile” convention: publish per-format stylesheets that recognise uncertainty shapes by their layout. Rejected: layout recognition is ambiguous exactly where the shapes overlap ((v ± m) is a legitimate ordinary expression), and a profile makes every consumer trust typesetting for semantics. The marker is explicit, travels inside the document, and needs no stylesheet.

13.10  Why the category names the call

ustd, uexp and ucov name the category in the AsciiMath encoding itself. A single call with a category argument (unc(std, 10.3, 0.2)) was rejected: the three forms differ in arity and argument meaning, so the argument list is only interpretable once the category is known — putting the category in the name keeps every call self-describing and keeps the concise reporting form a natural special case rather than a branch.

14  Annex C: test-suite examples

Vectors illustrative of the conformance classes of clause 11. Each states the node, the property under test, and the expected outcome. The uncertainty corpus carries the frozen versions.

14.1  Construction and refusal (class uncertainty-model)

EXAMPLE 1

ustd node: value 10.3, magnitude 0.2, notation absolute. Expected outcome. constructed; == holds for an identically constructed node and fails when any field differs, including the notation.

EXAMPLE 2

A standard node also given a coverage factor. Expected outcome. InvalidUncertainty: “coverage_factor does not apply to a standard uncertainty”.

EXAMPLE 3

An expanded node with coverage factor 0. Expected outcome. InvalidUncertainty: “coverage factor 0 must be greater than 0”.

EXAMPLE 4

An expanded node with coverage probability 1. Expected outcome. InvalidUncertainty: “coverage probability 1 must lie strictly between 0 and 1”. The comparison is exact: 0.999...9 with arbitrarily many nines is accepted, and no floating point is involved.

EXAMPLE 5

A standard node with concise notation, value 10.3, magnitude 0.25. Expected outcome. InvalidUncertainty naming the decimal-place mismatch (clause 7).

EXAMPLE 6

A value carried as a computed float or a Number with a base. Expected outcome. InvalidUncertainty: the value must be a plain signed decimal.

EXAMPLE 7

A unit holding an uncertainty. Expected outcome. InvalidUncertainty: “unit must not contain an uncertainty”.

14.2  Encodings, standard category (classes encode-*)

EXAMPLE 1

Value 10.3, magnitude 0.2, absolute, unit g. Expected outcome. AsciiMath ustd(10.3, 0.2) "unitsml(g)"; LaTeX 10.3(0.2) g; HTML 10.3(0.2) g; UnicodeMath ⓘ("standard-uncertainty(10.3,0.2)"10.3(0.2)ⓐ(unit g)); MathML mrow with intent="standard-uncertainty(10.3,0.2)" containing the value, fence, and unit; OMML with the marker run standard-uncertainty(10.3,0.2) before the shape runs and the unit boxed.

EXAMPLE 2

The same node with notation concise. Expected outcome. AsciiMath renders the reporting form 10.3(2); the marker qualifies to standard-uncertainty:concise(10.3,0.2); every other surface’s visible shape is unchanged (10.3(0.2)), because the carried magnitude is the same.

14.3  Encodings, expanded category

EXAMPLE 1

Value 10.3, magnitude 0.5, coverage factor 2, coverage probability 0.95, unit g. Expected outcome. AsciiMath uexp(10.3, 0.5, 2, 0.95) "unitsml(g)"; LaTeX (10.3 \pm 0.5) g~(k = 2, p = 0.95); HTML (10.3 ± 0.5) g (k = 2, p = 0.95); UnicodeMath ⓘ("expanded-uncertainty(10.3,0.5,2,0.95)"...); MathML intent expanded-uncertainty(10.3,0.5,2,0.95); OMML marker run expanded-uncertainty(10.3,0.5,2,0.95).

EXAMPLE 2

The same without the probability. Expected outcome. the probability argument and the p = 0.95 statement are absent everywhere; no empty positions or empty statements remain.

14.4  Encodings, coverage-interval category

EXAMPLE 1

Value 10.3, lower 9.9, upper 10.7, probability 0.95, kind shortest, unit g. Expected outcome. AsciiMath ucov(10.3, 9.9, 10.7, 0.95, shortest) "unitsml(g)"; LaTeX 10.3,~[9.9, 10.7] g~(shortest, p = 0.95)-shaped output with the statements in kind-then-probability order; UnicodeMath with marker coverage-interval:shortest(10.3,9.9,10.7,0.95); MathML intent likewise; OMML marker run matching.

EXAMPLE 2

The same with kind probabilistically-symmetric. Expected outcome. AsciiMath spells symmetric; the markers and statements spell probabilistically-symmetric; the model value round-trips either spelling back to the same kind.

14.5  Unit handling (classes encode-*)

EXAMPLE

A unit the UnitsML reader rejects, in AsciiMath. Expected outcome. the call renders and the unit follows visibly after it; the quoted channel is absent; nothing is dropped.

14.6  Round trips

EXAMPLE

Each corpus node’s lossless encoding read back. Expected outcome. a node equal to the original in every field, including category, notation and interval kind; the unit equals the original unit.

14.7  Round trips through the quoted channel

EXAMPLE 1

ustd(10.3, 0.2) "unitsml(m/s2)" read back by the AsciiMath reader of document 1003. Expected outcome. a node equal to the original: value 10.3, magnitude 0.2, absolute notation, unit the UnitsML embedding of m/s2; the quoted channel reconstructs the unit exactly.

EXAMPLE 2

10.3(2) read back. Expected outcome. a node with value 10.3, magnitude 0.2, notation concise; the concise digit string of the reconstructed node renders 10.3(2) again.

14.8  The refusal vectors, rule by rule

One vector per validation rule, so the corpus pins every refusal message.

EXAMPLE 1

A coverage_probability field on a standard node. Expected outcome. refused: “coverage_probability does not apply to a standard uncertainty”.

EXAMPLE 2

An interval_kind on an expanded node. Expected outcome. refused: “interval_kind does not apply to a expanded uncertainty”.

EXAMPLE 3

A standard node without a magnitude. Expected outcome. refused: “magnitude is required for a standard uncertainty”.

EXAMPLE 4

An expanded node without a coverage factor. Expected outcome. refused: “coverage_factor is required for a expanded uncertainty”.

EXAMPLE 5

A coverage-interval node without an upper endpoint. Expected outcome. refused: “upper is required for a coverage interval uncertainty” — the node names its category as it does in the markers, with hyphens.

EXAMPLE 6

A negative magnitude. Expected outcome. refused: the magnitude must be an unsigned plain decimal.

EXAMPLE 7

A value 1.5e3. Expected outcome. refused: exponent forms are not plain decimals; the author writes 1500 or reports in a smaller unit.

EXAMPLE 8

A notation concise argument on an expanded node. Expected outcome. refused: “notation :concise applies only to a standard uncertainty”.

EXAMPLE 9

An empty unit formula. Expected outcome. refused: “unit must not be empty”.

EXAMPLE 10

A value that is not a Number node at all. Expected outcome. refused: “value must be a Math::Number holding a plain decimal, got …​” — the message carries the offending object’s inspection.

15  Annex D: worked end-to-end results

Three complete results, each from the author’s report through the node to every encoding. These are the shapes the corpus freezes.

15.1  Result one: a gauge-block length

The author reports: “the length is 500.0 mm with standard uncertainty 0.5 mm”.

The node: category standard, value 500.0, magnitude 0.5, notation absolute, unit the UnitsML embedding of mm.

The encodings:

Table 19 — Result one encodings
FormatEncoding
AsciiMathustd(500.0, 0.5) "unitsml(mm)"
LaTeX500.0(0.5) mm
HTML500.0(0.5) mm
UnicodeMathⓘ("standard-uncertainty(500.0,0.5)"500.0(0.5)ⓐ(unit mm))
MathMLmrow with intent="standard-uncertainty(500.0,0.5)", mn(500.0), fenced mn(0.5), unit
OMMLmarker run standard-uncertainty(500.0,0.5), value run, fenced magnitude run, boxed unit

Reading the AsciiMath encoding back yields the node. The trailing zero of 500.0 is present in every encoding and in the read-back node.

15.2  Result two: an expanded uncertainty

The author reports: “the mass difference is 10.3 g, U = 0.5 g (k = 2, p = 95%)”.

The node: category expanded, value 10.3, magnitude 0.5, coverage factor 2, coverage probability 0.95, unit g.

The encodings:

Table 20 — Result two encodings
FormatEncoding
AsciiMathuexp(10.3, 0.5, 2, 0.95) "unitsml(g)"
LaTeX(10.3 \pm 0.5) g~(k = 2,~(p = 0.95))-shaped output with the statements in factor-then-probability order
HTML(10.3 ± 0.5) g (k = 2) (p = 0.95)
UnicodeMathⓘ("expanded-uncertainty(10.3,0.5,2,0.95)"...) with the visible shape and statements
MathMLmrow with intent="expanded-uncertainty(10.3,0.5,2,0.95)", fenced (10.3 ± 0.5), unit
OMMLmarker run expanded-uncertainty(10.3,0.5,2,0.95), fenced ± runs, boxed unit

Dropping the probability from the report drops the p argument and the (p = 0.95) statement everywhere; no empty positions remain.

15.3  Result three: a Monte Carlo coverage interval

The author reports: “10.3 g, 95 % coverage interval [9.9, 10.7], shortest interval (JCGM 101 §9)”.

The node: category coverage-interval, value 10.3, lower 9.9, upper 10.7, interval kind shortest, coverage probability 0.95, unit g.

The encodings:

Table 21 — Result three encodings
FormatEncoding
AsciiMathucov(10.3, 9.9, 10.7, 0.95, shortest) "unitsml(g)"
LaTeX10.3,~[9.9, 10.7] g(shortest,(p = 0.95))-shaped output
HTML10.3, [9.9, 10.7] g (shortest) (p = 0.95)
UnicodeMathⓘ("coverage-interval:shortest(10.3,9.9,10.7,0.95)"...)
MathMLmrow with intent="coverage-interval:shortest(10.3,9.9,10.7,0.95)", value, bracketed group, unit
OMMLmarker run coverage-interval:shortest(10.3,9.9,10.7,0.95), shape runs, boxed unit

The same result with the probabilistically symmetric kind changes three things and nothing else: the AsciiMath kind spells symmetric, the markers and kind statements spell probabilistically-symmetric, and the model’s interval_kind field reads back as probabilistically-symmetric from every lossless encoding.

15.4  What the three results show

  • The category, the kind and the notation travel through every encoding that can carry them, and the shapes differ across categories in every format.

  • The numbers are verbatim everywhere; nothing normalises, rounds or reorders digits.

  • The unit appears exactly once per encoding, in the channel that format uses for units.

  • Round trips recover the node, not an approximation of it.


Bibliography

[1]  Plurimath repository, — https://github.com/plurimath/plurimath

[2]  Plurimath::Math::Function::Uncertainty implementation, — the reference implementation of this model

[3]  JCGM 100:2008, INTERNATIONAL ORGANIZATION FOR STANDARDIZATION, ORGANISATION INTERNATIONALE DE NORMALISATION (ISO), INTERNATIONAL ELECTROTECHNICAL COMMISSION, COMMISSION ÉLECTROTECHNIQUE INTERNATIONALE (IEC), INTERNATIONAL ORGANIZATION OF LEGAL METROLOGY, ORGANISATION INTERNATIONALE DE MÉTROLOGIE LÉGALE (OIML), INTERNATIONAL UNION OF PURE AND APPLIED CHEMISTRY, UNION INTERNATIONALE DE CHIMIE PURE ET APPLIQUÉE (IUPAC), INTERNATIONAL UNION OF PURE AND APPLIED PHYSICS, UNION INTERNATIONALE DE PHYSIQUE PURE ET APPLIQUÉE (IUPAP), INTERNATIONAL FEDERATION OF CLINICAL CHEMISTRY AND LABORATORY MEDICINE, FÉDÉRATION INTERNATIONALE DE CHIMIE CLINIQUE ET DE BIOLOGIE MOLÉCULAIRE (IFCC), INTERNATIONAL LABORATORY ACCREDITATION COOPERATION, COOPÉRATION INTERNATIONALE D’ACCRÉDITATION DES LABORATOIRES (ILAC), and BUREAU INTERNATIONAL DES POIDS ET MESURES (BIPM). Guide to the expression of uncertainty in measurement. Report no. JCGM 100:2008. First edition. Paris: International Bureau of Weights and Measures, Bureau international des poids et mesures; International Organization for Standardization, Organisation internationale de normalisation; International Electrotechnical Commission, Commission électrotechnique internationale, 2008. Available from: https://www.bipm.org/documents/20126/2071204/JCGM_100_2008_E.pdf/cb0ef43f-baa5-11cf-3f85-4dcd86f77bd6.

[4]  JCGM 101:2008, INTERNATIONAL ORGANIZATION FOR STANDARDIZATION, ORGANISATION INTERNATIONALE DE NORMALISATION (ISO), INTERNATIONAL ELECTROTECHNICAL COMMISSION, COMMISSION ÉLECTROTECHNIQUE INTERNATIONALE (IEC), INTERNATIONAL ORGANIZATION OF LEGAL METROLOGY, ORGANISATION INTERNATIONALE DE MÉTROLOGIE LÉGALE (OIML), INTERNATIONAL UNION OF PURE AND APPLIED CHEMISTRY, UNION INTERNATIONALE DE CHIMIE PURE ET APPLIQUÉE (IUPAC), INTERNATIONAL UNION OF PURE AND APPLIED PHYSICS, UNION INTERNATIONALE DE PHYSIQUE PURE ET APPLIQUÉE (IUPAP), INTERNATIONAL FEDERATION OF CLINICAL CHEMISTRY AND LABORATORY MEDICINE, FÉDÉRATION INTERNATIONALE DE CHIMIE CLINIQUE ET DE BIOLOGIE MOLÉCULAIRE (IFCC), INTERNATIONAL LABORATORY ACCREDITATION COOPERATION, COOPÉRATION INTERNATIONALE D’ACCRÉDITATION DES LABORATOIRES (ILAC), and BUREAU INTERNATIONAL DES POIDS ET MESURES (BIPM). Supplement 1 to the “Guide to the expression of uncertainty in measurement” — Propagation of distributions using a Monte Carlo method. Report no. JCGM 101:2008. First edition. Paris: International Bureau of Weights and Measures, Bureau international des poids et mesures; International Organization for Standardization, Organisation internationale de normalisation; International Electrotechnical Commission, Commission électrotechnique internationale, 2008. Available from: https://www.bipm.org/documents/20126/2071204/JCGM_101_2008_E.pdf/325dcaad-c15a-407c-1105-8b7f322d651c.

[5]  Pendrill, L. R. (2024), Quantities and units: order amongst complexity, De Gruyter

[6]  Python uncertainties package documentation, (rejected design, Annex B)

[7]  Wolfram Language Around documentation, (rejected design, Annex B)

[8]  CalConnect 36813, — the exact-decimal discipline applied across the stack