<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Theorema 2.0 : A Graphical User Interface for a Mathematical Assistant System</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Wolfgang Windsteiger RISC</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>JKU Linz</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Hagenberg</string-name>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Austria</string-name>
        </contrib>
      </contrib-group>
      <abstract>
        <p>Theorema 2.0 stands for a re-design including a complete re-implementation of the Theorema system, which was originally designed, developed, and implemented by Bruno Buchberger and his Theorema group at RISC. In this paper, we present the rst prototype of a graphical user interface (GUI) for the new system. It heavily relies on powerful interactive capabilities introduced in recent releases of the underlying Mathematica system, most importantly the possibility of having dynamic objects connected to interface elements like sliders, menus, check-boxes, radio-buttons and the like. All these features are fully integrated into the Mathematica programming environment and allow the implementation of a modern interface comparable to standard Java-based GUIs.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>Introduction</title>
      <p>This is on the one hand powerful and gives many possibilities for system insiders, who know all
the tricks and all the options including the e ect they will have in a particular example. For
newcomers, on the other hand, the right pick of an appropriate method and a clever choice of
option settings is often an insurmountable hurdle. The user interface in Theorema 2.0 should
make these selections easier for the user. Furthermore, there should be the possibility to extend
the system by user-de ned reasoning rules and strategies.</p>
      <p>Finally, the integration of proving, computing, and solving in one system will stay a major
focus also in Theorema 2.0 . Compared to Theorema 1.0 , the separation between Theorema
and the underlying Mathematica system is even stricter, but the integration of Mathematica's
computational facilities into the Theorema language has improved.</p>
      <p>Some of the features described in this paper rely or depend on their implementation in
Mathematica. This requires a certain knowledge of the principles of Mathematica's
programming language and user front-end in order to understand all details given below. The rest of the
paper is structured as follows: the rst section describes the new features in recent releases of
Mathematica that form the basis for new developments in Theorema 2.0 , in the second section
we introduce the new Theorema user interface, and in the conclusion we give a perspective for
future developments.
2</p>
    </sec>
    <sec id="sec-2">
      <title>New in Recent Versions of Mathematica</title>
      <p>We describe some of the new developments in recent Mathematica releases that were crucial in
the development of Theorema 2.0 .
2.1</p>
      <sec id="sec-2-1">
        <title>Mathematica Dynamic Objects</title>
        <p>
          Typical graphical user interfaces nowadays are implemented in the Java programming language
and its derivations or extensions. Earlier versions of Mathematica o ered the so-called GUIKit
extension, which was based on Java and used MathLink for communication between
Mathematica and the generated GUI. We used GUIKit earlier for the development of an educational
front-end for Theorema, see [
          <xref ref-type="bibr" rid="ref4">4</xref>
          ], but the resulting GUI was cumbersome to program, unstable,
and slow in responding to user interaction. As of Mathematica version 6, and then reliably
in version 7, see [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ], the concept of dynamic expressions was introduced into the Mathematica
programming language and fully integrated into the notebook front-end. Dynamic expressions
form the basis for interactive system components, thus, they are the elementary ingredient for
the new Theorema 2.0 GUI.
        </p>
        <p>In short, every Mathematica expression can be turned into a dynamic object by wrapping
it into Dynamic. As the most basic example, Dynamic[expr] produces an object in the
Mathematica front-end that displays as expr and automatically updates as soon as the value of one of
the parameters, on which expr depends, changes. In addition, typical interface elements such
as sliders, menus, check-boxes, radio-buttons, and the like are available. On the one hand, the
appearance of these elements depends on values of variables connected to them. On the other
hand, every action performed on them, e.g. clicking a check-box or radio-button, changes the
value of the respective variable. The set of available GUI objects is very rich and there is a wide
variety of options and auxiliary functions in order to in uence their behaviour and interactions.
These features allow the construction of arbitrarily complicated dynamic interfaces and seem to
constitute a perfect platform for the implementation of an interface to the Theorema system. A
big advantage of this approach is that the entire interface programming can be done inside the
Mathematica environment, which in particular brings us a uniform interface on all platforms
from Linux over Mac until Windows for free.
2.2</p>
      </sec>
      <sec id="sec-2-2">
        <title>Cascading Stylesheets</title>
        <p>Stylesheets are a means for de ning the appearance of Mathematica notebook documents very
