Dear Metamath users,
I would like to make you aware of my recent progress on my personal
Metamath project, which is mmpp:
https://github.com/giomasce/mmpp
Mmpp (Metamath in C++) is a tentative new Metamath proof editing
environment, that tries to address those that I perceive as defects on
mmj2, most notably the text only user interface and the lack of proof
automation, which requires the user to spend a lot of time in boring
details instead of in actual mathematics. My ultimate target would be a
tool that optimizes as much as possible the amount of mathematics that
can be formalized per time unit, accepting to compromise on the
aesthetics and minimality of the proofs (both in terms of step number
and axiom usage). Well, I appreciate that there are people who see
things differently, so if this is not your point of view, maybe mmpp
might not be your ideal tool.
That said, I am still far from this ultimate goal, and in some aspects
mmpp is not even on par with mmj2. But it begins to have some usability,
so if anyone wants to try it and give opinions and suggestions (or even
help with coding), everything is welcome. By the way, mmpp is actually
developed with
set.mm in mind. While I try to maintain every component
as general as possible, all non trivial algorithms depend fundamentally
on how
set.mm is structured.
So far the main mmpp component is called webmmpp and is a web interface
not dissimilar to mmj2 in line of principle, but trying to leverage
modern HTML/CSS/JS to have a richer interface (in particular, it shows
the althtml versions of the steps you input) and featuring fancier
inference rules then the usual Metamath unification. In particular, at
the moment it supports automatically proving inferences which require
purely propositional reasoning (by converting the inference in a CNF and
then using a SAT solver) and a toy implementation of the machine
learning algorithm described in arXiv:1608.02644 (so toy that it does
not have any actual machine learning yet; this will require more work;
however, it pops in every now and then and is still able to save you a
few keyboard strokes).
I am also experimenting with other theorem provers, like Z3 and the
various TSTP solvers. Nothing usable at this point, though. Also, in
line of principle many automation rules can be written for many usual
Metamath gadgets, like substituting a subexpression, automatically
proving that some variable is non free, doing arithmetic and so on.
Eventually I will try to do that and see what happens in terms of
optimizing the proof writing speed.
If you want to try mmpp, please look at the instructions on the webpage
above. I tries to make them as complete as possible and support all
major operating systems. I look forward to hearing your thoughts, both
on the ideas and on the implementation.
Also keep in mind that many advanced features of mmpp require some
support in the underlying
set.mm theory, so you will need to use my fork at:
https://github.com/giomasce/set.mm/tree/develop
Thanks and all the best, Giovanni.
--
Giovanni Mascellani <
g.masc...@gmail.com>
Postdoc researcher - Université Libre de Bruxelles