The OpenMath Layers


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.

previous Design Goals

up The OpenMath Project

next Overview of the Current Design