similar to how stylesheets work in HTML or word processing programs. The mere existence of
a stylesheet mechanism for Mathematica notebooks is not new, but what is new since version 6
is that stylesheets are cascading, i.e. stylesheets may depend on each other and may inherit
properties from their underlying styles just like CSS in HTML. This of course facilitates the
design of di erent styles for di erent purposes without useless duplication of code. The more
important news is that stylesheets can now, in addition to in uencing the appearance of a cell
in a notebook, also in uence the behaviour of a cell. This is a feature that we always desired
since the beginning of Theorema: an action in Mathematica is always connected in some way
to the evaluation of a cell in a notebook, and we wanted to have di erent evaluation behaviour
depending on whether we want to e.g. prove something, do a computation, enter a formula, or
execute an algorithm. Using a stylesheet, we can now de ne computation-cells or formula-cells,
and the stylesheet de nes commands for their pre-processing, evaluation, and post-processing.</p>
        <p>Cascading is a nice feature for maintenance of stylesheets also, because is allows to separate
settings responsible for behaviour from those for appearance. This is convenient for a system
user, who typically would never wish to in uence behaviour, because the functioning of the
system relies on proper settings in this area. Still, adding new styles for di erent tastes and
occasions such as presentations or lecture notes can be added with ease.
3</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>The Theorema Interface</title>
      <p>As said, the Mathematica notebook front-end is the primary user interface for Theorema.
\Working in Theorema" consists of activities that themselves require certain actions. As an
example, a typical activity would be \to prove a formula", which requires actions such as
\selecting a proof goal", \composing the knowledge base", \choosing the inference rules and a
proof strategy", etc. The central new component in Theorema 2.0 is the Theorema commander ;
it is the GUI component that guides and supports all activities. Of course, most activities work
on mathematical formulae in one or the other way. Formulae appear as de nitions, theorems
or similar containers and are just written into Mathematica/Theorema notebook documents
that use one of the Theorema stylesheets. We call the collection of all available formulae the
Theorema environment. Composing and manipulating the environment is just another activity
and therefore supported from the Theorema commander. The second new interface component
in Theorema 2.0 is the virtual keyboard ; its task is to facilitate the input of math expressions,
in particular 2D-input. Figure 1 shows a screen shot of Theorema 2.0 with a Theorema-styled
notebook top-left, the Theorema commander to its right, and the virtual keyboard underneath.
3.1</p>
      <sec id="sec-3-1">
        <title>The Theorema Environment</title>
        <p>The Theorema environment is composed in Theorema-styled Mathematica notebooks, which
have all the capabilities of normal Mathematica notebooks plus the possibility to process
expressions in Theorema language inside environment cells. This means that Theorema expressions
are embedded in a full- edged document format for mathematical writing. Mathematica
notebooks consists of hierarchically arranged cells, whose nesting is visualized with cell brackets on
the right margin of the notebook. Figure 1 shows a notebook using a stylesheet that renders
the cell brackets with thin blue lines and displays section headings with a small open/close icon
to their left for quick opening and closing entire section blocks. Note in particular that each
environment forms a group for its own.</p>
        <p>Environment cells contain mathematical expressions in Theorema syntax with an additional
