Thanks, John, and thanks again for your help porting to miz3! there is probably a gap in the market for a tutorial and/or reference for miz3 from the user perspective.
Great! This is my main task now. But I don't know enough to write this miz3 tutorial and user reference manual (more below). I suppose it is Freek's little syntactic improvements like "qed" that account for the smaller code, is it? Since I gather you were trying to keep the automation at a Mizar-like level, Yes, and Freek's idea (which violates the grammar) of beginning a thm with let ... assume ... thus ... proof (example below), with the assume statements taking 1 line instead of 2. But I'll count: The part you wrote saved 150 lines. Ignoring that, my new code is 3/4 the size of the original. As these little syntactic improvements count more in short proofs, let's go to the first Mizar proof that's over 30 lines (SegmentAddition), and then the miz3 code is 7/9 the size of the Mizar code, which isn't 2/3, but every little bit helps. Since I gather you were trying to keep the automation at a Mizar-like level, Absolutely, and I'm convinced that this is mild enough Mizar-like automation that good high school students could use it. By the way, I appreciate the acknowledgement in the comments, but it's a bit much to say that the port is "mostly due to John Harrison". All I did was point you in the right direction and prove a few really simple lemmas as an example. I am really grateful to you, John, and I couldn't have done without you, but, uh, I was hoping you'd do even more The reference manual says not to use new_axiom. Better error messages would be great. I'll write some dox but I don't know enough right now to write them. Here's something simple about `cases' I don't know, in a short proof: let B124and234Ordered_THM = thm `; let a b c d be point; assume Between (a,b,d) [H1]; assume Between (b,c,d) [H2]; thus is_ordered (a,b,c,d) proof cases; suppose b = c [P1]; Between (a,b,c) [P2] by -, Bqaa_THM; Between (a,c,d) by P1, H1; qed by P2, H1, -, H2, is_ordered_DEF; suppose ~(b = c) [Q1]; Between (a,b,c) by H1, H2, B124and234then123_THM; qed by -, Q1, H2, BTransitivityOrdered_THM; end`;; Note the new more compact Freek style of stating the thm, which violates Freek's grammar on p 16, which say a lemma must start let ident = thm `; formula proof; `;; When the cases construction ends, I immediately write end`;;. Why is that OK? Why didn't I need to write qed by -`;;, or thus thesis; end? Of my 37 miz3 lemmas, the only ones that end in end`;; are the ones that end on a cases construction. I can't write the new dox until I understand this. Maybe I can figure it out by reading miz3.ml. Or another dumb question: How do you run miz3 code? I'm just selecting in an Emacs window and then pasting into a terminal running hol_light> ocaml #use "hol.ml";; Why can't I paste in a use command like #use "John5-8ModelTarski.ml";; I know Freek describes a vi-based system but I haven't learned it yet. If there are some specific situations that you found particularly irksome, let me know and I'll think about a fix. You might already have done this before on this thread but I didn't pay close enough attention to that side of things. Great, I'm email them to you again privately. Basically I'd say that the miz3 error messages are good enough for reasonably short proofs, but for proofs 70+ lines long, the error messages can be useless. I wouldn't dismiss Mizar too readily since it has a lot of other very good features like its more flexible type system, and a much larger library of abstract mathematics. The Mizar type system caused me a lot of trouble, because I couldn't define the class of Tarski models without showing that R^2 was a Tarski model, and that ran something 450+ lines in Trybulec's simpler version of incidence axioms that I ported. But more seriously: I don't think Mizar is a flourishing community anymore. HOL Light is a flourishing community, while Mizar made great contribution before. I know folks teach courses using Mizar,but I'm sure code improvements would really help, like TABs and no 80 character line limit. Oh, I didn't know you used to work for Richard! I was sorry to see he fell ill the other day while giving a talk in Barcelona. I hope he's doing all right now. I hope so too. I had kind of a falling out with Richard Stallman about his free books crusade, which I felt violated the spirit of his free software crusade (we need to read and modify each other's code). But I really learned a lot from Richard, and found it a great pleasure to work with him. My combinatorics paper http://www.math.northwestern.edu/~richter/RichterPAMS-Lambda.pdf took 6 years to submit because I couldn't get anyone to admit that they didn't know the supposedly trivial combinatorial proofs. While Richard loved to get bug report! I used to have this on my web page: Emacs Pretester >From '92 to '02, reported to head of GNU project Richard Stallman, 100s of bug reports. Wrote some C code for mouse/X interaction. Ran Emacs under source-level C debugger GDB. Wrote 100 lines GDB/Emacs documentation. Learned enough C, X, & configure to take active part in investigations, and RCS to keep up with patches. One bug: found pointer which was garbage-collected prematurely. Wrote/maintained code for international character display long enough that Emacs needed legal papers for the copyright. -- Best, Bill ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ hol-info mailing list hol-info@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/hol-info