The Objectives Report breaks down the task of transmitting a mathematical
object into a number of conceptual stages which pass through different layers of representation: see the figure below. This layered
model permits a clear discussion of the transformations which must
be effected when converting between an application specific representation
and the linear OpenMath encoding.



We now explain briefly the differences between these various layers but
emphasize that this model is for conceptual convenience in describing and
defining OpenMath: an implementor is not obliged to create instances of an
object at each layer but only to ensure that the overall encoding and
decoding processes are correct. OpenMath is designed so that it is always
possible to map downwards from one layer to the next.
- Object from the point of view of OpenMath this contains a maximum
of semantic and structural information. Whether an Object can be
lifted to something equivalent in an application naturally depends on the
particular object and application.
- Expression this contains full mathematical structural
information but no detailed semantics. The lifting of an Expression
to an Object may include a degree of semantic checking (for instance,
checking the types of arguments to functions) but should allow objects such
as
to pass. The actual amount of checking to be performed is still
undecided.
- Tree this is a pure data-structure with no explicit
mathematical structure or semantics. When lifting a Tree
some ``syntax checking'' should be performed; again the degree of checking
at this stage is not yet decided and may depend on what information is held
in a namespace. Originally this layer was called Recursive
Data-Structure but having decided that the data-structure is to be a tree
we now use the shorter name.
- Encoding this is a linearization of the Tree. Lifting of an
Encoding to a Tree must necessarily include checks for the integrity of the
Tree.
The definition of OpenMath can now be split into three relatively independent
parts: the definition of an Object, the definition of a Tree, and
definition of one or more Encodings. Together with these definitions we
have determined exactly how to interconvert between the layers. Currently,
we use some auxiliary concepts (namespaces, conversations, and phrase
books) which we describe below.
Design Goals
The OpenMath Project
Overview of the Current Design