label. If no label is given by the user, an incremental numerical label is automatically assigned.
If a chosen label is not unique within a notebook, the user is warned but uniqueness is not
enforced. Invisible for the user, the formula is stored in the Theorema environment using a
datastructure that carries a unique key for each formula consisting of the absolute pathname
of the le, in which it was given, and the unique cell-ID in that notebook, which is provided
by the Mathematica front-end. The formula key allows to uniquely reference each formula in
the current environment. As we will explain later, the user never sees nor needs the concrete
formula key explicitly.</p>
        <p>In mathematical practice, universal quanti cation of formulae and conditioning is often
done on a global level. As an example take de nitions, which often start with a phrase like
\Let n 2 N. We then de ne . . . ", which in e ect expresses a universal quanti er for n plus
the condition n 2 N for all notions introduced in the current de nition. For this purpose,
we provide declaration cells, which may either contain one ore several \orphaned" universal
quanti ers (each containing a variable and an optional condition, but missing the formula, to
which they refer) or an \orphaned" implication (missing its right hand side). The idea is that
the scope of these quanti ers or implications ranges from their location in the notebook to the
end of the nearest enclosing cell group. In the example in Figure 1, this is used in Definition
(Undom, Core) with a universal quanti er for Y and Z valid for both formulae inside this
de nition. The cell grouping de ned in the stylesheet ensures that a de nition gets its own cell
group that limits the scope of the quanti er.</p>
        <p>We generalized the idea of declarations inside an environment towards declarations inside
an arbitrary cell group. This has the e ect that a declaration cell can be put anywhere in a
notebook, and its scope ranges as described above from its position to the end of the nearest
enclosing cell group. In Figure 1, this is used twice:
1. There is a `n82N 8 ' at the beginning of Section `The Core'. This means, that, without
further mentioning, n and are universally quanti ed with an additional condition n 2 N
in the entire section including all its subsections.
2. There is a `n = 3 )' in Subsection `The Case n = 3', so that this condition on n a ects
only in this subsection.</p>
        <p>At the moment of giving a formula to the system, i.e. evaluating the environment cell in
Mathematica, all declarations valid at this position are silently applied and the actual formula in
the Theorema environment has all respective quanti ers and implications attached to it just as
if they were written explicitly with each formula. This comes very close to how mathematicians
are used to write down things and this is very convenient. For bigger documents, one might
loose the overview on which declarations are valid at some point. The Theorema commander
gives some assistance in this situation: by just pressing a button one can obtain a list of
all declarations valid at the current cursor position in the selected notebook. Also, you can
always view the entire Theorema environment (with all formulae currently available including
all quanti ers and conditions) from the Theorema commander.
3.2</p>
      </sec>
      <sec id="sec-3-2">
        <title>The Theorema Commander</title>
        <p>The Theorema commander, see Figure 1 top-right, is the main GUI component in current
Theorema 2.0 . It is a two-level tabview with activities on the rst level and the corresponding
actions for each activity on the second level. The rst-level activity-tabs can be accessed
through the vertical tabs on the left margin. Currently, the supported activities are `Session',
i.e. working on the Theorema environment, `Prove', `Compute', `Solve', and `Preferences'.
As the system develops, this list may increase. For each of these activities, the respective
actions can be accessed via the horizontal tabs on top. Moving through them from left to right
corresponds to a wizard guiding the user through the respective activity. Proving is presumably
the most involved activity and we will describe some ideas for its support in the next paragraph
in more detail. The remaining parts of the Theorema commander are of similar fashion, we will
only mention some highlights in the concluding paragraph of this section.</p>
        <p>The `Prove'-activity The example in Figure 1 displays the `Prove'-tab. It shows actions
such as `goal', `knowledge', etc. that just correspond to the actions required for proving a
formula in Theorema, namely de ning the proof goal, specifying the knowledge available in
the proof, setting up built-in knowledge, and selecting the desired prover to be used. De ning
the proof goal is as simple as just selecting a formula in an open notebook with the mouse.
The selected formula is shown in the `goal'-tab, and it changes with every mouse selection.
Finally, the choice is con rmed by just pressing a button in the `goal'-tab. From this moment
on, whatever the mouse selects, the proof goal is xed until the next con rmation.</p>
        <p>Goal con rmation automatically proceeds to the tab for composing the knowledge base,
