A biform theory is a combination of an axiomatic theory and an algorithmic theory that supports the integration of reasoning and computation. These are ideal for specifying and reasoning about algorithms that manipulate mathematical expressions. However, formalizing biform theories is challenging as it requires the means to express statements about the interplay of what these algorithms do and what their actions mean mathematically. This paper describes a project to develop a methodology for expressing, manipulating, managing, and generating mathematical knowledge as a network of biform theories. It is a subproject of MathScheme, a long-term project at McMaster University to produce a framework for integrating formal deduction and symbolic computation.We present the Biform Theories project, a subproject of MathScheme [11] (a long-term project to produce a framework integrating formal deduction and symbolic computation).
MotivationType 2 * 3 into your favourite computer algebra system, press enter, and you will receive (unsurprisingly) 6. But what if you want to go in the opposite direction? Easy: you ask ifactors(6) in Maple or FactorInteger [6] in Mathematica. 1 The Maple command ifactors returns a 2-element list, with the first element the unit (1 or -1) and the second element a list of pairs (encoded as two-element lists) with (distinct) primes in the first component and the prime's multiplicity in the second. Mathematica's FactorInteger is similar, except that it omits the unit (and thus does not document what happens for negative integers).This simple example illustrates the difference between a simple computation 2 * 3 and a more complex symbolic query, factoring. The reason for using lists-of-lists in both systems is that multiplication and powering are both functions that evaluate immediately in these systems. So that factoring 6 cannot This research is supported by NSERC. 1 Other computer algebra systems have similar commands.