Skip to content
A Mathematical Assistant System implemented in Mathematica
Software URLGo to Website
The Theorema project aims at extending current computer algebra systems by facilities for supporting mathematical proving. The present prototype version of the Theorema software system is implemented in Mathematica . The system consists of a general higher-order predicate logic prover and a collection of special provers that call each other depending on the particular proof situations. The individual provers imitate the proof style of human mathematicians and produce human-readable proofs in natural language presented in nested cells.
The long-term goal of the project is to produce a complete system which supports the mathematician in creating interactive textbooks, i.e. books containing, besides the ordinary passive text, active text representing algorithms in executable format, as well as proofs which can be studied at various levels of detail, and whose routine parts can be automatically generated. This system will provide a uniform (logic and software) framework in which a working mathematician, without leaving the system, can get computer-support while looping through all phases of the mathematical problem solving cycle:
Theorema was conceived and initiated around 1995 by Bruno Buchberger and reflects his view of "doing mathematics". It is being developed under his guidance by the Theorema Working Group at the Research Institute for Symbolic Computation (RISC), Johannes Kepler University (JKU), Linz – Hagenberg, Austria. Theorema 2.0 is a major re-launch mainly developed by Wolfgang Windsteiger.
Theorema is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License (GPL) as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
Theorema is currently being re-implemented. A prototype version of the software can be downloaded from this page.
- the phase of specifying a problem including the compilation of relevant knowledge and the definition of new concepts (predicates, functions) and auxiliary algorithms;
- the phase of exploring a given problem and creating ideas and conjectures by studying examples using the available knowledge and algorithms;
- the phase of proving or disproving conjectures and thereby increasing the relevant knowledge base;
- the phase of programming, i.e. transforming useful new and provenly correct mathematical knowledge into algorithms for solving the initial problem;
- the phase of writing up one's finding in interactive mathematical documents.