see Figure 2 (left). The knowledge browser displays a tab for each open notebook or loaded
knowledge archive1. In each tab, a hierarchical overview of the le/archive content showing only
the section structure, environments, and formula labels is displayed. Simply moving the mouse
cursor over the label opens a tooltip displaying the whole formula, clicking the label jumps
to the respective position in the corresponding notebook/archive. Each entry in the browser
has a check-box attached to its left responsible for toggling the selection of the respective
unit. In this way, individual formulae, environments, sections, up to entire notebooks can be
selected or deselected with just one mouse-click, and the formulae selected in this way constitute
the knowledge base for the next prove call. The formula label displayed in the browser is only
syntactic sugar, the check-box is connected to the unique key of each formula in the environment,
see Section 3.1.</p>
        <p>The next action within the `Prove'-activity is the selection of built-in knowledge2, see
Figure 2 (right). The built-in browser works like the knowledge browser described above. Instead
of section grouping we have (not necessarily disjoint) thematic groups of built-ins like sets,
arithmetic, or logic.</p>
        <p>After having composed the relevant built-in knowledge, the user needs to select the prover.
A prover in Theorema 2.0 consists of a structured list of inference rules accompanied with a
prove strategy. Accordingly, the `prover'-tab, see Figure 3 (left), shows menus for choosing the
inference rules and the strategy, respectively, together with short info panels explaining the
current choice. A list of inference rules is a list, whose entries are individual inference rules or
1Archives are another new development in Theorema 2.0 . An archive gives the possibility to store the
formulae from a notebook e ciently in an external le, such that they can be loaded quickly into a Theorema
session. We do not go into further details in this paper.</p>
        <p>2With built-in knowledge we refer to knowledge built into the Theorema language semantics. As an example,
`+' is by default an uninterpreted operator. Using some built-in knowledge one can link `+' to the addition of
numbers available in the Theorema language. This is a feature inherited from Theorema 1.0 .
themselves lists of inference rules. In addition, every list of inference rules has a name. There is
no limit to the nesting of inference rule lists. The `prove'-tab displays an inference rule browser
corresponding to the selected rule list, which works like the knowledge browser described above
using the rule list structure for the hierarchy and the list names instead of section titles. With
the inference rule browser the user can e ciently deactivate individual inference rules, e.g. for
in uencing whether an implication will be proved directly or via contraposition. In addition,
some options for the prover can be set or adjusted from this tab.</p>
        <p>
          The next step is submitting the proof task. The respective tab collects all settings from
the previous actions, in particular the chosen goal and knowledge base, and displays them
for a nal check. Hitting the `Prove'-button submits all data to the Theorema kernel and
proceeds to the `navigate'-tab, see Figure 3 (right), which displays the corresponding proof
tree as it develops during proof generation. The nodes in the proof tree di er in shape, color,
and content depending on node type and status. As soon as the proof is nished, some proof
information is written back into the notebook, in which the proof goal is de ned. In addition
to an indicator of proof success or failure and a summary of settings used at the time of proof
generation, this information contains two important buttons:
1. A button to display the proof in natural language in a separate window. This feature is
in essence the same as we had it in Theorema 1.0 , see e.g. [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. The `navigate'-tab in the
Theorema commander is connected to the proof display in that all labels in the proof tree
representation are hyperlinks to the respective text blocks in the proof display describing
the corresponding proof step, which is a nice possibility to navigate through a proof.
2. A button to restore all settings in the Theorema commander to the values they had at
the time of proof generation, which is a quick way to rerun a proof.
Other activities The `Session'-activity consists of structuring formulae into de nitions,
theorems, etc., arranging global declarations, inspecting the environment, inputting formulae, and
the development and maintenance of knowledge archives. The `Compute'-activity contains
setting up the expression to be computed, de ning the knowledge base, and de ning the built-in
knowledge using knowledge- and built-in browsers as described for proving above. Knowledge
selections for proving are independent from those used for computations. In the
`Preferences'activity we collect everything regarding system setup, such as e.g. the preferred language. The
entire GUI is language independent in the sense that no single english string (for GUI labels,
button labels, explanations, tooltips, etc.) is hardcoded in its implementation, but all strings
are constants, whose de nitions are collected in several language-setup les. For a translation
to a new language, only these les have to be copied and the english texts in them translated.
The language selection menu in the `Preferences' will immediately o er the new choice for the
language, the user selects it, and voila the GUI runs in the new language. Language support is
important in particular for educational purposes that we envisage for Theorema 2.0 .
        </p>
        <p>An important detail that makes this approach possible is the decision to make the source
