My goal is to be able to edit Metamath .mm
files in an Eclipse-based editor,
with proof assistance and everything one needs to create Metamath proofs.
Hopefully most of the work can be done in the editor, in keeping with
Metamath's philosophy of treating the .mm file as source code.
Please note that this project is in the very early stages, and doesn't do much yet. However, even if I don't find the time to continue on it, hopefully someone else might pick it up as a useful starting point...
[...]
Feel very free to create a GitHub issue, create a pull request, or drop me a line, if you have any opinions, bug reports, requests, or whatever about this project. Thanks!
My goal is to be able to edit Metamath
.mm
files in an Eclipse-based editor
--
You received this message because you are subscribed to the Google Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+u...@googlegroups.com.
To post to this group, send email to meta...@googlegroups.com.
Visit this group at http://groups.google.com/group/metamath.
For more options, visit https://groups.google.com/d/optout.
First about the viability of using an 'annotated normal' proof format: I don't think the issues you raise are that much of a problem.
* For reusing sub-proofs, if it is the reuse of a syntax tree (as it usually is, I think), then I don't really care: this will basically be a bunch of lightly colored fluff that the user should not need to concern himself with. If it is the reuse of a 'real' statement, then that can easily (and probably should) be refactored out into a separate $p lemma.
* For 'dummylink' and the order of developing subproofs, personally I probably would not mind to use 'dummylink'. However, I can see why you would want to avoid it, and I see at least two other options that fit the refactoring/autocomplete approach: create a separate $p that you later 'inline' into the main proof; or put _two_ proofs between $= ... $., let the formatter render this as two calculations, and then later copy one proof over a ? in the other.
Then about a lemmon-like proof format. I don't much like the 'referencing' kind of proof format, of which .mmp and /LEMMON are examples. I much prefer a 'calculational' format, which is where my indentation rule comes from; see http://www.cs.utexas.edu/users/EWD/transcriptions/EWD13xx/EWD1300.html and https://en.wikipedia.org/wiki/Structured_derivations for my sources of inspiration.
And _if_ we want to use this format, it seems to me that we could just do something like this:
...
(This would be the 'lemmon format refactoring'.) And then specific commands and search options, just like mmj2 has, to fill in ? steps and do the actual proof assisting.
However, depending on demand and supply, we might actually create a separate .mmp editor. In that case, if someone can come up with a fairly formal description of the format, I'd be obliged:
I still have to try and run mmj2, and so far I've been put off by the arcane set-up and configuration options. All I know of it is basically in David Wheeler's YouTube video (@David: thanks!).
Finally, yes, in my previous mail I did indeed do some line-wrapping for my own benefit while writing that mail, and for you reading it, but I agree that that should not be necessary: if the formulas become wider than (say) 200 characters, then the proof likely can be split up using lemmas, and would become both shorter and less wide.
The statements which are being reused here are usually not worth exporting to a lemma, and you definitely don't want to present the user with the same proof 5 times over - this makes modifications very difficult as the user is forced to do the same thing for each instance of the subproof.
--
You received this message because you are subscribed to the Google Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+u...@googlegroups.com.
To post to this group, send email to meta...@googlegroups.com.
Visit this group at http://groups.google.com/group/metamath.
For more options, visit https://groups.google.com/d/optout.
I have to confess that in general I'm more of a tools guy, so the only Metamath proofs I've done so far were fairly simple ones, using the Metamath program, and not recently. Recently I've tried to start again using the Metamath program, and then decided to try and build tools support for a calculational format and see how I'd fare with that. That's how this Eclipse plugin got started.Hi Mario,First, thanks for the documentation on mmj2's .mmp format, and on encouragement and help on how to get it running! I hope to get around to that soon.**Now, about proofs containing backreferences to subproofs. This is all a bit thinking out loud and rambling, and clearly without practical experience to back me up, so feel free to keep telling me I'm too optimistic. :-)What I've learned from your last email is that having compressed proofs is not just a size compression mechanism (as I knew it is), but that the sharing of subproofs adds information that is really used and useful while creating and reading proofs.However, the strange thing is then that the user has no influence at all over _which_ subproofs are actually shared: when I re-compress a proof using the Metamath program, it could choose a different way of sharing than I originally used, and use that e.g. on the web pages.So, it seems that the important thing is de-duplication amongst "trivial" parts of the proof, so that the proof author can keep the overview of the "real meat" of the proof, without drowning in the details. Am I correct there?
Also, what is the difference --for the process of reading and writing proofs-- between sharing _inside_ a proof, and having temporary/local $p statements? Because it seems to me that that is equivalent to backreferences in /LEMMON and .mmp do. Or am I still missing something?
You write:The statements which are being reused here are usually not worth exporting to a lemma, and you definitely don't want to present the user with the same proof 5 times over - this makes modifications very difficult as the user is forced to do the same thing for each instance of the subproof.I think that your "not worth exporting to a lemma" means that the _reader_ would not consider the backreferenced statement to be sufficiently important to stand on its own: I assume we're talking about proving some precondition (a set being non-empty, a number being non-zero) which straightforwardly follows from the $e hypotheses. However, at the same time you're saying that the _author_ of the proof _does_ consider the backreferenced statement sufficiently important to reuse. And as a reader of the resulting proof, I'd probably also would not want to wade through the duplication.
So (as you already emphasized) the proof author needs to be able to indicate reusable parts. Inside the 'normal annotated as calculation' format, it seems that that can be done by making it easy to create a temporary 'sub-goal' $p statement, just before the 'main' $p statement, and referring to that in multiple places.
Although it *is* possible to mimic the step sharing by using temporary $p statements, and indeed this may be the easier approach for you since you want to leverage Eclipse refactoring options, it is not nearly as efficient, and more to the point you will end up with almost as much duplication as you seek to eliminate. I mentioned that occasionally I break up proofs solely for the reason that the uncompressed proof is too long (i.e. there is an unusually high compressed/uncompressed proof length ratio).
--
You received this message because you are subscribed to the Google Groups "Metamath" group.
To unsubscribe from this group and stop receiving emails from it, send an email to metamath+u...@googlegroups.com.
To post to this group, send email to meta...@googlegroups.com.
Visit this group at http://groups.google.com/group/metamath.
For more options, visit https://groups.google.com/d/optout.
Hi Mario,
Thanks for your extensive response and input and example; I'm digesting and trying to think things through before coding-- I don't nearly have enough time to try and code up several options. :-)
I might respond to some other parts of your mail later, but I have a question about one part you write, about the step sharing that is done by mmj2 .mmp worksheets, /LEMMON and /PACKED (which I didn't know about):Although it *is* possible to mimic the step sharing by using temporary $p statements, and indeed this may be the easier approach for you since you want to leverage Eclipse refactoring options, it is not nearly as efficient, and more to the point you will end up with almost as much duplication as you seek to eliminate. I mentioned that occasionally I break up proofs solely for the reason that the uncompressed proof is too long (i.e. there is an unusually high compressed/uncompressed proof length ratio).
In what sense do you use the word "efficient" here?
My goal here (like yours, I believe) is to help the proof author in the process of creating the proof. They should not need to handle duplicate things while writing the proof. So, there is a need for a mechanism --during proof writing-- to point to the same proof tree from multiple places. For this we can choose $p statements, or steps in an .mmp worksheet, or steps in a packed representation. What is the difference in 'efficiency' between these? I don't see any, except that $p statements will take up more vertical screen space while writing the proof, which might be inconvenient.
Or are you talking about space-efficiency of the resulting compressed proof? In that case, after I've produced some proof in Eclipse using my envisioned method with temporary $p statements perhaps even being automatically being extracted based on auto-deduplication, I'd just convert it to a compressed proof, with all the temporary $p statements automatically inlined and gone. Just like the standard mmj2 process.
So I have the feeling that we're misunderstanding each other somewhere, but I can't yet see where.