The primary role of MathML content elements is to provide a mechanism for recording that a particular notational structure has a particular mathematical meaning. To this end, every content element must have a mathematical definition associated with it in some form. The purpose of this appendix is to provide default definitions. (An index to the definitions is provided later in this document.) Authors may adapt the notation to their own particular needs by using mechanisms provided to override these default definitions for selected content elements.
The mathematical definitions below are not restricted to any one format. There are several reasons for allowing this, nearly all derived from the fact that it is extremely important to allow authors to make use of existing definitions from the mathematical literature.
There is no suitable notation in common use. For example, the mathematical libraries of even the most extensive mathematical computation systems in use today capture only a small fraction of the mathematical literature and furthermore much of mathematics is not computational.
In most cases, the translation of a mathematical definition into a new notation is an inappropriate use of an author's energy and time.
The task of designing a new machine readable language suitable for recording semantic descriptions is one that goes substantially beyond the scope of this particular recommendation. It would also overlap substantially with the efforts of such groups as the OpenMath Consortium (see also the North American OpenMath Initiative, and the European OpenMath Consortium).
The key issues for both archival and computational purposes are that there be a definition and that the author have a mechanism to specify which definition is intended for a given instance of a notational construct. This requirement is important whether or not there is an implementation of a particular concept or object in a mathematical computation system. The definition may be as vague as claiming that, say, F is an unknown but differentiable function from the real numbers to the real numbers, or as complicated as requiring that F be an elaborate function or operation as defined in a specific research paper. The important thing is that the reader always have a way of determining how the notation is being used.
An author's decision to use content elements is a decision to use defined objects. To make this easier, default definitions are provided. In this way, an author need only provide explicit definitions where the usage differs from the default. Where possible the default definitions have naturally been chosen to reflect common usage.
Definitions are overridden in a particular instance by making use of the
definitionURL attribute. The value of this attribute
is a URI (notwithstanding its old-style name) and beyond that its format
is unspecified. It may even be the case that the definitionURL's
value is just a name invented by the author. In that case it serves to warn the
reader (and computational systems) that the author is using a private local
definition. It may be the URL of a mathematical paper, or a reference
to a traditional source in
which the construct is defined. If the author's mathematical operator
matches exactly an operator in a particular computational system, an
appropriate definition might use a MathML semantics
element to establish a correspondence between two encodings.
Whatever format is chosen, the only requirement is that
some sort of definition be indicated.
The rest of this appendix provides detailed descriptions of the default semantics associated with each of the MathML content elements. Since this is exactly the role intended for the encodings under development by the OpenMath Consortium, and one of our goals is to foster cooperation in such standardization efforts, we have presented the default definitions in a format modeled on OpenMath's content dictionaries. While the actual details differ somewhat from the OpenMath specification, the underlying principles are the same.
Several of the definitions provided here refer to one or more of the standard mathematical references Abramowitz and Stegun [Abramowitz1997] and Standard Mathematical Tables and Formulae [Zwillinger1988].
In the XML source for this appendix each MathML element is described using an XML vocabulary designed for the purpose. Though well adapted to machine processing the XML form of the definitions is difficult to read for humans. Therefore the text below is composed in a way automatically derived by XSL transformations (and typesetting in the case of the PDF versions of the MathML specification) from the XML source, but formatted so that it is much easier to read and comprehend. The conventions employed will be explained just below in the course of going through the elements of the XML markup in the XML source. The first example definition, but only that one, will be provided in both the more legible form and in raw XML, so the difference can be appreciated.
The top element is MMLdefinition.
The sub-elements identify the various parts of the description and include:
PCDATA providing the name of the MathML element.
A CDATA description of the object that an element represents. This will often reference more traditional texts or papers or existing papers on the Web.
Each MathML element must be classified according to its mathematical role.
Some elements exist simply as an aid to parsing. For example the
sep element is used to separate the CDATA
defining a rational number into two parts in a manner that is easily parsed
by an XML application. These objects are referred to as
punctuation.
Some elements exist simply to modify the properties of an existing
element or mathematical object. For example the declare
construct is used to reset the default
attribute values, or to associate a name with a specific instance of an
object. These kinds of elements are referred to as descriptors
and the type of the resulting object is the same as that of
element being modified, but with the new attribute values.
The traditional mathematical functions and operators are
represented in MathML by empty XML elements such as
plus and sin. These
function
elements can be assigned alternative
definitions (indicating, for example, that they represent
operations on elements from some author defined algebra)
through use of the definitionURL attribute.
They can be included in expressions on their own such as when discussing
the properties of a function, or they can be applied to arguments using apply.
The latter case is referred to as function
application.
Functions are often classified according to how they are used. For example
the plus element is an n-ary operator.
This additional information is captured by the signature.
The signature of a function (see below) describes how it is to
be used as a mathematical function inside an apply element.
Each combination of types of function arguments used inside an apply
gives rise to an apply element of a given type.
Mathematical constants are generally represented by empty elements and are distinguished from functions by the fact that they are not used as the first argument of an apply. Their signature is simply the type of the object they represent.
The remaining objects that "contain" sub-elements are
all object constructors of some sort or another. They combine
the sub-elements into a compound mathematical object such as a constant,
set, list, or a function application. For example, the lambda
element constructs a function
definition from a list of variables and an expression. while the apply
element constructs a function
application. By function application we mean the result
of applying the first element of the apply (the function) to the zero or
more remaining elements (the arguments). A function
application represents an object in the range of the function.
For each given combination of type and order of XML children, the signature of a constructor indicates the type (and sometimes subtype) of the resulting object.
Some of the XML attributes of a MathML content element have a
direct impact on the mathematical semantics of the object. For example
the type attribute of the cn
element is used to determine what type of constant (integer, real, etc.)
is being constructed. Only those attributes that affect the mathematical
properties of an object are listed here and typically these also appear
explicitly in the signature.
The signature is a systematic representation that associates the types of different possible combinations of attributes and function arguments with the type of mathematical object that is constructed. The possible combinations of parameter and argument types (the left-hand side) each result in an object of some type (the right-hand side). In effect, it describes how to resolve operator overloading.
For constructors, the left-hand side of the signature describes the
types of the child elements and the right-hand side describes the type of
object that is constructed. For functions, the left-hand side of the
signature indicates the types of the parameters and arguments that would be
expected when it is applied, or used to construct a relation, and the
right-hand side represents the mathematical type of the object constructed
by the apply. Modifiers modify the attributes of an
existing object. For example, a symbol might become a
symbol of type vector.
The signature must be able to record specific attribute values and argument types on the left, and parameterized types on the right.. The syntax used for signatures is of the general form:
[<attribute name>=<attribute-value>]( <list of argument types> ) --> <mathematical result type>(<mathematical subtype>)
The MMLattributes, if any, appear in the form
<name>=<value>. They are separated notationally
from the rest of the arguments by square brackets. The possible values are
usually taken from an enumerated list, and the signature is usually
affected by selection of a specific value.
For the actual function arguments and named parameters on the left,
the focus is on the mathematical types involved. The function argument
types are presented in a syntax similar to that used for a DTD, with the
one main exception. The types of the named parameters appear in the
signature as
<elementname>=<type>
in a manner analogous for that used for attribute values. For example,
if the argument is named (e.g. bvar) then it is
represented in the signature by an equation as in:
[<attribute name>=<attributevalue>]( bvar=symbol,<argument list> ) --> <mathematical result type>(<mathematical subtype>)
There is no formal type system in MathML. The type values that are used
in the signatures are common mathematical types such as integer, rational,
real, complex (such as found in the description of cn),
or a name such as string or the name of a MathML constructor.
Various collections of types such as anything, matrixtype
are used from time to time. The type name mmlpresentation
is used to represent any valid MathML presentation object and the name
MathMLtype is used to describe the collection of all MathML types.
The type domainofapp is used to represent a
domain of application. Whereever it occurs, it can be replaced by
one of the various abbreviated forms as described in the validation grammar.
For example, the signatures
(domainofapp,function) -> anything (bvar+,domainofapp,anything) -> anything
imply all of the alternative forms
(interval,function) -> anything (domainofapplication,function) -> anything (bvar+,domainofapplication,anything) -> anything (bvar+,condition,anything) -> anything (bvar+,lowlimit,uplimit?,anything) -> anything
The type algebraic is used for expressions constructed FROM ONE OR MORE symbols through arithmetic operations and interval-type refers to the valid types of intervals as defined in chapter 4. The collection of types is not closed. Users writing their own definitions of new constructs may introduce new types.
Depending on the types involved, more than one signature may apply. For example, many arithmetic operations involving integers map to integers, but since integers are real numbers, the signature for real numbers also is valid. Generally, the signature providing the most information is most appropriate.
No mathematical evaluation ever takes place in MathML. Every MathML
content element either refers to a defined object such as a mathematical
function or it combines such objects in some way to build a new object.
For purposes of the signature, the constructed object represents an object
of a certain type parameterized type. For example the result of applying
plus to arguments is an expression that represents
a sum. The type of the resulting expression depends on the types of the
operands, and the values of the MathML attributes.
Examples of the use of this object in MathML are included in these elements.
This element describes the mathematical properties of such
objects. For simple associations of values with specific instances of
an object, the first child is an instance of the object being
defined. The second is a value or
approx (approximation) element that contains a
MathML description of this particular value. More elaborate conditions
on the object are expressed using the MathML syntax.
These elements contain only PCDATA and can occur as a child of the MMLdefinition at any point.
cnThe cn element is used to encode numerical constants. The mathematical type of number is given as an attribute. The default type is "real". Numbers such as e-notation, rational and complex, require two parts for a complete specification. The parts of such a number are separated by an empty sep element.
Many of the commonly occurring numeric constants such as
π have their own elements.
See also 4.4.1.1 Number (cn).
| Name | Value | Default |
|---|---|---|
| definitionURL | URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | integer | rational | complex-cartesian | complex-polar | real | e-notation | MathMLtype | real |
| base | integer between 2 and 36 | 10 |
[type=integer](numstring) -> constant(integer)
[base=base-value](numstring) -> constant(integer)
[type=rational](numstring,numstring) -> constant(rational)
[type=complex-cartesian](numstring,numstring) -> constant(complex)
[type=e-notation](numstring,numstring) -> constant(e-notation)
[type=complex-polar](numstring,numstring) -> constant(rational)
[definitionURL=definition](numstring*) -> constant(user-defined)
<apply><eq/><cn base="16"> A </cn><cn> 10 </cn></apply>
<apply><eq/><cn base="16"> B </cn><cn> 11 </cn></apply>
<apply><eq/><cn base="16"> C </cn><cn> 12 </cn></apply>
<apply><eq/><cn base="16"> D </cn><cn> 13 </cn></apply>
<apply><eq/><cn base="16"> E </cn><cn> 14 </cn></apply>
<apply><eq/><cn base="16"> F </cn><cn> 15 </cn></apply>
<cn> 245 </cn>
<cn type="integer"> 245 </cn>
<cn type="integer" base="16"> A </cn>
<cn type="rational"> 245 <sep/> 351 </cn>
<cn type="complex-cartesian"> 1 <sep/> 2 </cn>
<cn> 245 </cn>
<apply><eq/> <cn type="e-notation"> 2 <sep/> 5 </cn> <apply><times/><cn>2</cn><apply><power/><cn>10</cn><cn>5</cn></apply></apply> </apply>
ciThis element constructs an identifier (symbolic name). The type attribute is used to indicate the type of object being specified. By default, the type is real.
See also 4.4.1.2 Identifier (ci).
| Name | Value | Default |
|---|---|---|
| definitionURL | URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | constant | matrix | set | vector | list | MathMLtype | real |
({string|mmlpresentation}) -> symbol
[type=typename]({string|mmlpresentation}) -> symbol(typename)
<ci> xyz </ci>
<ci type="vector"> v </ci>
csymbolThe csymbol element allows a writer to introduce new objects into MathML. The objects are linked to external definitions by means of the definitionURL attribute and encoding attribute. The csymbol element becomes the "name" of the new object. The new objects are typically either constants or functions.
| Name | Value | Default |
|---|---|---|
| definitionURL | URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
[definitionURL=definition]({string|mmlpresentation}) -> defined_symbol
[type=typename]({string|mmlpresentation}) -> defined_symbol(typename)
<csymbol definitionURL=".../mydefinitionofPi">π</csymbol>
applyThis is the MathML constructor for function application. The first argument is applied to the remaining arguments. It may be the case that some of the child elements are named elements. (See the signature.)
See also 4.4.2.1 Apply (apply).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(function,anything*) -> apply
<apply><plus/> <ci>x</ci> <cn>1</cn> </apply>
<apply><sin/> <ci>x</ci> </apply>
relnThis constructor has been deprecated. All uses of reln are replaced by apply.
This is the MathML 1.0 constructor for expressing a relation between two or more mathematical objects. The first argument indicates the type of "relation" between the remaining arguments. (See the signature.) No assumptions are made about the truth value of such a relation. Typically, the relation is used as a component in the construction of some logical assertion. Relations may be combined into sets, etc. just like any other mathematical object.
See also 4.4.2.2 Relation (reln).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(function,anything*) -> apply
No examples of deprecated constructions are provided.
fnThis constructor has been deprecated.
This was the MathML 1.0 constructor for building new functions. Its role was to identify a general MathML content object as a function in such a way that it could have a definition and be used in a function context such as in apply and declare. This is now accomplished through the use of definitionURL and the fact that declare and apply allow any content element as their first argument.
See also 4.4.2.3 Function (fn).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(anything) -> function
[definitionURL=functiondef](anything) ->function
No examples of deprecated constructions are provided.
intervalThis is the MathML constructor element for building an interval on the real line. While an interval can be expressed by combining relations appropriately, they occur here explicitly because of the frequency of their use.
See also 4.4.2.4 Interval (interval).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | closed | open | open-closed | closed-open | closed |
[type=interval-type](algebraic,algebraic) -> interval(interval-type)
<interval closure="open"> <ci>x</ci> <cn>1</cn> </interval>
<interval closure="open-closed"> <cn>0</cn> <cn>1</cn> </interval>
<interval>
<bvar><ci>x</ci></bvar>
<condition>
<apply><lt/><cn>0</cn><ci>x</ci></apply>
</condition>
</interval><apply><int/> <interval><cn>0</cn><cn>1</cn></interval> <ci type="function">f</ci> </apply>
inverseThis MathML element is applied to a function in order to construct a new function that is to be interpreted as the inverse function of the original function. For a particular function F, inverse(F) composed with F behaves like the identity map on the domain of F and F composed with inverse(F) should be an identity function on a suitably restricted subset of the Range of F. The MathML definitionURL attribute should be used to resolve notational ambiguities, or to restrict the inverse to a particular domain or to make it one-sided.
See also 4.4.2.5 Inverse (inverse).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(function) -> function
[definitionURL=URI](function) -> function(definition)
ForAll( y, such y in domain( f^(-1) ), f( f^(-1)(y) ) = y
<apply><forall/>
<bvar><ci>y</ci></bvar>
<bvar><ci type="function">f</ci></bvar>
<condition>
<apply><in/>
<ci>y</ci>
<apply><csymbol definitionURL="domain"><mtext>Domain</mtext></csymbol>
<apply><inverse/><ci type="function">f</ci></apply>
</apply>
</apply>
</condition>
<apply><eq/>
<apply><ci type="function">f</ci>
<apply><apply><inverse/><ci type="function">f</ci></apply>
<ci>y</ci>
</apply>
</apply>
<ci>y</ci>
</apply>
</apply>
<apply><inverse/> <sin/> </apply>
<apply><inverse definitionURL="www.example.com/MathML/Content/arcsin"/> <sin/> </apply>
sepThis is the MathML infix constructor used to sub-divide PCDATA into separate components. This is used in the description of a multi-part number such as a rational or a complex number.
See also 4.4.2.6 Separator (sep).
<cn type="complex-polar">123<sep/>456</cn>
<cn>123</cn>
conditionThis is the MathML constructor for building conditions. A condition differs from a relation in how it is used. A relation is simply an expression, while a condition is used as a predicate to place conditions on bound variables.
You can build compound conditions by applying operators such as "and" or "or" .
See also 4.4.2.7 Condition (condition).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(apply) -> predicate
(boolean) -> predicate
<condition>
<apply><lt/>
<apply><power/><ci>x</ci><cn>5</cn></apply>
<cn>3</cn>
</apply>
</condition><apply><int/> <bvar><ci>x</ci></bvar> <condition><apply><in/><ci>x</ci><ci type="set">C</ci></apply></condition> <apply><ci type="function">f</ci><ci>x</ci></apply> </apply>
declareThis is the MathML constructor for associating default attribute values and values with mathematical objects. For example V may be an identifier declared to be a vector (has the attribute of being a vector), or V may be a name that stands for a particular vector.
The attribute values of the declare statement itself become the default attribute values of the first argument of the declare.
If there is a second argument, the first argument becomes an alias for the second argument and it also assumes all the properties of the second argument . For example, a ci identifier v, declared to be the vector (1,2,3) would appear in the type style of a vector, and would have a norm which is the norm of (1,2,3)
See also 4.4.2.8 Declare (declare).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | MathMLtype | none |
| nargs | number of arguments for an object of operator | * |
| occurrence | infix | prefix | prefix |
[(attributename=attributevalue)*](anything) -> [(attributename=attributevalue)*](anything)
[(attributename=attributevalue)*](anything,anything) -> [(attributename=attributevalue)*](anything)
(anything,anything) -> (anything)
<declare> <ci>y</ci> <apply><plus/><ci>x</ci><cn>3</cn></apply> </declare>
<declare type="vector"> <ci> V </ci> </declare>
<declare type="vector"> <ci> V </ci> <vector><cn> 1 </cn><cn> 2 </cn><cn> 3 </cn></vector> </declare>
lambdaThis is the operation of lambda calculus that constructs a function from an expression and a variable. Lambda is an n-ary function, where all but an optional domain of application and the last argument are bound variables and the last argument is an expression possibly involving those variables. The lambda function can be viewed as the inverse of function application.
For example, Lambda( x, F ) is written as \lambda x [F] in the lambda calculus literature. The expression F may contain x but the full lambda expression is regarded to be free of x. A computational application receiving a MathML lambda expression should not evaluate x or test for x. Such an application may apply the lambda expression as a function to arguments in which case any result that is computed is computed through parameter substitutions into F.
Note that a lambda expression on an arbitrary function applied to a the bound variable is equivalent to that arbitrary function. A domain of application can be used to restrict the defined function to a specific domain.
See also 4.4.2.9 Lambda (lambda).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(bvar*,anything) -> function
(domainofapp,function) -> function
(bvar+,domainofapp,anything) -> function
ForAll( F, lambda(x,F(x)) = F )
<apply><forall/>
<bvar><ci>F</ci></bvar>
<apply><eq/>
<lambda>
<bvar><ci>x</ci></bvar>
<apply><ci>F</ci><ci>x</ci></apply>
</lambda>
<ci>F</ci>
</apply>
</apply>
<lambda> <bvar><ci>x</ci></bvar> <apply><sin/><apply><plus/><ci> x </ci><cn> 3 </cn></apply></apply> </lambda>
composeThis is the MathML constructor for composing functions. In order for a composition to be meaningful, the range of the first function should be the domain of the second function, etc. . However, since no evaluation takes place in MathML, such a construct can safely be used to make statements such as that f composed with g is undefined.
The result is a new function whose domain is the domain of the first function and whose range is the range of the last function and whose definition is equivalent to applying each function to the previous outcome in turn as in:
(f @ g )( x ) == f( g(x) ).
This function is often denoted by a small circle infix operator.
See also 4.4.2.10 Function composition (compose).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(function*) -> function
ForAll( x, (f@g)(x) = f(g(x) )
<apply><forall/>
<bvar><ci>x</ci></bvar><bvar><ci>f</ci></bvar><bvar><ci>g</ci></bvar>
<apply><eq/>
<apply><apply><compose/><ci>f</ci><ci>g</ci></apply>
<ci>x</ci>
</apply>
<apply><ci>f</ci><apply><ci>g</ci><ci>x</ci></apply></apply>
</apply>
</apply>
The use of fn is deprecated. Use type="function" instead.
<apply><compose/>
<ci type="function"> f </ci>
<ci type="function"> g </ci>
<sin/>
</apply>identThe ident element represents the identity function. MathML makes no assumption about the function space in which the identity function resides. Proper interpretation of the domain (and hence range) of the identity function depends on the context in which it is used.
See also 4.4.2.11 Identity function (ident).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
function
ForAll( x, ident(x) = x )
<apply><forall/>
<bvar><ci>x</ci></bvar>
<apply><eq/>
<apply><ident/><ci>x</ci></apply>
<ci>x</ci>
</apply>
</apply>
<apply><eq/>
<apply><compose/>
<ci type="function"> f </ci>
<apply><inverse/><ci type="function"> f </ci></apply>
</apply>
<ident/>
</apply>
domainThe domain element denotes the domain of a given function, which is the set of values over which it is defined.
To override the default semantics for this element, or to associate a more specific definition, use the definitionURL and encoding attributes
See also 4.4.2.12 Domain (domain).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(function) -> set
<apply><eq/> <apply><domain/><ci>f</ci></apply> <reals/> </apply>
codomainThe codomain (range) element denotes the codomain of a given function, which is a set containing all values taken by the function. The codomain may contain additional points which are not realized by applying the the function to elements of the domain.
To override the default semantics for this element, or to associate a more specific definition, use the definitionURL and encoding attributes
See also 4.4.2.13 codomain (codomain).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(function) -> set
ForAll( y, Exists(x,y =f(x)), member(y,codomain(f)) )
<apply><eq/> <apply><codomain/><ci>f</ci></apply> <rationals/> </apply>
imageThe image element denotes the image of a given function, which is the set of values taken by the function. Every point in the image is generated by the function applied to some point of the domain.
To override the default semantics for this element, or to associate a more specific definition, use the definitionURL and encoding attributes
See also 4.4.2.14 Image (image).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(function) -> set
ForAll( x, x in image(f), ThereExists(y,f(y)=x) )
<apply><eq/> <apply><image/><sin/></apply> <interval><cn>-1</cn><cn> 1</cn></interval> </apply>
<apply><forall/>
<bvar><ci>x</ci></bvar>
<condition>
<apply><in/>
<ci>x</ci>
<apply><image/><ci>f</ci></apply>
</apply>
</condition>
<apply><in/>
<ci>x</ci>
<apply><codomain/><ci>f</ci></apply>
</apply>
</apply>domainofapplicationThe domainofapplication element is a qualifier used by a number of defined functions. It denotes the domain over which a given function is being applied. Special cases of this qualifier can be abbreviated using one of interval condition or an (lowlimit,uplimit) pair. It is constructed from a set or the name of a set.
To override the default semantics for this element, or to associate a more specific definition, use the definitionURL and encoding attributes
See also 4.4.2.15 Domain of Application (domainofapplication).
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(set) -> domain
(identifier) -> domain
<apply><int/> <domainofapplication><ci>C</ci></domainofapplication> <ci>f </ci> </apply>
<apply><int/>
<domainofapplication>
<set>
<bvar><ci>t</ci></bvar>
<condition>
<apply><in/>
<ci>t</ci>
<ci type="set">C</ci>
</apply>
</condition>
</set>
</domainofapplication>
<ci>f</ci>
</apply>piecewiseThe piecewise, piece, and otherwise elements are used to support 'piecewise' declarations of the form H(x) = 0 if x less than 0, H(x) = 1 otherwise. The piece and otherwise elements describe evaluation rules. If no rule applies or if more than one rule applies but they give different answers then the expression is undefined.
To override the default semantics for this element, or to associate a more specific definition, use the definitionURL and encoding attributes
See also 4.4.2.16 Piecewise declaration (piecewise, piece, otherwise) .
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(piece*, otherwise?) -> algebraic
(piece*, otherwise?) -> anything
ForAll( x, x in domain(f), the evaluation rules collectively produce at most one value in codomain(f) )
<piecewise> <piece><cn> 0</cn><apply><lt/><ci> x</ci> <cn> 0</cn></apply></piece> <otherwise><ci>x</ci></otherwise> </piecewise>
The value of the abs function evaluated at x can be written as:
<piecewise>
<piece>
<apply><minus/><ci>x</ci></apply>
<apply><lt/><ci> x</ci><cn> 0</cn></apply>
</piece>
<piece>
<cn>0</cn>
<apply><eq/><ci>x</ci><cn>0</cn></apply>
</piece>
<piece>
<ci>x</ci>
<apply><gt/><ci>x</ci><cn>0</cn></apply>
</piece>
</piecewise>pieceThe piece element is used to construct the conditionally defined values as part of a piecewise object.
To override the default semantics for this element, or to associate a more specific definition, use the definitionURL and encoding attributes
See also 4.4.8.1 common trigonometric functions .
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(algebraic, boolean) -> piece
(anything, boolean) -> piece
<piecewise> <piece><cn>0</cn><apply><lt/><ci> x</ci> <cn> 0</cn></apply></piece> <otherwise><ci>x</ci></otherwise> </piecewise>
otherwiseThe otherwise element is used to describe the value of a piecewise construct when none of the conditions of the associated pieces are satisfied.
To override the default semantics for this element, or to associate a more specific definition, use the definitionURL and encoding attributes
See also 4.4.8.1 common trigonometric functions .
| Name | Value | Default |
|---|---|---|
| definitionURL | a URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
(algebraic) -> otherwise
(anything) -> otherwise
<piecewise> <piece><cn> 0</cn><apply><lt/><ci> x</ci> <cn> 0</cn></apply></piece> <otherwise><ci>x</ci></otherwise> </piecewise>
quotientquotient is the binary function used to represent the operation of integer division. quotient(a,b) denotes q such that a = b*q+r, with |r| less than |b| and a*r non-negative.
See also 4.4.3.1 Quotient (quotient).
| Name | Value | Default |
|---|---|---|
| definitionURL | URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | MathMLType | integer |
(integer, integer) -> integer
ForAll( [a,b], b != 0, a = b*quotient(a,b) + rem(a,b) )
<apply><forall/>
<bvar><ci>a</ci></bvar>
<bvar><ci>b</ci></bvar>
<condition><apply><neq/><ci>b</ci><cn>0</cn></apply></condition>
<apply><eq/>
<ci>a</ci>
<apply><plus/>
<apply><times/>
<ci>b</ci>
<apply><quotient/><ci>a</ci><ci>b</ci></apply>
</apply>
<apply><rem/><ci>a</ci><ci>b</ci></apply>
</apply>
</apply>
</apply><apply><quotient/> <ci> a </ci> <ci> b </ci> </apply>
<apply> <quotient/> <cn>5</cn> <cn>4</cn> </apply>
factorialThis is the unary operator used to construct factorials. Factorials are defined by n! = n*(n-1)* ... * 1
See also 4.4.3.2 Factorial (factorial).
| Name | Value | Default |
|---|---|---|
| definitionURL | URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | MathMLType | integer |
(algebraic) -> algebraic
(integer) -> integer
ForAll( n, n \gt 0, n! = n*(n-1)! )
<apply><forall/>
<bvar><ci>n</ci></bvar>
<condition><apply><gt/><ci>n</ci><cn>0</cn></apply></condition>
<apply><eq/>
<apply><factorial/><ci>n</ci></apply>
<apply><times/>
<ci>n</ci>
<apply><factorial/>
<apply><minus/><ci>n</ci><cn>1</cn></apply>
</apply>
</apply>
</apply>
</apply>
0! = 1
<apply><eq/>
<apply><factorial/><cn>0</cn></apply>
<cn>1</cn>
</apply>
<apply><factorial/> <ci>n</ci> </apply>
divideThis is the binary MathML operator that is used indicate the mathematical operation a "divided by" b.
See also 4.4.3.3 Division (divide).
| Name | Value | Default |
|---|---|---|
| definitionURL | URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | MathMLType | real |
(algebraic, algebraic) -> algebraic
(complex, complex) -> complex
(real, real) -> real
(rational, rational) -> rational
(integer, integer) -> rational
Division by Zero error
<apply><forall/>
<bvar><ci>a</ci></bvar>
<apply><eq/>
<apply><divide/><ci> a </ci><cn> 0 </cn></apply>
<notanumber/>
</apply>
ForAll( a, a!= 0, a/a = 1 )
<apply><forall/>
<bvar><ci>a</ci></bvar>
<condition><apply><neq/><ci>a</ci><cn>0</cn></apply></condition>
<apply><eq/>
<apply><divide/><ci>a</ci><ci>a</ci></apply>
<cn>1</cn>
</apply>
</apply>
<apply><divide/> <ci> a </ci> <ci> b </ci> </apply>
maxThis is the n-ary operator used to represent the maximum of a set of elements. The elements may be listed explicitly or they may be described by a domainofapplication, for example, the maximum over all x in the set A. The domainofapplication is often abbreviated by placing a condition directly on a bound variable.
See also 4.4.8.1 common trigonometric functions .
| Name | Value | Default |
|---|---|---|
| definitionURL | URI identifying the definition | APPENDIX_C |
| encoding | CDATA | MathML |
| type | MathMLType | real |