code available under GPL license. This gives all users access to the source code and in particular
the language-setup les. An attractive perspective for user contribution to the system could
also be the development of new proof strategies. They are just Mathematica programs applying
inference rules, and there is a rich library of Theorema programs that is ready for use in the
implementation of strategies.
3.3</p>
      </sec>
      <sec id="sec-3-3">
        <title>The Virtual Keyboard</title>
        <p>The last component to be described brie y is the virtual keyboard, see the screenshot in Figure 1.
Although much input can be given through buttons and palettes, such as buttons for frequently
used expressions in the `Session'-tab or the built-in Mathematica palettes, symbols or digits in
an expression are most conveniently typed directly on the keyboard. When working with
Theorema 2.0 on a tablet computer or on an interactive white-board, however, e.g. in an
educational context, we have no physical keyboard available. For situations like this we provide
the virtual keyboard, which is an arrangement of buttons imitating a physical keyboard. It
consists of a character block for the usual letters and a numeric keypad (numpad) for digits and
common arithmetic operators like on common keyboards. As a generalization of the numpad,
we provide a sympad (to the far right) and an expad (to the left) for common mathematical
symbols and expressions, respectively. Using modi er keys like Shift, Mod, Ctrl and more, every
key on the board can be equipped with many di erent meanings depending on the setting of
the modi ers. We believe that the virtual keyboard is a very powerful input component for
mathematical expressions, which will prove useful even in the presence of a physical keyboard.
4</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion</title>
      <p>Theorema 2.0 is currently under development. The components described in this paper are
all implemented and the screenshots provided show a running and working system, it is not
the sketch of a design. However, the interface presented here is incomplete and it will grow
with new demands. From the experience with Mathematica's GUI components gathered up to
now we are con dent that all requirements for a modern interface to a mathematical assistant
system can easily be ful lled based on that platform.</p>
      <p>Some of the features are implemented currently as `proof of concept' and need to be
completed in the near future to get a system that can be used for case studies. As an example,
the Theorema language syntax, from parsing via formatted output to computational semantics,
is only implemented for a fraction of what we already had in Theorema 1.0 . Due to the fact
that the already implemented parts are the most complicated ones and that we paid a lot of
attention to a generic programming style, there is hope that progress can be made quickly in
that direction.</p>
      <p>The bigger part of the work to be done is the re-implementation of all provers that we already
