correspondence which relates types to classical logic.
In order to prove a proposition, one has to construct a
term with the type corresponding to the proposition.
Consider the injectivity proof implemented in Fi-
gure 17. Again, the idea of the proof is to show that f
x = f x’ implies x = x’. However, we have to explicitly
apply rewrite techniques to make the derivation steps.
The tactic intuition says that we can assume a left hand
side of an implication and then prove the right hand
side. Afterwards, we want to make sure that we can
just apply g on both sides. We have to rewrite both
sides of H0, which stands for f x = f x’, in order to get
to our assertion. The final goal x = x’ is then derived
by applying the rewrite technique auto.
As we see, the translation process of mathemati-
cal texts to functional programs requires a good un-
derstanding of type theory and is not suitable for mat-
hematical beginners.
Consequently, the most prominent current inte-
ractive theorem provers are of a deeply technical na-
tural. They are thought of as programming languages
that happen to prove theorems, and not digitisations
of mathematical language.
7 DISCUSSION
This paper presented ELFE, a system that checks
proofs in discrete mathematics. Entered texts are
transformed to statement sequences, a special data-
structure of first-order formulas. Remaining proof
obligations are then checked by background pro-
vers. Statement sequences are a powerful interme-
diate proof representation which can hold manifold
proof techniques. The clear soundness criteria allows
for extending the proof techniques easily.
Students who tested the system liked especially
that they got immediate feedback on their proof work.
The implemented background libraries allow for an
easy start. Once a user becomes familiar with the tool,
he can easily construct his own background libraries.
Certainly, more evaluation of the system in pedagogi-
cal environments is necessary. It will be particularly
interesting to examine how teachers can incorporate
the system in their courses.
The language constructs presented here were the
result of formalizing several exemplary proofs. If one
formalizes more proofs, he will probably feel the need
for additional proving methods. If one can map the
proving methods soundly into statement sequences,
this should be easy to implement.
In addition to giving countermodels for wrong
proofs, one could utilize more features of the back-
ground provers. Many provers return in-depth infor-
mation about the proof of a conjecture. This informa-
tion could be useful for users in order to understand
why a proof works or fails. The challenge is to present
the technical output of the background provers via an
intuitive interface. In order to do proofs with arithme-
tic, it might be useful to utilize already implemented
arithmetic capabilities of background provers such as
Z3 and BEAGLE. Expert users presumably prefer sy-
stems with deep insight into the technical verification
process, but an abstraction is necessary if we want to
use computers in teaching mathematics.
The biggest structural limitation of ELFE is that
it internally uses first-order logic. E.g., with the cur-
rent capabilities it is not straightforward to implement
proofs by induction. The recent years have seen in-
teresting advances in automated theorem proving of
typed higher-order logic. A new standard for typed
higher-order-logic has been added to TPTP which
is used by several provers like LEO-II (Benzmüller
et al., 2015) and SATALLAX (Brown, 2012). A next
version of ELFE could use this development in order
to provide a more powerful way of expressing mathe-
matics. This requires to introduce a meaningful type
system for ELFE.
REFERENCES
Parsec: Monadic parser combinators.
https://hackage.haskell.org/package/parsec. Acces-
sed: 2017-01-03.
Scotty: Haskell web framework.
https://hackage.haskell.org/package/scotty. Accessed:
2017-01-03.
Vuejs: The progressive javascript framework.
https://vuejs.org/. Accessed: 2017-01-03.
Baumgartner, P., Bax, J., and Waldmann, U. (2015). BE-
AGLE–a hierarchic superposition theorem prover. In
Proc. CADE-25, pages 367–377.
Benzmüller, C., Sultana, N., Paulson, L. C., and Theiß, F.
(2015). The higher-order prover LEO-II. Journal of
Automated Reasoning, 55(4):389–404.
Brown, C. E. (2012). SATALLAX: An automatic higher-
order prover. In Proc. IJCAR 2012, pages 111–117.
Cramer, M., Fisseni, B., Koepke, P., Kühlwein, D., Schrö-
der, B., and Veldman, J. (2009). The NAPROCHE
project–controlled natural language proof checking of
mathematical texts. In Proc. CNL 2009, volume 5972,
pages 170–186.
De Moura, L. and Bjørner, N. (2008). Z3: An efficient SMT
solver. Tools and Algorithms for the Construction and
Analysis of Systems, pages 337–340.
Doré, M. (2017). ELFE – An interactive theorem prover for
undergraduate students. Bachelor thesis.
Fitting, M. (1990). First-order Logic and Automated Theo-
rem Proving. Springer, 2nd edition.
The ELFE System
25