Hi,
Il 31/10/19 18:38, 'ookami' via Metamath ha scritto:
> Now that Christmas is approaching, I would love to come up with my
> personal wish list, that I slowly gathered over the past years.
> Okay, I am not going to command others here to fulfil my needs. But
> maybe, one or the other point has been silently pondered by others as
> well. So lets see whether this results in a discussion, or even,
> finally, something more.
The issues you mention make a lot of sense to me. I also have a wishlist
of things I'd like to implement, and every now and then I have some time
to work on them in the context on my project mmpp[1], but unfortunately
I also have many other things to care about. I wish to win a post-doc
target at working on these things, but I wouldn't know where to start from.
[1]
https://gitlab.com/giomasce/mmpp/
> 1. The user interface
>
> It is common practice nowadays to separate the UI from the so called
> backend. The backend is responsible for carrying out commands issued
> by the user. The UI should present the user with an overview of
> his/her options, and perhaps allow focussing on particular fields of
> interest.
>
> Why do you want to have these separated? There are people fantastic
> at creating intuitive interfaces. Others are more into abstract
> thinking, and can provide fast and reliable libraries. Or
> incorporate third-party software like search engines.
In mmpp I have both proof generators and a UI. They are in the same
repository, and in line of principle I tried to make them somehow
independent. The situation, as everything in mmpp, is far from ideal.
However I think the UI has some (very) little merit: it shows the proof
in a tree form, where branches can be collapsed and expanded depending
on what you want to focus on; you can write Metamath code in an input
field and the corresponding HTML rendering immediately appears just
close to it, in order to make it easier to read. The backend
automatically tries to resolve each step using a list of strategies. One
of the strategies is the usual unification algorithm; but there are
other more complex proof generators. One proof generator automatically
solves steps that are just applications of propositional calculus (and
is responsible for monstruosities like [2]; notice that in the whole
subproof rooted at step 457 only propositional theorems are used).
Another proof generator should at some point become an implementation of
Holophrasm[3], but it is not yet complete and it doesn't do any ML;
still, every now and then it chimes in and complete little parts of the
proof for free. I have been working on another generator that tries to
automatically solve predicate calculus steps by feeding them to an ATP
like E[4] and using GAPT[5] to interpret the proof and convert it to ND
style. Most of the code is already there and I am already able to
convert proofs to Metamath, but some glue code that makes this available
to the UI is still missing.
[2]
http://us.metamath.org/mpeuni/sbcom3OLD.html
[3]
https://github.com/dwhalen/holophrasm
[4]
https://wwwlehre.dhbw-stuttgart.de/~sschulz/E/E.html
[5]
https://www.logic.at/gapt/
I think I like how in Metamath (at least, in mmpp, but also in mmj2)
what the user does is writing statements and leave it to the program the
find unifications or otherwise solve the step; while in other systems,
like Coq and Lean, which I am trying to learn, you mostly write theorem
names (for example with "rewrite" or "apply" tactics) and the program
computes the expressions. I like writing expressions more than writing
previous theorem names (provided that I have appropriate copy and paste
tools), because I don't remember the theorem names.
> 2. Proof templates
>
> At least in the area where I have worked so far, I more than once
> encountered a situation, where I needed a specific instance out of a
> theorem family, that wasn't provided. The usual action to get around
> this deficiency was by looking out for a nearby solution and
> introduce otherwise unnecessary administrative proof steps. A good
> example is the deduction/immediate/closed form of a theorem.
> Wouldn't it be nice to have these forms at hand without much ado?
>
> Apart from this convenience aspect, I would really love to extend
> parts of FOL to arbitrary dimensions, as applies to substitution [ z
> / x ] [ w / y ]... , for example. The current Metamath language has
> no means of expressing a proof concept, or template, that contains
> instructions how to create a proof for a concrete theorem instance. I
> really miss such an abstraction layer.
I agree with both, and for both at some point I started some work in
mmpp, although nothing is usable yet. I would like rewriting and
substituting to be much easier in Metamath, without having to go through
the whole structure of the assertion (i.e., letting the program go
through it instead of you).
> 3. Specialization
>
> The gource video from DAW shows in how many different fields of
> mathematics
set.mm has put its foot into. These are only the
> traditional fields, others might want to use ZFC in future to create
> abstract graph structures like trees, maps. I am pretty sure, there
> is much more than that conceivable.
>
> For me it is time to break
set.mm up into dedicated subunits.
> Creating a complete HTML site of all theorems is already a matter of
> an hour or so on my computer. Should't there be some support of
> specialization? Don't get me wrong here. I think this is difficult,
> as it needs some sort of linking process, with all kinds of conflicts
> lurking (link against classic or intuitionistic logic? Use theorem A
> or B out of different units, one using the axiom of choice, the other
> not?).
Here the thing I'd really like to see is namespacing, although that
would be a change in the language, not just of the way we use it. It
would change the core Metamath inference model based on substitution, it
would just change the way things are named.
Just my two cents. I'd like to write code (and proofs) instead of ideas,
but that is what I can do for the moment.
Giovanni.
--
Giovanni Mascellani <
g.masc...@gmail.com>
Postdoc researcher - Université Libre de Bruxelles