had in Theorema 1.0 . What we already have now is the generic proof search procedure and the
mechanism of inference rule lists and strategies with their interplay. Two sample strategies, one
that models more or less the strategy used in Theorema 1.0 and another one that does a more
ne-grained branching on alternative inference rules being applicable, are already available, but
no report on their performance can be given at this stage. The big e ort is now to provide all
the inference rules for standard predicate logic including all the extensions that the Theorema
language supports. As soon as this is completed we can engage in case studies trying out the
system in some real-world theory formalization and in education, for which we plan a hybrid
interactive-automatic proof strategy to be available.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>B.</given-names>
            <surname>Buchberger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Craciun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Jebelean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Kovacs</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Kutsia</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Nakagawa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Piroi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Popov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Robu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Rosenkranz</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Windsteiger</surname>
          </string-name>
          . Theorema:
          <article-title>Towards Computer-Aided Mathematical Theory Exploration</article-title>
          .
          <source>Journal of Applied Logic</source>
          ,
          <volume>4</volume>
          (
          <issue>4</issue>
          ):
          <volume>470</volume>
          {
          <fpage>504</fpage>
          ,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>B.</given-names>
            <surname>Buchberger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Dupre</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Jebelean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Kriftner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Nakagawa</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Vasaru</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Windsteiger</surname>
          </string-name>
          .
          <article-title>The Theorema Project: A Progress Report</article-title>
          . In M. Kerber and M. Kohlhase, editors,
          <source>Symbolic Computation and Automated Reasoning (Proceedings of CALCULEMUS 2000, Symposium on the Integration of Symbolic Computation and Mechanized Reasoning)</source>
          , pages
          <fpage>98</fpage>
          {
          <fpage>113</fpage>
          .
          <string-name>
            <surname>St</surname>
            . Andrews, Scotland, Copyright:
            <given-names>A.K.</given-names>
          </string-name>
          <string-name>
            <surname>Peters</surname>
          </string-name>
          , Natick, Massachusetts, 6-
          <fpage>7</fpage>
          August
          <year>2000</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <given-names>B.</given-names>
            <surname>Buchberger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Jebelean</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Kriftner</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Marin</surname>
          </string-name>
          , E. Tomuta, and
          <string-name>
            <given-names>D.</given-names>
            <surname>Vasaru</surname>
          </string-name>
          .
          <article-title>A Survey of the Theorema project</article-title>
          . In W. Kuechlin, editor,
          <source>Proceedings of ISSAC'97 (International Symposium on Symbolic and Algebraic Computation</source>
          , Maui, Hawaii,
          <source>July 21-23</source>
          ,
          <year>1997</year>
          ), pages
          <fpage>384</fpage>
          {
          <fpage>391</fpage>
          . ACM Press,
          <year>1997</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>G.</given-names>
            <surname>Mayrhofer</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.</given-names>
            <surname>Saminger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>W.</given-names>
            <surname>Windsteiger</surname>
          </string-name>
          .
          <article-title>CreaComp: Experimental Formal Mathematics for the Classroom</article-title>
          . In Shangzhi Li,
          <string-name>
            <given-names>Dongming</given-names>
            <surname>Wang</surname>
          </string-name>
          , , and Jing-Zhong Zhang, editors,
          <source>Symbolic Computation and Education</source>
          , pages
          <volume>94</volume>
          {
          <fpage>114</fpage>
          ,
          <string-name>
            <surname>Singapore</surname>
          </string-name>
          , New Jersey,
          <year>2007</year>
          . World Scienti c Publishing Co.
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>W.</given-names>
            <surname>Windsteiger</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Buchberger</surname>
          </string-name>
          , and
          <string-name>
            <given-names>M.</given-names>
            <surname>Rosenkranz</surname>
          </string-name>
          . Theorema. In Freek Wiedijk, editor,
          <source>The Seventeen Provers of the World</source>
          , volume
          <volume>3600</volume>
          <source>of LNAI</source>
          , pages
          <volume>96</volume>
          {
          <fpage>107</fpage>
          . Springer Berlin Heidelberg New York,
          <year>2006</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Wolfram</surname>
          </string-name>
          .
          <article-title>The Mathematica Book</article-title>
          . Wolfram Media/Cambridge University Press, third edition,
          <year>1996</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Wolfram</given-names>
            <surname>Research</surname>
          </string-name>
          , Inc.
          <source>Mathematica edition: Version 7.0</source>
          ,
          <year>2008</year>
          . Champaign, Illinois.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>