A. Strotmann: Proposal presented at 5th OpenMath Workshop, Bath.

OpenMath Layer: Expression

Note: I'm still trying to find a good name for the components that make up the expression layer. The problem is that all the "good" names I can think of carry specific meaning in some area of mathematics and computer science or other. Possiblities include "fundamental concepts", "class", "fundamental mathematical structures".

For want of a better alternative so far, I reluctantly call them "category" here.

An SGML example

     <apply>
       <function  context=user> f </function>
     <to>
       <constant  context=RealTrig> π </constant>
     <to>
       <constant  context=arith> 234 </constant>
     </apply>

Basic "Categories"

Constructor "Categories"

Scope, binding, structure sharing

Expression and Data Structure

An example ("X+1000"):

expression =        application
                    /   |   \
                   /    |    \
                  fn   var   dom.el.
                  +     x     1000


data-structure=       -------   (i.e. non-homogeneous sequence)
                     /   |   \
                    /    |      \
                   /     |         \
               symb      symb       -----------
              /  |        /\        /  |   \   \
             /   |       /  \      /   |    \    \
           ctx  entry  ctx entry symb int32 bool vector-of-int32
                                 / |             [.|.|.|.|...]
                                /  |
                               ctx entry

[where "ctx" is short for "context"; a 'bigint' is used for 
 illustration purposes]
i.e. the data structure level provides more detail.

Interpretation Rules govern the mapping from data-structure to expression level.

Representation Rules govern the mapping from expression to data structure.

Example representation rules:

     apply(f, x1, x2, ... xn)  -->  (f x1 x2 ... xn) 
     symbol                    -->  triple(name, context, category)
where (a b ... c) is a shorthand notation for a non-homogeneous sequence with elements a,b,...,c .

Example interpretation rules are the inverse mappings of above rules.

NOTE: Streamlined implementations may not need to generate separate data structures for these levels. The separate layers may either be realized in a single complex data structure with separate fields for the components of each layer, or the data structures and expressions may in fact be "real" only by virtue of a calling graph of the encoding API functions.

Rules of Composition

Examples:

APPLICATION of FUNCTION to DOMAIN ELEMENT yields DOMAIN ELEMENT

APPLICATION of FUNCTION to DOMAIN yields DOMAIN

APPLICATION of DOMAIN to DOMAIN ELEMENT yields DOMAIN ELEMENT

APPLICATION of PREDICATE to DOMAIN ELEMENTS yields TRUTH VALUE

Some Reasons

Some Issues

Is it really necessary... Other issues include: Some guidelines that might help decide:
This page is part of the OpenMath Web archive, and is no longer kept up to date.