The Theorema Language : Implementing Object-and Meta-Level Usage of Symbols *

Interactive software systems that are designed to offer proving and computing facilities at the same time face the problem of evaluation of formulae: In the situation of computing, a formula given to the system should be evaluated whereas in the situation of proving the formula should be kept unevaluated. Also, in the Theorema project we use the same language (Mathematica 3.0) as the working language for defining new concepts, stating properties of these concepts, proving the properties, computing values using the new knowledge, etc. and as the programming language for implementing the system's provers, evaluators, etc. For this, a similar conflict of evaluating symbols in one situation and keeping them unevaluated in another situation has to be resolved. In order to cope with these two problems, when an expression is input to the system, Theorema clearly distinguishes between the metaand the object-level (formula level) of the language. On the formula level no evaluations whatsoever happen whereas on the meta-level both Mathematica built-in rules as well as Theorema-defined rules are used for evaluation of expressions. Moreover, a mechanism is provided that decides automatically whether a symbol is to be interpreted in its object-levelor in its meta-level context. We will show how the capabilities of Mathematica 3.0 are used to implement this system behavior in such a fashion that new functions added to the system can easily be integrated into this concept.

[1]  A. Hayes Mathematica: A system for doing mathematics by computer , 1993, The Mathematical Gazette.