MathML Document Repository

Core Concept List

Matching the List

  1. A intent processor should match a system-specifed list of known concept names. The list should include all the entries from the core list below.

  2. Optionally intents may be defaulted based on the available content, so <mo>=</mo> may default to <mo intent="equals">=</mo> or <msup><mi>x</mi><mn>2</mn></msup> may default to <msup intent="power($x,$n)"><mi arg="x">x</mi><mn arg="n">2</mn></msup> Defaulting rules and options to control them to be specifed elsewhere, and are likely to be system specific.

  3. An intent term matches a row in the table if the concept name, arity and property all match. Any intent literal that does not match is not an error but is handled by the general rules for unknown concept names (so treated as a literal). Note that unless the intent is explicitly or implicitly (by expanding $argref) used as a function head it will have arity 0.

  4. The conditionals in the speech template should be constructed such that at least one row matches. If more than one speech template matches a system specific choice should be taken. The exact words in the speech templates are not normative so a system may have multiple possible wordings controlled by the context, or by system option settings such as “Verbosity”.


Sources

Additional language contributions are welcome.

Languages can be listed by extending the YAML file: languages.yml

Any concept that does not have a speech template in the specifed language will show the English text.

Localised texts can be added to the YAML file: core.yml


Core List


Core Concept Default Fixity properties

The following concepts do not require special speech templates but do have default fixity properties other than function.

