Meta http://www.openmath.org/OpenMath/CDs/Meta 31/Dec/1997 official The content dictionary (CD) entries described using their own definitions Constructor CDName The name of the content dictionary being defined. This name must be unique over the entire OpenMath community. This is insured by having a repository of such definitions at the Web site of the OpenMath steering committee (http://www.openmath.org). The name is composed of an alphabetic character followed by any number of alphanumeric characters. No special symbols are allowed. Unary, Formal string -> constructor CD CDURL The URL where the main definition of the content dictionary can be found. Follows standard URL syntactic rules Unary, Formal string -> constructor CD CDExpire The expiration date of the definition of the content dictionary. It is to be understood as an indication of possible change to the dictionary. I.e. the content dictionary will not be changed until the given date. It is in the format DD/MMM/YYYY. DD and YYYY are integers, MMM is in the standard 3-letter English encoding. If absent, this means that there is no information and/or guarantees about when the definition is going to be changed. Unary, Formal string -> constructor CD CDStatus A keyword identifying the status of the CD, which is one of the following: official - A CD approved by the OpenMath steering committee. obsolete - A CD which was in use before, has been replaced by a newer version or is no longer useful. It is kept around for purposes of understanding old objects. experimental - A CD being tested/constructed, posted for the purpose of dissemination (alpha tests and beta tests of CDs). private - An approved CD which is used by a smaller, private, community of users of OpenMath. Unary, Formal string -> constructor CD CDUses A list of names of content dictionaries used or needed by the definition of this dictionary. Any reference to a name which is in another CD should be also explicitly stated here. I.e. all the inheritance information comes from the CDs listed here. Nary, Formal sequence( string ) -> constructor CD Description A description, in ascii or any other typesetting or page layout format, intended for human comprehension (please remark!). References are the only other structure which could be present inside a Description. The entire CD and each name defined require a Description Unary, Human string -> constructor CD, CDDefinition CDDefinition The complete description of a name defined in the content dictionary. This will normally include entries for Name (required) Description (required) FunctorClass (optional) CDAttributes (star) Inheritance (optional) Signature (star) CDDefaults (star) PartOf (optional) CMP (star) which are to be interpreted according to this definition, or any other entries with different names, which are tolerated. Nary, Formal structure -> constructor CD Name The name of the operator, function or constant (a constant being a null-ary operator) being defined. This name should be unique within the Content Dictionary, except for the case when defining operators with different arity. In any case, Name and arity should be unique inside a CD. This name may be referred alone as NAME when it is not ambiguous (i.e. none of the needed content dictionaries include a similar name) or it can be referenced by the concatenation of the CD name and the name, i.e. CDNAME::NAME. When a name is used without a CD descriptor, and it appears in more than one CD, its definition will be assumed to come from the the first CD which defines it. (Notice that the CDs used for describing an OM object are ordered). Unary, Formal string -> constructor CDDefinition Name The same as above, but defining two names. This is only necessary when a particular encoding has a clash of names, and an alternative name should be used. Both names defined are for all purposes identical. E.g. "+", plus is needed for the arithmetic operator for sum, since "+" is not a valid SGML tag. Binary, Formal (string, string) -> constructor CDDefinition FunctorClass The semantic class/category of the object being defined. The semantic classes/categories describe the use or uses which the object may have. If more than one is present, then it is assumed that the object belongs to all these classes. The classes are divided in three groups: Arity: Unary Binary 3ary, 4ary, ... Nary (variable number of arguments) Interpretation: Formal (precise syntactic rules apply) Human (intended for human comprehension) Operator Class: Operator (used mainly in infix, prefix or postfix notation) Function (used mainly in standard functional notation) Constant (a 0-ary function) Constructor TransparentOperator Nary, Formal sequence( string ) -> constructor CD, CDDefinition CDAttributes This entry describes 3 types of attributes of a given name. The first type of attributes are mathematical in nature, and refer to properties of the name. Valid attribute names are Associative Commutative NonCommutative Distributive CharacteristicX The second type refers to the errors that the particular function/operator may produce if evaluated (the operator does not necessarily need to evaluate to be conformant). These are mathematical errors, or domain limitation errors, i.e. errors which have to do with the mathematical object itself. An error normally indicates that some system detected that the object is mathematically invalid. The syntax of the errors is a constructor with two arguments. The first argument is an OpenMath symbol, which is catalogued here. To identify them in this context, we surround them with the function "Error". E.g. Error( "division by zero" ) Error( "matrix is singular" ) Error( "logarithm function has a singularity at 0" ) The third type of attributes consists of the transparent operators/functions which have a special meaning for the name. Presently we contemplate 4 transparent operators: TypeSet - give typesetting instructions SpeechSynth - give instructions on how to read the object Parenthesize - surround the expression with parenthesis for display and evaluation purposes HyperLink - standard html pointer to another html page Definitions of these transparent operators can be found in http://www.inf.ethz.ch/personal/gonnet/ContDict/TypeSet http://www.inf.ethz.ch/personal/gonnet/ContDict/SpeechSynth http://www.inf.ethz.ch/personal/gonnet/ContDict/Parenthesize http://www.inf.ethz.ch/personal/gonnet/ContDict/HyperLink Transparent operators/functions are functions which for all mathematical purposes are identities on the first argument. E.g. for all mathematical purposes, TypeSet( x, ....) is identical to x. It is expected, although not required, that systems which evaluate mathematically such expressions will return their results with the same transparent operator envelope around them. Nary, Formal sequence( Union( string, function ) ) -> constructor CD, CDDefinition Inheritance This descriptor is needed when the name which is being defined in this dictionary already exists in another content dictionary which is required (in the "CDUses" list). The list of valid replacement semantics is: Augments ReplacesAll Example of Augments: The Basic CD defines the sin function over the reals. Lets assume that another CD, called C, extends the definition of sin to the complex. Sin in C is defined with inheritance "Augments". This extension does not repeat all the information in Basic, it just adds the complex-valued definition. Then referring to "sin" refers to the real-valued function, and referring to "C::sin" refers to the real-valued and complex-valued function. Example of ReplacesAll: The Basic CD defines the "*" operator to be commutative multiplication. Lets assume that another CD, called NC wants to define non-commutative multiplication. "*" in NC is defined with inheritance "ReplacesAll". Then referring to "*" will refer to the basic commutative operator, and referring to "NC::*" will refer exclusively to the non-commutative (ignoring all properties from Basic) definition. Unary, Formal string -> constructor CD, CDDefinition CDDefaults This entry defines the values of the transparent operators that will be used by default. It uses the same syntax as CDDescription. Nary, Human string -> constructor CD, CDDefinition PartOf This entry defines the constructors where the Name can appear. This is particularly suitable for SGML structures and for mathematical typed structures. If absent, no constraint of inclusions are required/imposed. Nary, Formal sequence(string) -> constructor CDDefinition Signature Defines the type of the arguments. It also defines the type of the result for the cases where the function/operator is expected to compute. The syntax requires the arguments to appear first (surrounded by parenthesis if more than one), and then the symbol '->' and then the type of the result. The type of the arguments or result have the same syntax. A type expression is an expression formed from basic types and function/operators over type expressions. The list of valid atomic type names is: algebraic array boolean complex equation float function integer negative positive rational real set string structure symbol symbolic anything The list of valid constructors for types includes all the function/operators included in the content dictionary plus the special type constructions: Intersection( type, type, ... ) List( type ) Non( type ) Sequence( type, type, ... ) Set( type ) Union( type, type, ... ) For constructors, where the result is the structure itself, the result type can be specified as 'constructor'. Unary, Formal (symbolic, symbolic) -> constructor CDDefinition CMP Commented Mathematical Property. This describes an equation as first argument which is verified by the operator/function being defined. This is a formal descriptor, although its main use will be for clarification of the properties of the object being described, or as a catalogue of useful mathematical properties. The second (optional) argument is a verbal description of the property. Properties defined within an CDDefinition should refer exclusively to the function/operator being defined there. Properties defined within an CD can refer to any of the function operators defined in the content dictionary. In all cases, function/operators defined in "CDUses" dictionaries can be used. Unary, Binary (equation, string) -> constructor CD, CDDefinition CDExamples One or many examples of expressions written in OpenMath (SGML style). These are most likely preceded by comments (in SGML format, i.e. ) explaining the example, and possibly showing the same expression in other languages, like TeX or a CA language. The example can contain any arbitrary SGML provided that all the tags are simple and explicit. Nary, Human string -> constructor CD, CDDefinition