Mathematical Markup Language (MathML) Version 2.0
C Content Markup Validation Grammar
D Content Element Definitions
D.1 About Content Markup Elements
D.1.1 The Structure of an MMLdefinition.
D.2 Definitions of MathML Content Elements
D.2.1 Leaf Elements
D.2.2 Basic Content Element
D.2.3 Arithmetic, Algebra and Logic
D.2.4 Relations
D.2.5 Calculus
D.2.6 Theory of Sets
D.2.7 Sequences and Series
D.2.8 Trigonometry
D.2.9 Statistics
D.2.10 Lineary Algebra
E Document Object Model for MathML (Non-normative)
Every content element must have a mathematical definition associated with it in some form. The purpose of this appendix is to provide defaultdefinitions. (An index to the definitions is provided later in this document.) For this release of MathML definitions have not been restricted to any one format. There are several reasons for allowing flexibility at this time.
The feasibilty of implementing a particular object in a particular computational system and the details of particular implementations have very little to do with the requirement that there actually be a mathematical definition. An author's decision to use content elements is a decision to work with defined objects. The definitions 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 to be an elaborate new function or operation as defined in some recent research paper. The primary role of MathML content elements is to provide a mechanism for recording the fact that a particular structure has a particular mathematical meaning. If a definition is implemented in a computational system, this is a bonus.
Of course, default definitions and semantics should be chosen to be as useful as possible. Where possible they should be already implemented or easy to implement and all other things being equal, an author would be well advised to use a definition that is in common use. This is no different from noting that most well written mathematical communications (in any format) benefit substantially from the author's use of widely used and understood terms.
A requirement that there be a definition is also very different from a requirement that a definition be provided in some specific manner. Before requiring a particular approach to definitions one needs to consider such issues as:
In order to leave open the discussion of such fundamental issues we have
deliberately limited the support for new or author defined definitions to
support for specifying an appropriate
definitionURL
. The format of the content of that URL
is unspecified. It might be the URL of a mathematical paper whose whole
purpose is to define a new operator, or even a simple reference to a
traditional text. If the author's mathematical operator matches exactly
with an operator in a particular computational system, an appropriate
definition might be a MathML semantics
element
establishing a correspondence between two encodings. Whatever is chosen,
the only essential feature is that the definition be provided.
This 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 international 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 and this is being used as input to ongoing discussions underway with the OpenMath Consortium aimed at ensuring that the OpenMath encodings will be capable of conveying the necessary information.
Each MathML element is described using an XML format. 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.CDATA
defining a rational
number into two parts in a manner that is easily parsed by an XML
application. These objects are refered to as
punctuation.lambda
element is actually
a constructor which constructs a function definition from
a list of variables and an expression, while the
fn
element is a constructor that, in
effect, sets the type of an object to function and if necessary,
provides an external definition. Any use of apply produces an object
of type apply
whose sub-type is determined by the first
operand and its properties. The signature of a constructor indicates
the type of its sub-elements and the type (and sometimes subtype) of
the resulting object.apply
or
reln
. Functions are classified according to how they are
used. For example the empty <sin/>
element
represents the unary mathematical function sine. In every
case, element attributes may be used to further qualify the
object. The <plus/>
element is an nary
operator. The result of using a function or operator is an expression
which represents an object in a certain algebraic domain.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 they also appear
explicitly in the signature.<apply>
. Modifiers modify the 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 and parameterized types on the right..
The syntax used for signatures is of the general form:
[<attribute name>=<attributevalue>]( <list of argument types> ) --> <mathematical result type>(<mathematical subtype>)The MMLattributes, if any, appear in the form
<attribute name>
= <attribute value>
. They are separated notationally from the
rest of the arguments by square braces. 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>)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 which respresents a sum. The type of the resulting expression depends on the types of the operands, and the values of the MathML attributes.
value
or
approx
(approximation) element which contains a
MathML description of this particular value. More elaborate conditions
on the object are expressed using the MathML syntax.
<cn>
<MMLdefinition> <name> cn </name> <description> A numerical constant. The mathematical type of number is given as an attribute. The default type is "real". Numbers such as rational, complex or real, require two parts for a complete specification. The parts of such a number are separated by an empty "sep" element. There are a number of pre-defined constants including: π &Exponential; &ComplexI &true; &false; &NaN; the properties of some of which are outlined below. The &NaN; is IEEE's "Not a Number", as defined in IEEE 854 standard for Floating point arithmetic. </description> <functorclass> constant </functorclass> <MMLattribute> <name> type </name> <value> integer | rational | complex-cartesian | complex-polar | real </value> <default> real </default> </MMLattribute> <MMLattribute> <name> base </name> <value> positive_integer </value> <default> 10 </default> </MMLattribute> <signature> [type=integer](numstring) -> constant(integer) </signature> <signature> [base=basevalue](numstring) -> constant(integer) </signature> <signature> [type=rational](numstring,numstring) -> constant(rational) </signature> <signature> [type=complex-cartesian](numstring,numstring) -> constant(complex) </signature> <signature> [type=rational](numstring,numstring) -> constant(rational) </signature> <signature> [type=real](π) -> constant(real) </signature> <signature> [definition](numstring,numstring) -> constant(userdefined) </signature> <signature> (γ) -> constant</signature> <example> <cn> 245 </cn> </example> <example> <cn type="integer"> 245 </cn> </example> <example> <cn type="integer" base="16"> A </cn></example> <example> <cn type="rational"> 245 <sep> 351 </cn> </example> <example> <cn type="complex-cartesian"> 1 <sep/> 2 </cn> </example> <example> <cn> 245 </cn> </example> <property> <approx> <cn> π </cn> <cn> 3.141592654 </cn> </approx></property> <property> <approx> <cn> γ </cn> <cn> .5772156649 </cn> </approx> </property> <property> <reln><identity/> <cn>ⅈ </cn> <apply><root><cn>-1</cn><cn>2</cn></apply> </reln> </property> <property> <reln><approx> <cn> ⅇ </cn><cn>2.718281828 </cn> </reln> </property> <property> <apply><forall/> <bvar><ci type=boolean>p</ci></bvar> apply><and/> <ci>p</ci><cn>&true;</cn></apply> <ci>p</ci> </apply> </property> <property> <apply><forall/> <bvar><ci type=boolean>p</ci></bvar> <apply><or/> <ci>p</ci><cn>&true;</cn></apply> <cn>&true;</cn> </apply> </property> <bvar><ci type=boolean>p</ci></bvar> <apply><or/> <ci>p</ci><cn>&true;</cn></apply> <cn>&true;</cn> </apply> </property> <property> <identity> <apply><not/><cn> &true; </apply> <cn> &false; </cn> </identity> </property> <property> <reln><identity/> <cn base="16"> A </cn> <cn> 10 </cn> </reln> </property> <property> <reln><identity/> <cn base="16"> B </cn> <cn> 11 </cn> </reln></property> <property> <reln><identity/> <cn base="16"> C </cn> <cn> 12 </cn> </reln></property> <property> <reln><identity/> <cn base="16"> D </cn> <cn> 13 </cn> </reln></property> <property> <reln><identity/> <cn base="16"> E </cn> <cn> 14 </cn> </reln></property> <property> <reln><identity/> <cn base="16"> F </cn> <cn> 15 </cn> </reln></property> </MMLdefinition>
<ci>
<MMLdefinition> <name> ci </name> <description> A symbolic name constructor. The type attribute can be set to any valid MathML type. </description> <functorclass> constructor , unary </functorclass> <MMLattribute> <name> type </name> <value> constant | matrix | set | vector | list | MathMLtype </value> <default> real </default> </MMLattribute> <signature> ({string|mmlpresentation}) -> symbol(constant) </signature> <signature> [type=MathMLType]({string|mmlpresentation}) -> symbol(MathMLType) </signature> <example><ci> xyz </ci> </example> <example><ci> type="vector"> V </ci> </example> </MMLdefinition>
<apply>
<MMLdefinition> <name> apply </name> <description> This 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.) </description> <functorclass> constructor , nary </functorclass> <signature> (function,anything*) -> application </signature> <example><apply><plus/><ci>x</ci><cn>1</cn></apply></example> <example><apply><sin/><ci>x</ci></apply></example> </MMLdefinition>
<reln>
<MMLdefinition> <name> reln </name> <description> This is the MathML 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. </description> <functorclass> constructor </functorclass> <signature> (function,anything*) -> reln </signature> <example><reln><and/><ci>P</ci><ci>Q</ci></reln></example> <example><reln><lt/><ci>x</ci><ci>y</ci></reln></example> </MMLdefinition>
<fn>
<MMLdefinition> <name> fn </name> <description> This is the MathML constructor for building new function names. The "name" can be a general MathML content element. It identifies that object as "usable" in a function context. By setting its definitionURL value, you can associate it with a particular function definition. Use the MathML Declare to associate a name with a lambda construct. </description> <MMLattribute> <name>definitionURL</name> <value> URL </value> <default> none </default> </MMLattribute> <functorclass> constructor </functorclass> <signature> (anything) -> function </signature> <signature> [definitionURL=functiondef](anything) -> function(definitionURL=functiondef) </signature> <example><fn><ci>F</ci></fn></example> <example><fn definitionURL="http://www.w3c/..."> <lt/><ci>G</ci></fn> </example> <!--Declaring Id to be the identity function.--> <example> <declare><fn><ci>Id</ci></fn><lambda><ci>x</ci><ci>x</ci></declare> </example> </MMLdefinition>
<interval>
<MMLdefinition> <name> interval </name> <description> This is the MathML constructor element for building an interval on the real line. While an interval could be expressed by combining relations appropriately, they occur explicitly because of their frequence of occurrence in common use. </description> <MMLattribute> <name>type</name> <value> closed | open | open-closed | closed-open </value> <default> closed </default> </MMLattribute> <functorclass> constructor , binary </functorclass> <signature> [type=intervaltype](expression,expression) -> interval </signature> <example><reln><and/><ci>x</ci><cn>1</cn></reln></example> <example><reln><lt/><ci>x</ci></reln></example> </MMLdefinition>
<inverse>
<MMLdefinition> <name> inverse </name> <description> This 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 make it one-sided. </description> <MMLattribute> <name>definitionURL</name> <value> CDATA </value> <default> none </default> <!--none corresponds to using the default MathML definition ...--> </MMLattribute> <functorclass> operator, unary </functorclass> <signature> (function) -> function </signature> <signature> [definitionURL=URL](function) -> function(definition) </signature> <example><apply><inverse/><sin/></apply></example> <example> <apply> <inverse definitionURL="www.w3c.org/MathML/Content/arcsin"/> <sin/> </apply> </example> <property><apply><forall/> <bvar><ci>y</ci></bvar> <apply><sin/> <apply> <apply><inverse/><sin/></apply> <ci>y</ci> </apply> </apply> <value><ci>y</ci></value> </apply> </property> <property> <apply> <apply><inverse/><sin/></apply> <apply> <sin/> <ci>x</ci> </apply> </apply> <value><ci>x</ci></value> </property> <property>F(inverse(F)(y))<value>y</value></property> </MMLdefinition>
<sep>
<MMLdefinition> <name> sep </name> <description> This is the MathML infix constructor used to sub-divide PCDATA into separate components. for example, this is used in the description of a multipart number such as a rational or a complex number. </description> <functorclass> punctuation </functorclass> <example><cn type="complex-polar">123<sep/>456</cn></example> <example><cn>123</cn></example> </MMLdefinition>
<condition>
<MMLdefinition> <name> condition </name> <description> This 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 a conditions on a bound variables. For a compound condition use relations or apply operators such as "and" or "or" or a set of relations). </description> <functorclass> constructor, unary </functorclass> <signature> ({reln|apply|set}) -> predicate </signature> <example> <condition> <reln><lt/> <apply><power/> <ci>x</ci><cn>5</cn> </apply> <cn>3</cn> </reln> </condition> </example> </MMLdefinition>
<declare>
<MMLdefinition> <name> declare </name> <description> This is the MathML constructor for redefining the properties and values with mathematical objects. For example V may be a name delcared to be a vector, or V may be a name which stands for a particular vector. The attribute values of the declare statement are assigned as the corresponding default attribute values of the first object. </description> <functorclass> modifier , (unary | binary) </functorclass> <MMLattribute> <name>definitionURL</definition> <value> Any valid URL </value> </MMLattribute> <MMLattribute> <name>type</name><value> MathMLType </value> </MMLattribute> <MMLattribute> <name>nargs</name><value> number of arguments for an object of type fn </value> </MMLattribute> <signature> [attributename=attributevalue](anything) -> anything(attributevalue) </signature> <!-- The two argument form updates the properties of the first object to be those of the second. The attribute values override the properties of the "value". --> <signature> [attributename=attributevalue](anything,anything) -> anything(attributevalue) </signature> <example><reln><and/><ci>x</ci><cn>1</cn></reln></example> <example><reln><lt/><ci>x</ci></reln></example> </MMLdefinition>
<lambda>
<MMLdefinition> <name> lambda </name> <description> The operation of lambda calculus that makes a function from an expression and a variable. The definition at this level uses only one variable. Lambda is a binary function, where the first argument is the variable and the second argument is a the expression. Lambda( x, F ) is written as \lambda x [F] in the lambda calculus literature. The lambda function can be viewed as the inverse of function application. Although the expression F may contain x, the lambda expression is interpreted to be free of x. That is, the x variable is a variable local to the environment of the definition of the function or operator. Formally, lambda(x,F) is free of x, and any substitutions, evaluations or tests for x in lambda(x,F) should not happen. A lambda expression on an arbitrary function applied to a simple argument is equivalent to the arbitrary function. E.g. lambda(x, f(x)) == f. This is a common shortcut. </description> <functorclass> Nary , Constructor </functorclass> <property> <lambda><ci>x</ci> <apply><fn><ci>F</ci></fn><ci>x</ci></apply> </lambda> <value> <fn><ci>F</ci></fn> </value> </property> <!-- Constructing a variant of the sine function --> <example> <lambda> <ci> x </ci> <apply><sin/> <apply><plus/> <ci> x </ci> <cn> 3 </cn> </apply> </lambda> </example> <!-- the identity operator --> <example> <lambda><ci> x </ci> <ci> x </ci> </lambda> </example> <property> <reln><identity/> <lambda><ci>x</ci> <apply><fn><ci>F</ci></fn><ci>x</ci></apply> </lambda> <fn><ci>F</ci></fn> </reln> </property> <MMLdefinition>
<compose/>
<MMLdefinition> <name> compose </name> <description> This is the MathML constructor for composing functions. In order for a composition to be meaningful, the range of the first function must be the domain of the second function, etc. . 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. </description> <functorclass> Nary , Operator </functorclass> <signature> (fn*) -> fn </signature> <example> <apply><compose/> <fn><ci> f </ci></fn> <fn><ci> g </ci></fn> </apply></example> <property> <apply><forall> <bvar><ci>x</ci></bvar> <reln><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> </reln> </apply> </property> </MMLdefinition>
<ident/>
<MMLdefinition> <name> ident </name> <description> This is the MathML constructor for the identity function. This function has the property that f( x ) = x, for all x in its domain. </description> <functorclass> Nary , Operator </functorclass> <signature> (symbol) -> symbol </signature> <example> <apply><ident/> <ci> f </ci> <ci> x </ci> </apply> </example> <property> <apply><forall> <bvar><ci>x</ci></bvar> <reln><eq/> <apply><ident/> <ci>f</ci> <ci>x</ci> </apply> <ci>x</ci> </reln> </apply> </property> </MMLdefinition>
<quotient/>
<MMLdefinition> <name> quotient </name> <description> Integer quotient, the result of integer division. For arguments a and b, it returns q, where a = b*q+r, |r| < |b| and a*r ≥ 0 (or the sign of r is the same as the sign of a). </description> <functorclass> Binary, Function </functorclass> <signature> (integer, integer) -> integer </signature> <signature> (symbolic, symbolic) -> symbolic </signature> <!-- ForAll(bvar(a,b),identity(a ,b*Quotient(a,b) + Remainder(a,b)) --> <property> <apply><forall/> <bvar><ci>a</ci></bvar> <bvar><ci>b</ci></bvar> <reln/><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> <reln> </apply> </property> <!-- 1 = quotient(5,4) --> <property> <apply><identity/> <apply><quotient/> <ci>5</ci> <ci>4</ci> </apply> <ci>1</ci> <apply> </property> </MMLdefinition>
<exp/>
<MMLdefinition> <name> exp </name> <description> The exponential function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.2] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property><reln><eq/> <apply><exp/><cn>0</cn></apply> <cn>1</cn></reln> </property> <property><apply><identity/> <apply><exp/><ci>x</ci></apply> <apply><power/> <cn>ExponentialE;</cn><ci>x</ci> </apply> </apply> </property> <property> exp(x) = limit( (1+x/n)^n, n, infinity ) </property> </MMLdefinition>
<factorial/>
<MMLdefinition> <name> factorial </name> <description> This element is used to construct factorials as in n! = n * (n-1) * (n-2 ) ... 1 . </description> <functorclass> Unary , function </functorclass> <signature> ( algebraic ) -> algebraic </signature> <example> <apply><factorial/><ci>n</ci></apply> </example> <!-- for all n > 0, n! = n*(n-1)! --> <property><apply><forall/> <bvar><ci>n<ci></bvar> <condition> <reln><gt/><ci>n</ci><cn>0</cn></reln> </condition> <reln><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> </reln> </property> </MMLdefinition>
<divide/>
<MMLdefinition> <name> divide </name> <description> The MathML operator that is used to construct a "divided by" b. If a and b are from an algebraic domain with a non-commutative times then this is defined as a * (b)^(-1). The result is from the same algebraic domain as the operands. </description> <MMLattribute> <name> type </name> <value> non-commutative </name> <default> none </default> </MMLattribute> <functorclass> binary , function </functorclass> <signature> (complex, complex) -> complex </signature> <signature> (real, real) -> real </signature> <signature> (rational, rational) -> rational </signature> <signature> (integer, integer) -> rational </signature> <signature> (symbolic, symbolic) -> symbolic </signature> <example> <apply> <divide/> <ci> a </ci> <ci> b </ci> </apply> </example> <property> <apply><forall/> <bvar>a</bvar> <reln><eq/> <apply> <divide/> <ci> a </ci> <ci> 0 </ci> <ci>Error, Division by 0</ci> </apply> </property> </MMLdefinition>
<max/>
<MMLdefinition> <name> max </name> <description> Represent the maximum of a set of elements. The elements may be given explicitly or described by membership in some set. To be well defined, the elements must all be comparable. </description> <functorclass> function </functorclass> <signature> ( ordered_set_element * ) -> ordered_set_element </signature> <signature> ( condition ) -> ordered_set_element </signature> <example> <apply><max/><cn>2</cn><cn>3</cn> <cn>5</cn> </apply> </example> <example> <apply><max/> <condition> <bvar><ci>x</ci></bvar> <reln> <notin/> <ci> x </ci> <ci type="set"> B </ci> </reln> </condition> </apply> </example> </MMLdefinition>
<min/>
<MMLdefinition> <name> min </name> <description> Represent the minimum of a set of elements. The elements may be given explicitly or described by membership in some set. To be well defined, the elements must all be comparable. </description> <functorclass> function </functorclass> <signature> ( ordered_set_element * ) -> ordered_set_element </signature> <signature> ( condition ) -> ordered_set_element </signature> <example> <apply><min/><cn>2</cn><cn>3</cn> <cn>5</cn> </apply> </example> <example> <apply><min/> <condition> <bvar><ci>x</ci></bvar> <reln> <notin/> <ci> x </ci> <ci type="set"> B </ci> </reln> </condition> </apply> </example> </MMLdefinition>
<minus/>
<MMLdefinition> <name> minus </name> <description> The subtraction operator of a group. </description> <MMLattribute> <name> definitionURL </name> <value> URL </name> <default> none </default> </MMLattribute> <functorclass> Operator , (Unary | Binary ) </functorclass> <signature>(real,real) -> real</signature> <signature>(integer,integer) -> integer</signature> <signature>(rational,rational) -> rational</signature> <signature>(complex,complex) -> complex</signature> <!-- Note that complex-cartesian is a data input format, but the resulting data type is complex. ! --> <signature> (vector,vector) -> vector</signature> <signature>(matrix,matrix) -> matrix</signature> <signature>(real) -> real </signature> <signature>(integer) -> integer </signature> <signature>(complex) -> complex </signature> <signature>(rational) -> rational </signature> <signature>(vector) -> vector </signature> <signature>(matrix) -> matrix </signature> <example> <apply><minus/><cn>3</cn><cn>5</cn></apply> </example> <example> <apply><minus/><cn>3</cn></apply> </example> <!-- Definition of the unary operator (-1) = -( 1 ) --> <property> <reln><eq/> <bvar><ci>n</ci> <apply><minus/><cn>1</cn></apply> <cn>-1</cn> </reln> </property> </MMLdefinition>
<plus/>
<MMLdefinition> <name> plus </name> <description> The N-ary addition operator of an algebraic structure. If no operands are provided, the expression represents the additive identity. If one operand a is provided, the expression represents a. If two or more operands are provided, the expression represents the group element corresponding to a left associative binary pairing of the operands. Issues with regard to the "value" of mixed operands are left up to the target system. If the author wishes to refer to specific type coercion rules, then the definitionURL attribute should be used to refer to a suitable specification. </description> <functorclass> Operator , Nary </functorclass> <signature>(real,real) -> real</signature> <signature>(integer,integer) -> integer</signature> <signature>(rational,rational) -> rational</signature> <signature> (vector,vector) -> vector</signature> <signature>(matrix,matrix) -> matrix</signature> <signature>(complex,complex) -> complex</signature> <signature>(symbolic,symbolic) -> symbolic </signature> <signature> real -> real </signature> <signature> rational -> rational </signature> <signature> integer -> integer </signature> <signature> symbolic -> symbolic </signature> <signature>(real) -> real </signature> <signature>(integer) -> integer </signature> <signature>(complex) -> complex </signature> <signature>(rational) -> rational </signature> <signature>(vector) -> vector </signature> <signature>(matrix) -> matrix </signature> <example><apply><plus/><cn>3</cn></apply></example> <example><apply><plus/><cn>3</cn><cn>5</cn></apply></example> <example><apply><plus/><cn>3</cn><cn>5</cn><cn>7</cn></apply></example> <!-- The properties for more restricted algebraic structures should be defined using a definitionURL --> <property> +() = 0 </property> <property> +(a) = a </property> <property> ForAll(a,Commutative, a + b = b + a)</property> </MMLdefinition>
<power/>
<MMLdefinition> <name> power </name> <description> The powering operator </description> <functorclass> binary, operator </functorclass> <signature> (complex complex) -> complex </signature> <signature> (real real) -> complex </signature> <signature> (rational rational) -> complex </signature> <signature> (rational integer) -> rational </signature> <signature> (integer integer) -> rational </signature> <signature> (symbolic symbolic) -> symbolic </signature> <property> ForAll(a,Condition(a<>0),a^0=1) </property> <property> ForAll(a,a^1=a) </property> <property> ForAll(a,1^a=1) </property> <property>ForAll(a,0^0=Undefined)</property> </MMLdefinition>
<rem/>
<MMLdefinition> <name> rem </name> <description> Integer remainder, the result of integer division. For arguments a and b, it returns r, where a = b*q+r, |r| < |b| and a*r ≥ 0 (the sign of r is the same as the sign of a when both are non-zero). </description> <functorclass> binary, function </functorclass> <signature> (integer integer) -> integer </signature> <signature> (symbolic symbolic) -> symbolic </signature> <property> a = b*rem(a,b) + rem(a,b) </property> <property>rem(a,0) = Division_by_Zero</property> </MMLdefinition>
<times/>
<MMLdefinition> <name> times </name> <description> The multiplication operator of any ring. </description> <functorclass> N-ary, Operator </functorclass> <signature> (complex complex) -> complex </signature> <signature> (real, real) -> real </signature> <signature> (rational, rational) -> rational </signature> <signature> (integer, integer) -> integer </signature> <signature> (symbolic, symbolic) -> symbolic </signature> <property>ForAll(bvars(a,b),condition(in({a,b},Commutative)),a*b=b*a)</property> <property>ForAll(bvars(a,b,c),Associative,a*(b*c)=(a*b)*c), associativity </property> <property> a*1=a </property> <property> 1*a=a </property> <property> a*0=0 </property> <property> 0*a=0 </property> </MMLdefinition>
<root/>
<MMLdefinition> <name> root </name> <description> Construct the nth root of an object. The first argument "a" is the object and the second object "n" denotes the root, as in ( a ) ^ (1/n) </description> <MMLattribute> <name> type </name> <value> real | complex | principle_branch </name> <default> real </default> </MMLattribute> <functorclass> binary , function </functorclass> <signature> ( anything , symbol ) -> root </signature> <example> <apply> <root/> <ci> a </ci> <ci> n </ci> </apply> </example> <property> Forall(bvars(a,n),root(a,n) = a^(1/n)) </property> </MMLdefinition>
<gcd/>
<MMLdefinition> <name> gcd </name> <description> This represents the greatest common divisor of its arguments. </description> <MMLattribute> <name> type </name> <value> anything </name> <default> integer </default> </MMLattribute> <functorclass> Function , Nary </functorclass> <signature> [type=typevalue](typevalue*) -> typevalue </signature> <example> <apply><gcd/><cn>12</cn> <cn>17</cn></apply> </example> <property>Forall(p,q,(is(p,prime) and is(q,prime)) , gcd(p,q)=1 </property> </MMLdefinition>
<and/>
<MMLdefinition> <name> and </name> <description> This is the logical "and" operator. </description> <functorclass> function, Nary </functorclass> <signature> (boolean*) -> boolean </signature> <example> <apply><and/><ci>p</ci><ci>q</ci></apply> </example> <property> identity(true and p , p ) </property> <property> identity(p and q , q and p ) </property> </MMLdefinition>
<or/>
<MMLdefinition> <name> or </name> <description> The logical "or" operator. </description> <functorclass> Binary, Function </functorclass> <signature> (boolean,boolean) -> boolean </signature> <signature> [type=boolean](symbolic symbolic) -> symbolic </signature> <property> identity(true or p , true ) </property> ... </MMLdefinition>
<xor/>
<MMLdefinition> <name> or </name> <description> The logical "xor" operator. </description> <functorclass> Binary, Function </functorclass> <signature> (boolean,boolean) -> boolean </signature> <signature> [type=boolean](symbolic symbolic) -> symbolic </signature> <property> ...</property> </MMLdefinition>
<not/>
<MMLdefinition> <name> not </name> <description> The logical "not" operator. </description> <functorclass> Unary, Function </functorclass> <signature> (boolean) -> boolean </signature> <signature> [type=boolean](symbolic) -> symbolic </signature> <property> ... </property> </MMLdefinition>
<implies/>
<MMLdefinition> <Name> implies </Name> <description> The implies operator. This represents the construction "A implies B". </description> <functorclass> Binary, relation </functorclass> <signature> (boolean,boolean) -> boolean </signature> <property> <apply></forall> <bvar><ci>A</ci></bvar> <bvar><ci>B</ci></bvar> <reln><eq/> <apply><implies/> <ci>A</ci> <ci>B</ci> </apply> <apply><or/> <ci>B</ci> <apply><not/> <ci> A </ci> </apply> </apply> </reln> </property> </MMLdefinition>
<forall/>
<MMLdefinition> <name> forall </name> <description> The logical "For all" quantifier. </description> <functorclass> Nary, Operator </functorclass> <signature> (bvar*,condition?,(reln|apply)) -> boolean </signature> <property> ... </property> </MMLdefinition>
<exists/>
<MMLdefinition> <name> exists </name> <description> The logical "There exists" quantifier. </description> <functorclass> Nary, Operator </functorclass> <signature> (bvar*,condition?,(reln|apply)) -> boolean </signature> <property> ... </property> </MMLdefinition>
<abs/>
<MMLdefinition> <name> exists </name> <description> The absolute value of a number. </description> <functorclass> Unary, Operator </functorclass> <signature> (algebraic) -> algebraic </signature> <property> ... </property> </MMLdefinition>
<conjugate/>
<MMLdefinition> <name> conjugate </name> <description> The "conjugate" arithmetic operator used to represent the conjugate of a complex number. </description> <functorclass> Unary, Operator </functorclass> <signature> (algebraic) -> algebraic </signature> <property> ... </property> </MMLdefinition>
<eq/>
<MMLdefinition> <Name> eq </Name> <description> The equality operator. </description> <functorclass> Nary, relation </functorclass> <property> Commutative </property> <signature> (symbolic symbolic) -> boolean </signature> </MMLdefinition>
<MMLdefinition> <Name> neq </Name> <description> The notequals operator. </description> <functorclass> Nary, relation </functorclass> <property> Commutative </property> <signature> (symbolic symbolic) -> boolean </signature> </MMLdefinition>
<gt/>
<MMLdefinition> <Name> gt </Name> <description> The equality operator. </description> <functorclass> binary, relation </functorclass> <property> Commutative </property> <signature> (symbolic symbolic) -> boolean </signature> </MMLdefinition>
<lt/>
<MMLdefinition> <Name> lt </Name> <description> The inequality equality operator "<" </description> <functorclass> binary, relation </functorclass> <property> Commutative </property> <signature> (symbolic, symbolic*) -> boolean </signature> </MMLdefinition>
<geq/>
<MMLdefinition> <Name> geq </Name> <description> The inequality operator. >= </description> <functorclass> Nary, relation </functorclass> <signature> (symbolic, symbolic*) -> boolean </signature> <property> ... Commutative ? ... </property> </MMLdefinition>
<leq/>
<MMLdefinition> <Name> leq </Name> <description> The inequality operator </description> <functorclass> Nary, relation </functorclass> <property> Commutative </property> <signature> (symbolic symbolic) -> boolean </signature> </MMLdefinition>
<ln/>
<MMLdefinition> <Name> ln </Name> <description> The logarithmic function. Also called the natural logarithm. The inverse of the exponential function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.1] </Reference> </description> <functorclass> Unary, Function </functorclass> <property> Error( "logarithm has a singularity at 0" ) </property> <signature> Intersect(real,positive) -> real </signature> <signature> symbolic -> symbolic </signature> <property> ln(1) = 0 </property> <property> ln(exp(x)) = x, "for real x" </property> <property> exp(ln(x)) = x, always </property> </MMLdefinition>
<log/>
<MMLdefinition> <Name> log </Name> <description> The logarithmic function (base 10), or any any other user specified base. Also called the natural logarithm. The inverse of the exponential function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.1] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> (real,logbase) -> real </signature> <signature> symbolic -> symbolic </signature> <property> Error( "logarithm has a singularity at 0" ) </property> </MMLdefinition>
<int/>
<MMLdefinition> <Name> int </Name> <description> The definite or indefinite integral of a function or algebraic expression. There are several forms of calling sequences depending on the nature of the areguments, and whether or not it is a definite integral. </description> <functorclass> Binary , Function </functorclass> <signature> (function) -> function </signature> <signature> (algebraic,bvar) -> algebraic </signature> <signature> (algebraic,bvar,interval) -> algebraic </signature> <signature> (algebraic,bvar,condition) -> algebraic </signature> </MMLdefinition>
<diff/>
<MMLdefinition> <Name> diff </Name> <description> For expressions, this represents the derivative of its first argument evaluated at the second argument. For Unary functions (only one argument) it represents f'. </description> <functorclass> (Unary | Binary) , Function </functorclass> <signature> (algebraic,bvar) -> algebraic </signature> <property>Forall(x,diff( sin(x) , x ) = cos(x)) </property> <property>Forall(x,diff( x , x ) = 1 ) </property> <property>Forall(x,diff( x^2 , x ) = 2x) </property> <property>identity( diff(sin) , cos ) </property> </MMLdefinition>
<partialdiff/>
<MMLdefinition> <Name> partialdiff </Name> <description> For expressions, this represents the derivative of its first argument evaluated at the second argument. For Unary functions (only one argument) it represents f'. </description> <functorclass> (Binary) , Function </functorclass> <signature> (algebraic,bvar) -> algebraic </signature> <property>Forall(x,diff( sin(x*y) , x ) = cos(x)) </property> <property>Forall(x,y,diff( x*y , x ) = diff(x,x)*y + diff(y,x)*x ) </property> <property>Forall(x,a,b,diff( a + b , x ) = diff(a,x) + diff(b,x) ) </property> <property>identity( diff(sin) , cos ) </property> </MMLdefinition>
<lowlimit/>
<MMLdefinition> <Name> lowlimit </Name> <description> Construct a lower limit. Limits are used in some integrals as alternative way of describing the region over which an integral is computed. (i.e. a connected component of the real line.) </description> <functorclass> Constructor </functorclass> <signature> (anything*) -> list </signature> </MMLdefinition>
<uplimit/>
<MMLdefinition> <Name> uplimit </Name> <description> Construct a an upper limit. Limits are used in some integrals as alternative way of describing the region over which an integral is computed. (i.e. a connected component of the real line.) </description> <functorclass> Constructor </functorclass> <signature> (anything*) -> list </signature> </MMLdefinition>
<bvar/>
<MMLdefinition> <Name> bvar </Name> <description> The bvar element is the container element for the "bound variable" of an operation. For example, in an integral it specifies the variable of integration. In a derivative, it indicates which variable with respect to which a function is being differentiated. When the bvar element is used to quantifiy a derivative, the bvar element may contain a child degree element which specifies the order of the derivative with respect to that variable. The bvar element is also used for the internal variable in sums and products. </description> <functorclass> Constructor </functorclass> <signature> (symbol) -> symbol </signature> <example> <bvar><ci>x</ci></bvar></example> </MMLdefinition>
<degree/>
<MMLdefinition> <Name> degree </Name> <description> A parameter used by some MathML data-types to specify that, for example, a bound variable is repeated several times. </description> <functorclass> Constructor </functorclass> <signature> (algebraic) -> algebraic </signature> <example> <degree><ci>x</ci></degree></example> <property> ... </property> </MMLdefinition>
<set>
<MMLdefinition> <Name> set </Name> <description> Construct a set. </description> <functorclass> Nary, Constructor </functorclass> <signature> (anything*) -> set </signature> </MMLdefinition>
<list>
<MMLdefinition> <Name> list </Name> <description> Construct a list. </description> <functorclass> Nary, Constructor </functorclass> <signature> (anything*) -> list </signature> </MMLdefinition>
<union/>
<MMLdefinition> <Name> union </Name> <description> The union of two sets. </description> <functorclass> Binary, Function </functorclass> <signature> (set*) -> set </signature> </MMLdefinition>
<intersect/>
<MMLdefinition> <Name> intersection </Name> <description> The intersection of two sets. </description> <functorclass> Binary, Function </functorclass> <signature> (set set) -> set </signature> </MMLdefinition>
<in/>
<MMLdefinition> <Name> in </Name> <description> The membership testing operation (also commonly called "in" or "including"). Returns true if the first argument is part of the second argument. The second argument must be a set. </description> <functorclass> Binary, Function </functorclass> <signature> (anything, set) -> boolean </signature> </MMLdefinition>
<notin/>
<MMLdefinition> <Name> notin </Name> <description> The membership exclusion operation (also commonly called "notin" or "including"). It is defined as "not in". </description> <functorclass> Binary, Function </functorclass> <signature> (anything set) -> boolean </signature> </MMLdefinition>
<subset/>
<MMLdefinition> <Name> subset </Name> <description> Boolean function whose value is determined by whether or not one set is a subset of another. </description> <functorclass> Binary, Function </functorclass> <signature> (set*) -> boolean </signature> </MMLdefinition>
<prsubset/>
<MMLdefinition> <Name> prsubset </Name> <description> Boolean function whose value is determined by whether or not one set is a proper subset of another. </description> <functorclass> Binary, Function </functorclass> <signature> (set, set) -> boolean </signature> <property>...</property> </MMLdefinition>
<notsubset/>
<MMLdefinition> <Name> notsubset </Name> <description> Boolean function whose value is the complement of "subset". </description> <functorclass> Binary, Function </functorclass> <signature> (set, set) -> boolean </signature> <property>...</property> </MMLdefinition>
<notprsubset/>
<MMLdefinition> <Name> notprsubset </Name> <description> Boolean function whose value is the complement of "proper subset". </description> <functorclass> Binary, Function </functorclass> <signature> (set, set) -> boolean </signature> <property>...</property> </MMLdefinition>
<setdiff/>
<MMLdefinition> <Name> setdiff </Name> <description> Function indicating the difference of two sets. </description> <functorclass> Binary, Function </functorclass> <signature> (set, set) -> set </signature> <property>...</property> </MMLdefinition>
<sum/>
<MMLdefinition> <Name> sum </Name> <description> The sum element denotes the summation operator. Upper and lower limits for the sum, and more generally a domains for the bound variables are specified using uplimit, lowlimit or a condition on the bound variables. The index for the summation is specified by a bvar element. The sum element takes the attribute definition which can be used to override the default semantics. </description> <functorclass> Unary, Function </functorclass> <signature> (bvar*,((lowlimit,uplimit)|condition),algebraic) -> sum </signature> <signature> ... </signature> </MMLdefinition>
<product/>
<MMLdefinition> <Name> product </Name> <description> The product element denotes the product operator. Upper and lower limits for the product, and more generally a domains for the bound variables are specified using uplimit, lowlimit or a condition on the bound variables. The index for the product is specified by a bvar element. The product element takes the attribute definition which can be used to override the default semantics. </description> <functorclass> Unary, Function </functorclass> <signature> (bvar*,((lowlimit,uplimit)|condition),algebraic) -> product </signature> <signature> ... </signature> <signature> ... </signature> </MMLdefinition>
<limit/>
<MMLdefinition> <Name> limit </Name> <description> The sum element denotes the summation operator. Upper and lower limits for the sum, and more generally a domains for the bound variables are specified using uplimit, lowlimit or a condition on the bound variables. The index for the summation is specified by a bvar element. </description> <functorclass> Nary, Function </functorclass> <signature> (bvar*,(lowlimit | condition*),algebraic) -> limit </signature> </MMLdefinition>
<tendsto/>
<MMLdefinition> <Name> tendsto </Name> <description> tendsto is used to specify how a limit is computed. It accepts a type attribute that determines the manner in which it tends to a value. </description> <functorclass> binary, Function </functorclass> <signature> (symbol,anything) -> condition(limit) </signature> <signature> [type=direction](symbol,anything) -> condition(limit) </signature> </MMLdefinition>
<sin/>
<MMLdefinition> <Name> sin </Name> <description> The circular trigonometric function sine <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> sin(0) = 0 </property> <property> sin(integer*Pi) = 0 </property> <property> sin((Z+1/2)*Pi) = (-1)^Z, "for integer Z" </property> <property> -1 <= sin(real) </property> <property> sin(real) <= 1 </property> <property> sin(3*x)=-4*sin(x)^3+3*sin(x), "triple angle formula" <Reference> ditto, [4.3.27] </Reference> </property> </MMLdefinition>
<cos/>
<MMLdefinition> <Name> cos </Name> <description> The cosine function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> cos(0) = 1 </property> <property> cos(integer*Pi+Pi/2) = 0 </property> <property> cos(Z*Pi) = (-1)^Z, "for integer Z" </property> <property> -1 <= cos(real) </property> <property> cos(real) <= 1 </property> </MMLdefinition>
<tan/>
<MMLdefinition> <Name> tan </Name> <description> The tangent function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> tan(integer*Pi) = 0 </property> <property> tan(x) = sin(x)/cos(x) </property> </MMLdefinition>
<sec/>
<MMLdefinition> <Name> sec </Name> <description> The secant function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> sec(x) = 1/cos(x) </property> </MMLdefinition>
<csc/>
<MMLdefinition> <Name> csc </Name> <description> The cosecant function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> csc(x) = 1/sin(x) </property> </MMLdefinition>
<cot/>
<MMLdefinition> <Name> cot </Name> <description> The cotangent function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> cot(integer*Pi+Pi/2) = 0 </property> <property> cot(x) = cos(x)/sin(x) </property> </MMLdefinition>
<sinh/>
<MMLdefinition> <Name> sinh </Name> <description> The hyperbolic sine function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property>...</property> </MMLdefinition>
<cosh/>
<MMLdefinition> <Name> sinh </Name> <description> The hyperbolic sine function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property>...</property> </MMLdefinition>
<tanh/>
<MMLdefinition> <Name> tanh </Name> <description> The hyperbolic tangent function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property>...</property> </MMLdefinition>
<sech/>
<MMLdefinition> <Name> sech </Name> <description> The hyperbolic secant function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property>...</property> </MMLdefinition>
<csch/>
<MMLdefinition> <Name> csch </Name> <description> The hyperbolic cosecant function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property>...</property> </MMLdefinition>
<coth/>
<MMLdefinition> <Name> coth </Name> <description> The hyperbolic cotangent function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.3] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property>...</property> </MMLdefinition>
<arcsin/>
<MMLdefinition> <Name> arcsin </Name> <description> The inverse of the sine function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.4] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> sin(arcsin(x)) = x </property> <property> arcsin(sin(x)) = x, "for x between -Pi/2 and Pi/2" </property> </MMLdefinition>
<arccos/>
<MMLdefinition> <Name> arccos </Name> <description> The inverse of the cosine function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.4] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> cos(arccos(x)) = x </property> <property> arccos(cos(x)) = x, "for x between 0 and Pi" </property> </MMLdefinition>
<arctan/>
<MMLdefinition> <Name> arctan </Name> <description> The inverse of the tangent function. <Reference> M. Abramowitz and I. Stegun, Handbook of Mathematical Functions, [4.4] </Reference> </description> <functorclass> Unary, Function </functorclass> <signature> real -> real </signature> <signature> symbolic -> symbolic </signature> <property> tan(arctan(x)) = x </property> <property> arctan(tan(x)) = x, "for x between -Pi/2 and Pi/2" </property> </MMLdefinition>
<mean/>
<MMLdefinition> <Name> mean </Name> <description> Given k unspecified scalar arguments they are treated as equiprobable values of a random variable and the mean is computed as: mean( a1, a2, ... an) Sum( ai, i=1... n )/ n. (see section 7.7 in CRC's Standard Mathematical tables and Formulae). More generally, if the first argument is a symbol X of type "discrete_random_variable", this is the 1st moment of the random variable X and is defined as E[ X ] = Sum( x*f(x), x in S ) where the probability that x = x_i is P( x = x_i) = f(x_i) . The arguments are either all data, all discrete random variables, or all continuous random variables. The generalizes to continuous distributions and k dimenions following the definitions provided in the reference: <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [7.1.2] and [7.7] </Reference> </description> <MMLattribute> <name>type</name> <values> random_variable | continuous_random_variable | data </value> <default> data </default> </MMLattribute> <functorclass>Nary , Operator </functorclass> <signature>(scalar*) -> scalar</signature> <signature>(scalar(type=data)*) -> scalar</signature> <signature>(symbol(type=random_variable)*) -> scalar</signature> <signature>(symbol(type=continuous_random_variable)*) -> scalar</signature> <property> </property> </MMLdefinition>
<sdev/>
<MMLdefinition> <Name> sdev </Name> <description> This represents the standard deviation. Given k unspecified scalar arguments they are treated as equiprobable values of a random variable and the "standard deviation" is computed as the square root of the second moment about the mean U. sdev( a1, a2, ... an)^2 = E( (X - U)^2 ). If the first argument is a symbol X of type "discrete_random_variable", then all arguments are treated as discrete random variables, instead of data and the second moment about the mean is computed as Sum( ( x_i - U )^2 * f(x_i) , x_i in S ) as where the probability that x = x_i is P( x = x_i) = f(x_i) . The arguments are either all data, all discrete random variables, or all continuous random variables. The generalizes to continuous distributions and to k dimenions following the definitions found in: <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [7.1.2] and [7.7] </Reference> </description> <MMLattribute> <name>type</name> <values> random_variable | continuous_random_variable | data </value> <default> data </default> </MMLattribute> <functorclass>Nary , Operator </functorclass> <signature>(scalar*) -> scalar</signature> <signature>(scalar(type=data)*) -> scalar</signature> <signature>(symbol(type=discrete_random_variable)*) -> scalar</signature> <signature>(symbol(type=continuous_random_variable)*) -> scalar</signature> <property> </property> </MMLdefinition>
<variance/>
<MMLdefinition> <Name> variance </Name> <description> This computes the second centered moment, also known as the variance. Given k unspecified scalar arguments they are treated as equiprobable values of a random variable and the "variance" is computed as the second moment about the mean U. variance( a1, a2, ... an) = E( (X - U)^2 ). If the first argument is a symbol X of type "discrete_random_variable", then all arguments are treated as discrete random variables, instead of data and the second moment about the mean is computed as in section [7.7] (see reference below.) Sum( ( x_i - U )^2 * f(x_i) , x_i in S ) as where the probability that x = x_i is P( x = x_i) = f(x_i) . The arguments are either all data, all discrete random variables, or all continuous random variables. The generalizes to continuous distributions and to k dimenions following the definitions found in: <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [7.1.2] and [7.7] </Reference> </description> <MMLattribute> <name>type</name> <values> random_variable | continuous_random_variable | data </value> <default> data </default> </MMLattribute> <functorclass>Nary , Operator </functorclass> <signature>(scalar*) -> scalar</signature> <signature>(scalar(type=data)*) -> scalar</signature> <signature>(symbol(type=discrete_random_variable)*) -> scalar</signature> <signature>(symbol(type=continuous_random_variable)*) -> scalar</signature> </MMLdefinition>
<median/>
<MMLdefinition> <Name> median </Name> <description> This represents the median of n data values. If n =2k + 1 then the mode is x_k. If n = 2k then the median is (x_k + x_(k+1)/2). (Note this discription assumes that the data has been sorted into ascending order.) <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [7.7] </Reference> </description> <functorclass>Nary , Operator</functorclass> <signature>(scalar*) -> scalar</signature> </MMLdefinition>
<mode/>
<MMLdefinition> <Name> mode </Name> <description> This represents the mode of n data values. The mode is the data value that occurs with the greatest frequency. <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [7.7] </Reference> </description> <functorclass>Nary , Operator</functorclass> <signature>(scalar*) -> scalar</signature> </MMLdefinition>
<moment/>
<MMLdefinition> <Name> moment </Name> <description> This computes the ith moment of a set of data, or a random variable.. Given k scalar arguments of unspecified type, they are treated as equiprobable values of a random variable. and the "moments" are computed as the second moment about the mean U. moment( degree=i, scalar*)= E( X^i ). If the first data argument x1 is a symbol X of type "discrete_random_variable", then all arguments are treated as discrete random variables, instead of data and the ith moment about the mean is computed as Sum( (x)^i * f(x) , x in S ) where the probability that x = x_i is P( x = x_i) = f(x_i) . The arguments are either all data, all discrete random variables, or all continuous random variables. The generalizes to continuous distributions and to k dimenions following the definitions found in: <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [7.1.2] </Reference> </description> <MMLattribute> <name>type</name> <values> random_variable | continuous_random_variable | data </value> <default> data </default> </MMLattribute> <functorclass>Nary , Operator </functorclass> <signature>(degree,scalar*) -> scalar</signature> <signature>(degree,scalar(type=data)*) -> scalar</signature> <signature>(degree,symbol(type=discrete_random_variable)*) -> scalar</signature> <signature>(degree, symbol(type=continuous_random_variable)*) -> scalar</signature> </MMLdefinition>
<vector>
<MMLdefinition> <Name> vector </Name> <description> A vector is an ordered n-tuple of values representing an element of an n-dimensional vector space. The "values" are all from the same ring, typically real or complex. They may be numbers, symbols, or general algebraic expressions. The type attribute can be used to specify the type of vector that is represented. <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [2.4] </Reference> </description> <MMLattribute> <name> type </name> <value> real | complex | symbolic | anything </value> <default> real </default> </MMLattribute> <MMLattribute> <name> other </name> <value> row | column </value> <default> row </default> </MMLattribute> <functorclass> constructor , N-ary </functorclass> <signature> ((cn|ci|apply)*) -> vector(type=real) </signature> <signature> [type=vectortype]((cn|ci|apply)*) -> vector(type=vectortype) </signature> <!-- Note that there is a notational need for expressing a sequence v1, v2, ... vn with an in-explicit value of n . Also, in the following property, it should be clarified that b,v1, and v2 are all elements of the same ring. --> <property> <!-- scalar multiplication--> <apply><forall/> <bvar><ci>b</ci></bvar> <bvar><ci>v1</ci></bvar> <bvar><ci>v2</ci></bvar> <reln> <apply><times/> <ci>ci>b</ci> <vector><ci>ci>v1</ci><ci>ci>v2</ci></vector> </apply> <vector> <apply><ci>b</ci><ci>v1</ci></apply> <apply><ci>b</ci><ci>v2</ci></apply> </vector> </reln> </apply> </property> <property> vector addition </property> <property> distributive over scalars</property> <property> associativity.</property> <property> Matrix * column vector </property> <property> row vector * Matrix </property> </property> </MMLdefinition>
<matrix>
<MMLdefinition> <Name> matrix </Name> <description> This is the constructor for a matrix. The matrix is constructed from matrix rows. The type and properties spell out the normal interaction with vectors and scalars. <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [2.5.1] </Reference> </description> <MMLattribute> <name>type</name> <value>real | complex | integer | symbolic | anything </value> <default> real </default> </MMLattribute> <functorclass>constructor , N-ary </functorclass> <signature>(matrixrow*) -> matrix</signature> <signature> [type=matrixtype](matrixrow*) -> matrix(type=matrixtype)</signature> <property>scalar multiplication </property> <property>Matrix*column vector</property> <property>Addition</property> <property>Matrix*Matrix</property> </MMLdefinition>
<matrixrow>
<MMLdefinition> <Name> matrixrow </Name> <description> This is a constructor for describing the rows of a matrix. This only occurs inside a matrix. Its "type" is determined from the containing matrix element. </description> <functorclass>constructor , N-ary</functorclass> <signature>(cn|ci|apply)->matrixrow </signature> </MMLdefinition>
<determinant/>
<MMLdefinition> <Name>determinant</Name> <description>The "determinant" of a matrix. <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [2.5.4] </Reference> </description> <functorclass>Unary, operator</functorclass> <signature>(matrix)-> scalar </signature> </MMLdefinition>
<transpose/>
<MMLdefinition> <Name> transpose </Name> <description>The transpose of a matrix or vector. <Reference> CRC Standard Mathematical Tables and Formulae, editor: Dan Zwillinger, CRC Press Inc., 1996, [2.4] and [2.5.1] </Reference> </description> <functorclass>Unary, Operator</functorclass> <signature>(vector)->vector(other=row)</signature> <signature>[other=column](vector)->vector(other=row)</signature> <signature>[other=row](vector)->vector(other=column)</signature> <signature>(matrix)->matrix</signature> <property>transpose(transpose(A))= A</property> <property>transpose(transpose(V))= V</property> </MMLdefinition>
<selector/>
<MMLdefinition> <Name> selector </Name> <description> The operator used to extract sub-objects from vectors, matrices matrix rows and lists. Elements are accessed by providing one index element for each dimension. For Matrices, sub-matrices are selected by providing one fewer index items. For a matrix A and a column vector V : select( i,j , A ) is the i,j th element of A. select(i , A ) is the matrixrow formed from the ith row of A. select( i , V ) is the ith element of V. select( V ) is the sequence of all elements of V. select(A) is the sequence of all elements of A, extracted row by row. select(i,L) is the ith element of a list. select(L) is the sequence of elements of a list. </description> <functorclass>N-ary, operator)</functorclass> <signature>(scalar,scalar,matrix)->scalar</signature> <signature>(scalar,matrix)->matrixrow</signature> <signature>(matrix)->scalar* </property> <signature>(scalar,(vector|list|matrixrow))->scalar</signature> <signature>(vector|list|matrixrow)->scalar*</signature> <property> Forall( bvar(A(type=matrix)),bvar(V(type=vector)), select(A) = select(V) ) </property> <property>For all vectors V, V = vector(select(V))</property> </MMLdefinition>