function
curl (∇) , divergence (∇) , gradient (∇) , laplacian (∆)
prefix
angle (∠) , angle-measure (∡) , change (Δ) , for-all (∀) , measured-angle (∡) , minus (-, −) , not (¬) , number-of (#) , partial-derivative (∂) , right-angle (∟) , square-root-of (√) , there-does-not-exist (∄) , there-exists (∃)
infix
and (⁤∧) , applied-to (⁡U+2061) , approximately (≈) , congruent (≅) , cartesian-product (×) , composed-with (∘) , cross-product (×) , defined-as (≝, =, ≔) , dimensional-product (×) , divided-by (/, ÷, :) , divides (|, ∣) , does-not-belong-to (∉) , does-not-divide (∤) , dot-product (·) , downwards-diagonal-ellipsis (⋱) , direct-product (×) , element-of (∈, ∊) , ellipsis (…, ⋯) , equals (=) , equivalent-to (≡) , evaluates-to (→) , given (|) , greater-than (>) , greater-than-or-equal-to (≥, ≧) , identically-equals (≡) , if-and-only-if (⟺) , implies (⇒) , inner-product (⋅) , intersection (∩) , less-than (<) , less-than-or-equal-to (≤, ≦) , list-separator (,, ;) , maps-to (→) , member-of (∈, ∊) , minus (-, −) , minus-or-plus (∓) , not-subset (⊄) , not-superset (⊅) , not-equal-to (≠) , not-member-of (∉) , not-parallel-to (∦) , obtained-from (←) , or (∨) , outer-product (⊗) , parallel-to (∥) , perpendicular (⟂) , plus (+, U+2064) , plus-or-minus (±) , precedes (≺) , proportional (∝, ∷, ∼, ) , range-separator (-, ‐, ‑, –, —) , ratio (:, ∶) , set-difference (∼, ~, -, −, \) , similar (≅) , subset (⊂) , subset-or-equal (⊆) , succeeds (≻) , such-that (:, |) , superset (⊃) , superset-or-equal (⊇) , tilde () , times (*, ·, ×, ∗) , union (∪) , upwards-diagonal-ellipsis (⋰) , vertical-ellipsis (⋮) , xor (⊕)
postfix
factorial (!) , percent (%)
nofix
diameter (d) , distance (d, D) , probability (P) , radius (r) , volume (V)
silent
invisible-separator (⁣U+2063) , invisible-times (⁢U+2062)

Core Concept Templates


Available Template Languages

Concept Arity PropertySpeech Template (en)Speech Template (fr)Speech Template (de)Speech Template (es)Speech Template (vi)Comments
functions and inverses
closed-open-interval 2
[$a1,$a2]
function*interval between $a1 (included) and $a2 intervalle ouvert à droite entre $a1 et $a2
open-closed-interval 2
[$a1,$a2]
function*interval between $a1 and $a2, included intervalle ouvert à gauche...
open-interval 2
[$a1,$a2]
function*open interval between $a1 and $a2 intervalle ouvert
closed-interval 2
[$a1,$a2]
function*closed interval between $a1 and $a2 intervalle fermé entre $a1 et $a2
inverse 1
[$a1]
function**inverse of $a1 inverse can be used for function inverses, matrix inverses, etc.
inverse 1
[$a1]
postfix*$a1 inverse
domain 1
[$a1]
function*domain of $a1 domaine de définition de $a1
codomain 1
[$a1]
function*codomain of $a1 ensemble d'arrivée de $a1
image 1
[$a1]
function**image of $a1 image de $a1
fraction 2
[$a1,$a2]
function*fraction $a1 over $a2 end fraction
mixed-fraction 2
[$a1,$a2]
function*$a1 and $a2 $a1 is a positive integer and $a2 is a fraction with positive numerical components. The second argument can be an mfrac (normal or beveled) or can be a linear fraction using /
quotient 2
[$a1,$a2]
function*integer part of $a1 divided by $a2 quotient de $a1 par $a2
evaluated-at 2
[$a1,$a2]
infix*$a1 evaluated-at $a2 Two common notations are x2|3 and x2 | x=3
remainder 2
[$a1,$a2]
function*the remainder of $a1 divided by $a2 reste de la divsion de $a1 par $a2
max ⩾1
[$a1,...]
function*max of $a1, ...
min ⩾1
[$a1,...]
function*min of $a1, ...
power2
[$a1,$a2]
infix* [$a2=2]: $a1 squared [$a2=2]: $a1 carré [$a2=2]: [$a2=2]: [$a2=2]:
[$a2=3]: $a1 cubed [$a2=3]: $a1 cube [$a2=3]: [$a2=3]: [$a2=3]:
[]: $a1 to the $a2th power []: $a1 à la $a2 []: []: []:
root2
[$a1,$a2]
function* [$a2=2]: square root of $a1 [$a2=2]: [$a2=2]: [$a2=2]: [$a2=2]:
[$a2=3]: cube root of $a1 [$a2=3]: [$a2=3]: [$a2=3]: [$a2=3]:
[$a2=4]: fourth root of $a1 [$a2=4]: [$a2=4]: [$a2=4]: [$a2=4]:
[]: $a2th root of $a1 []: []: []: []:
greatest-common-divisor ⩾2
[$a1,$a2,...]
function*greatest common divisor of $a1, $a2, ... plus grand commun diviseur de $a1, $a2, ...
least-common-multiple ⩾2
[$a1,$a2,...]
function*lest common multiple of $a1, $a2, ... plus grand commun diviseur de $a1, $a2, ...
least-common-denominator ⩾2
[$a1,$a2,...]
function*least common denominator of $a1, $a2, ...
absolute-value 1
[$a1]
function*absolute value of $a1 valeur absolue de $a1 Betrag von $a1
complex-conjugate 1
[$a1]
function*complex conjugate of $a1 $a1 conjugé
complex-arg 1
[$a1]
function*arg of $a1
real-part 1
[$a1]
function*real part of $a1
imaginary part of $a1
imaginary-part 1
[$a1]
function*imaginary part of $a1
polar-coordinate 2
[$a1,$a2]
function*polar coordinate $a1 comma $a2
spherical-coordinate 3
[$a1,$a2,$a3]
function*spherical coordinate $a1 comma $a2, comma $a3
cartesian-coordinate ⩾2
[$a1,$a2,...]
function*cartesian coordinate $a1 comma $a2 ...
coordinate ⩾2
[$a1,$a2,...]
function*coordinate $a1 comma $a2 ...
floor 1
[$a1]
function*floor of $a1
ceiling 1
[$a1]
function*ceiling of $a1
round 1
[$a1]
function*rounded-value of $a1 This sometimes uses the notation x or [x]
fractional-part 1
[$a1]
function*fractional part of $a1
calculus
definite-integral 1
[$a1]
???*integral over $a1 integral sign is not an argument
definite-integral 2
[$a1,$a2]
???*integral from $a1 to $a2 integral sign is not an argument
derivative 3
[$a1,$a2,$a3]
???*(verbose) the $a3 derivative of $a1 with respect to $a2
(terse) d <$a3 if $a3 != 1> $a1 by d $a2 <$a3 if $a3 != 1>
the terse reading only makes sense for Leibniz notation such as d2ydx2 or d2dx2f(x). It does not make sense for other notations such as f''(x)
The first of these examples might be marked up as
<mfrac intent='derivative(y, x, 2)'>
  <mrow>
    <msup><mi>d</mi><mn arg>2</mn></msup>
    <mi>y</mi>
  </mrow>
  <mrow>
    <mi>d</mi>
    <msup><mi>x</mi><mn>2</mn></msup>
  </mrow>
</mfrac>
partial-derivative ⩾3
[$a1,$a2,$a3,...]
???*partial <sum $a3+2i> $a1 partial $a2 <$a3 if $a3 != 1> [partial $a4 <$a5 if $a5 != 1> ...]
<mfrac intent='partial-derivative($f, x, 2, y, 1)'>
  <mrow>
      <msup><mo>&#x2202;</mo><mn>3</mn></msup>
      <mrow arg='f'><mi>sin</mi><mo>(</mo><mi>x</mi><mo>)</mo><mi>y</mi></mrow>
  </mrow>
  <mrow>
      <msup><mo>&#x2202;</mo><mn>2</mn></msup>
      <mi>x</mi><mo>&#x2202;</mo><mi>y</mi>
  </mrow>
</mfrac>
limit 1
[$a1]
prefix*limit as $a1 limit is not an argument, but intent should be on msub or munder
There are several arrows used for limits.
Example: lim x0 might be spoken as “limit as x tends to from below 0” and marked up as:
<munder intent='limit($lim)'>
    <mi>lim</mi>
    <mrow arg='lim' intent='tends-to-from-below($x, $val)''>
      <mi arg='x'>x</mi>
      <mo>↗</mo>
      <mn arg='val'>0</mn>
    </mrow>
</munder>

Another notation that might be spoken similarly is limx0-
tends-to 2
[$a1,$a2]
infix*$a1 tends to $a2 see “limit” example
tends-to-from-above 2
[$a1,$a2]
infix*$a1 tends to from above $a2 see “limit” example
tends-to-from-below 2
[$a1,$a2]
infix*$a1 tends to from below $a2 see “limit” example
sets
set 1
[$a1]
function*set of $a1 the argument to set is typically an mrow. For example:
<math>
 <mrow intent='set($members)'>
  <mo>{</mo>
  <mrow arg='members'>
   <mn>2</mn>
   <mo>,</mo>
   <mn>4</mn>
   <mo>,</mo>
   <mn>6</mn>
   <mo>,</mo>
   <mn>8</mn>
  </mrow>
  <mo>}</mo>
 </mrow>
</math>
set-difference 2
[$a1,$a2]
function*set difference of $a1 and $a2 This can be spoken in many ways. See other entry for infix speech.
There are several notations that are used and their order of appearance differs: A-B, A\B
set-difference 2
[$a1,$a2]
infix*"$a1 minus $a2" or "$a2 subtracted from $a1" This can be spoken in many ways. See other entry for functional speech.
See functional form for some notational usages.
complement 1
[$a1]
function*complement of $a1 This can be spoken in many ways. See other entry for functional speech.
Two notations used for complement are: AC, A'
empty-set 0
[]
empty set Three notations used for empty set are: { }, ∅, and ∅
cardinality 1
[$a1]
function* often used with matchfix single vertical bars
list ⩾0
[$a1,...]
*list of $a1, ...
tuple ⩾0
[$a1,...]
*tuple of $a1, ...
sequences and series
sum 1
[$a1]
function*sum of $a1 usually on <mrow>
sum 2
[$a1,$a2]
function*sum over $a1 of $a2 usually on <munder> or <msub>
sum 3
[$a1,$a2,$a3]
function*sum from $a1 to $a2 of $a3 usually on <munderover> or <msubsup>
product 1
[$a1]
function*product of $a1 usually on <mrow>
product 2
[$a1,$a2]
function*product over $a1 of $a2 usually on <munder> or <msub>
product 3
[$a1,$a2,$a3]
function*product from $a1 to $a2 of $a3 usually on <munderover> or <msubsup>
elementary classical functions
sine 1
[$a1]
function*sine $a1 sinus $a1 used as ‘sin’, ‘sen’
cosine 1
[$a1]
function*(verbose) cosine $a1
(terse) cos $a1
tangent 1
[$a1]
function*(verbose) tangent $a1
(terse) tan $a1
used as ‘tan’, ‘tg’
secant 1
[$a1]
function*(verbose) secant $a1
(terse) seech $a1
used as ‘sec’
cosecant 1
[$a1]
function*(verbose) cosecant $a1
(terse) co-seech $a1
used as ‘csc’
cotangent 1
[$a1]
function*(verbose) cotangent $a1
(terse) co-tan $a1
used as ‘cot’
arcsine 1
[$a1]
function*(verbose) arcsine $a1 used as ‘arcsin’, ‘arc sin’
this is distinct from sin inverse (sin-1)
arccosine 1
[$a1]
function*(verbose) arccosine $a1 used as ‘arccos’, ‘arc cos’
arctangent 1
[$a1]
function*(verbose) arctangent $a1 used as ‘arctan’, ‘arc tan’
arcsecant 1
[$a1]
function*(verbose) arcsecant $a1 used as ‘arcsec’, ‘arc sec’
arccosecant 1
[$a1]
function*(verbose) arc-cosecant $a1 used as ‘arccos’, ‘arc cos’
arccotangent 1
[$a1]
function*(verbose) arc-cotangent $a1 used as ‘arccos’, ‘arc cos’
hyperbolic-sine 1
[$a1]
function*short form 'shine $a1' sinus hyperbolique $a1 youtube
used as ‘sinh’
hyperbolic-cosine 1
[$a1]
function*short form 'cosh $a1' cosh $a1
kosh $a1
youtube
used as ‘cosh’
hyperbolic-tangent 1
[$a1]
function*short form American 'tanch $a1'
short form British 'than $a1'
youtube
used as ‘tanh’
hyperbolic-secant 1
[$a1]
function*short form American 'sech $a1'
short form British 'shek $a1'
youtube
used as ‘sech’
hyperbolic-cosecant 1
[$a1]
function*short form American 'cosech $a1'
short form British 'coshek $a1'
youtube
used as ‘cosech’
hyperbolic-cotangent 1
[$a1]
function*short form American 'coth $a1'
short form British 'coath $a1'
youtube
used as ‘coth’
arc-hyperbolic-sine 1
[$a1]
function*short form 'arc shine $a1' sinus hyperbolique $a1 used as ‘asinh’
arc-hyperbolic-cosine 1
[$a1]
function*short form 'arc cosh $a1' cosh $a1
kosh $a1
used as ‘acosh’
arc-hyperbolic-tangent 1
[$a1]
function*short form American 'arc tanch $a1'
short form British 'arc than $a1'
used as ‘atanh’
arc-hyperbolic-secant 1
[$a1]
function*short form American 'arc sech $a1'
short form British 'arc shek $a1'
used as ‘asech’
arc-hyperbolic-cosecant 1
[$a1]
function*short form American 'arc cosech $a1'
short form British 'arc coshek $a1'
used as ‘acsch’
arc-hyperbolic-cotangent 1
[$a1]
function*short form American 'arc coth $a1'
short form British 'arc coath $a1'
used as ‘acoth’
exponential 1
[$a1]
function*exponential of $a1
natural-logarithm 1
[$a1]
function*natural log of $a1
log of $a1
logarithm 1
[$a1]
function*log of $a1
logarithm 2
[$a1,$a2]
function*log base $a2 of $a1
Statistics and Probability
mean 1
[$a1]
function*mean of $a1 This might be display as x¯
standard-deviation 1
[$a1]
function*standard deviation of $a1
variance 1
[$a1]
function*variance of $a1
median 1
[$a1]
function*median of $a1
mode 1
[$a1]
function*mode of $a1
conditional-probability 2
[$a1,$a2]
function*probability of $a1 given $a2 The intent should be on the mrow that includes the “P”
 <math>
  <mrow intent='conditional-probability($arg1, $arg2)'>
   <mi>P</mi>
   <mo>(</mo>
   <mrow>
    <mi arg='arg1'>A</mi>
     <mo>|</mo>
     <mi arg='arg2'>B</mi>
   </mrow>
   <mo>)</mo>
  </mrow>
 </math>
Linear Algebra
vector 1
[$a1]
function*
matrix 1
[$a1]
function* when used with an mtable argument, it is a good idea to use the :matrix property on the mtable to insure it speaks correctly
determinant 1
[$a1]
function* when used with an mtable argument, it is a good idea to use the :matrix property on the mtable to insure it speaks correctly
adjugate 1
[$a1]
function* sometimes used when computing an inverse matrix
magnitude 1
[$a1]
function* often used with matchfix single or double vertical bars
norm 1
[$a1]
function* often used with matchfix double vertical bars
span 1
[$a1]
function* often used with matchfix angle brackets
unit-vector 1
[$a1]
prefix*unit vector x Example: x^
identity-matrix 0
[]
identity matrix This is typically represented as ‘I’ or bold-faced ‘𝐈’
transpose 1
[$a1]
postfix*$a1 transpose $a1 transposée
transpose 1
[$a1]
functiontranspose of $a1 transposée de $a1
dimensional-product ⩾2
[$a1,$a2,...]
infix$a1 by $a2 ... This is typically used with the × operator and can be placed on that character as a 0-arity concept name. A common use would be describe the size of a matrix. For example m×n.
Constants and Sets
set-of-integers 0
[]
(verbose) set of all integers
(terse) Z
Z
set-of-reals 0
[]
(verbose) set of all real numbers
(terse) R
set-of-rationals 0
[]
(verbose) set of all rational numbers
(terse) R
set-of-natural-numbers 0
[]
(verbose) set of all natural numbers
(terse) N
set-of-complex-numbers 0
[]
(verbose) set of all complex numbers
(terse) C
set-of-primes 0
[]
(verbose) set of all prime numbers
(terse) P
exponential-e 0
[]
e e
imaginary-i 0
[]
i i
differential-d 0
[]
d d
golden-ratio 0
[]
golden ratio d Often denoted as φ
Geometry
line-segment 2
[$a1,$a2]
prefix*line segment $a1 $a2 Example: (mover): AB_
directed-line-segment 2
[$a1,$a2]
prefix*directed line segment $a1 $a2 Example: (mover): AB
line 2
[$a1,$a2]
prefix*line $a1 $a2 Example: (mover): AB
ray 2
[$a1,$a2]
prefix*ray $a1 $a2 Example: (mover): AB
arc 2
[$a1,$a2]
prefix*arc $a1 $a2 Example: (mover): AB
length 1
[$a1]
function*length of $a1 It may be necessary to ‘nest’ the intent as shown here for the example: A B
The markup for this is:
<mrow intent='length(line-segment($start, $end))'>
       <mi arg='start' mathvariant='normal'>A</mi>
       <mi arg='end' mathvariant='normal'>B</mi>
</mrow>
area 1
[$a1]
function*area of $a1 There are many notations. Here’s one: [ABCD]
The markup for this is:
<mrow intent='area($shape)'>
    <mo>[</mo>
    <mrow arg='shape'>
        <mi mathvariant='normal'>A</mi>
        <mi mathvariant='normal'>B</mi>
        <mi mathvariant='normal'>C</mi>
        <mi mathvariant='normal'>D</mi>
        <mo>]</mo>
    </mrow>
</mrow>

It may be necessary to ‘nest’ the intent as shown in the length intent
point ⩾1
[$a1,...]
???*point $a1 [comma $a2 ...]
volume 1
[$a1]
function*volume of $a1 See comments for length and volume for examples of how this might be marked up
Fill in the blank
blank 0
[]
blank blanks can be represented in many ways in MathML. Some examples:
<mi intent='blank'>__</mi>
<mi intent='blank'>?</mi>
<mo intent='blank'>□</mo>
<mspace intent='blank' width='3em'/>
<menclose intent='blank' notation='box'>
<mspace width='3em'/>
</menclose>
Separators
time-separator 2
[$a1,$a2]
infix*$a1 $a2 separates hours and minutes and is typically silent
Example: 2:31
General Concepts
fenced-group 1
[$a1]
function*fenced-group of $a1 this includes parens, brackets, and braces
ordered-pair 2
[$a1,$a2]
function*the pair $a1 and $a2
indexed-by 2
[$a1,$a2]
infix*$a1 indexed by $a2 this is typically a subscript and might also be spoken as ‘$a1 sub $a2’
highlight 1
[$a1]
postfix*$a1 highlighted this typically would be used inside of a larger expression and not on its own
this might be used with <menclose notation='box'> or similar. It might also be used with color changes, although may be done with CSS
rate 2
[$a1,$a2]
infix*$a1 per $a2 Typically used with units
Used with mfrac or /
translation 2
[$a1,$a2]
function*translation by $a1 comma $a2 Example: T(1,3)
constraint 2
[$a1,$a2]
infix*fraction 2 over x minus 1 with constraint x not equal to 1 Example: 2x-1, x1
binomial-coefficient 2
[$a1,$a2]
infix*$a1 choose $a2 There are many notations used for the binomial coefficient. Here are some of them: ( n k ) , C k n , C k n
pochhammer 2
[$a1,$a2]
function*$a2 permutation of $a1 There are many notations for this: some of them are Pkn ,  Pkn ,  Pkn ,  Pn,k ,  P(n,k) ,  nk
The first of these would be marked up as:
<msubsup intent='pochhammer($n, $k)'>
    <mi>P</mi>
    <mi arg='k'>k</mi>
    <mi arg='n'>n</mi>
</msubsup>
permutation-cycle ⩾2
[$a1,$a2,...]
function*permutation cycle of $a1 $a2 ... A common notation for a permutation cycle is ( 132 )
This would be marked up as:
<mrow intent='permutation-cycle($arg1, $arg2, $arg3)'
<mo>(</mo>
  <mtable><mtr>
     <mtd><mn arg='arg1'>1</mn></mtd>
     <mtd><mn arg='arg2'>3</mn></mtd>
     <mtd><mn arg='arg3'>2</mn></mtd>
  </mtr></mtable>
<mo>)</mo>
embellished-name 2
[$a1,$a2]
infix*$a1 with annotation $a2 used with mover or munder
Grouping
fenced-group 1
[$a1]
function*fenced-group of $a1 this includes parens, brackets, and braces
annotation 2
[$a1,$a2]
function*$a1 which is $a2 used with mover or munder
Example: H2Owater
braced-group 1
[$a1]
function*grouped $a1 end-grouped used with mover or munder
Example: 13-16
repeating-decimal 1
[$a1]
function*repeating decimal $a1 typically used in when there is a bar over the repeating part of a decimal or dots over the first and last digits.
Example: 122=0.045_
This right hand side of this might be might be marked up as:
<mn>0.0</mn>
<mover intent='repeating-decimal($repeat)'>
    <mn arg='repeat'>45</mn>
    <mo>_</mo>
</mover>

or using the elementary math elements in MathML full as
<mstack intent='_(0.0, repeating-decimal(45)'>
  <msline length="2"/>
  <mn>0.045</mn>
</mstack>

Key

Entry Meaning
* property default if no fixity: property given
th suitable ordinal indicator, so st nd rd or th in English.
n Arity of at least n