Re: [Hol-info] Learning HOL Light

2014-05-01 Thread Cris Perdue
On Tue, Apr 29, 2014 at 5:51 AM, Bill Richter wrote: > > Here's a more substantive point that's always bothered me. Suppose if one > is working in one's preferred logical framework (e.g. ZFC), and one engages > in metamathematics. On what grounds to we believe the metamathematics? > The poin

Re: [Hol-info] Learning HOL Light

2014-04-28 Thread Bill Richter
Thanks, Rob! I think we're in agreement on the substantive issues, after I agree with your true correction: If you replace “true” by “provable”, then this is how one would state Andrews’ claim that the rules of N are admissible in FOL. Yes, thanks for the correction. So we're just talkin

Re: [Hol-info] Learning HOL Light

2014-04-28 Thread Rob Arthan
On 28 Apr 2014, at 00:57, Bill Richter wrote: > Rob, I want to argue that Peter Andrews's book To Truth Through Proof > supports my idea of informal mathematics documentation for HOL Light. I > don't understand yet how the informal math compares to your HOL documentation > http://www.lemma-

Re: [Hol-info] Learning HOL Light

2014-04-27 Thread Bill Richter
Rob, I want to argue that Peter Andrews's book To Truth Through Proof supports my idea of informal mathematics documentation for HOL Light. I don't understand yet how the informal math compares to your HOL documentation http://www.lemma-one.com/ProofPower/specs/spc001.pdf Mostly I'm going to

Re: [Hol-info] Learning HOL Light

2014-04-26 Thread Rob Arthan
On 26 Mar 2014, at 07:58, Bill Richter wrote: > Thanks, Konrad! The proof of SYM in the HOL4 manual Description (p 46) is > fine because the HOL4 SUBST is much more powerful than the HOL Light INST. > On p 26, SUBST is described by > > SUBST : (thm * term)list -> term -> thm -> thm > > t

Re: [Hol-info] Learning HOL Light

2014-03-27 Thread Bill Richter
Thanks, Rob! You seem to be correct about Andrews's book To Truth Through Proof. His Chapter 5 Type Theory is 56 pages long, and it's mostly about Q_0 which is based on equality, which he calls Q:A->A->bool, and I notice that he prove the only "truth table" result I was able to prove: |- T ∧ T

Re: [Hol-info] Learning HOL Light

2014-03-26 Thread Rob Arthan
Bill, On 26 Mar 2014, at 23:01, Bill Richter wrote: > Thanks, Rob! Then since I only technically have a model, I would say I'm > working in your class (c): > > (c) Informal mathematical proofs that an assertion is provable in > some agreed deductive system. No. When I wrote "an assertion",

Re: [Hol-info] Learning HOL Light

2014-03-26 Thread Bill Richter
Thanks, Rob! Then since I only technically have a model, I would say I'm working in your class (c): (c) Informal mathematical proofs that an assertion is provable in some agreed deductive system. I still don't understand what you're saying about class (d), or why this is true: Your theorem

Re: [Hol-info] Learning HOL Light

2014-03-26 Thread Rob Arthan
Bill, On 26 Mar 2014, at 09:37, Bill Richter wrote: > Rob, thanks for the excellent post! Let me more clearly tell you what I > think I'm doing, using your terminology, and maybe we can discuss your > classes a--e. > > Take HOL Light and possibly some extra types, constants and axioms create

Re: [Hol-info] Learning HOL Light

2014-03-26 Thread Bill Richter
Rob, thanks for the excellent post! Let me more clearly tell you what I think I'm doing, using your terminology, and maybe we can discuss your classes a--e. Take HOL Light and possibly some extra types, constants and axioms created by commands like new_type, new_constant, and new_axiom. Let S

Re: [Hol-info] Learning HOL Light

2014-03-26 Thread Bill Richter
Thanks, Konrad! The proof of SYM in the HOL4 manual Description (p 46) is fine because the HOL4 SUBST is much more powerful than the HOL Light INST. On p 26, SUBST is described by SUBST : (thm * term)list -> term -> thm -> thm t[t1 , . . . , tn ] yields t[t1',...,tn'] . where t[t1 , . . .

Re: [Hol-info] Learning HOL Light

2014-03-25 Thread Rob Arthan
Bill, On 25 Mar 2014, at 07:27, Bill Richter wrote: > So the similarity is that in both FOL and HOL, > 1) You can define a set of statements to study (wffs and proto-sequents). "Proto-sequent" and “sequent” are usually referred to as “sequent” and “theorem” respectively. E.g., see the HOL4 Lo

Re: [Hol-info] Learning HOL Light

2014-03-25 Thread Konrad Slind
> Konrad, I should definitely read Description's chapter Derived Inference Rules, which seems to be doing much the same > thing as I was attempting in my post. I noticed that Gordon & Melham's book is only mentioned much later and is not in > your bibliography. Could that be because Gordon wrote

Re: [Hol-info] Learning HOL Light

2014-03-25 Thread Bill Richter
Thanks, Rob and Konrad! I will read Andrews's book and the HOL4 Description manual. Rob, I'm guessing Andrews isn't too happy with the HOL->FOL derivation you've argued must be in his book, as he advertised it so poorly. I'll agree with you and Konrad that Tarski, Quine and Henkin are the o

Re: [Hol-info] Learning HOL Light

2014-03-24 Thread Konrad Slind
> Osmosis. The original HOL documentation/code included schematic derivations of the derived rules of inference (didn't that > make it into Gordon and Melham?). However, the starting point for that is the rather ad hoc collection of primitive rules and > axioms that evolved into the ones currently

Re: [Hol-info] Learning HOL Light

2014-03-24 Thread Rob Arthan
Bill, On 24 Mar 2014, at 06:28, Bill Richter wrote: > Thanks, Rob! You're right, I hadn't looked at Section 1.4 "A Formulation > Based on Equality" of Andrew's link >> http://plato.stanford.edu/entries/type-theory-church/ and more to the point, >> I didn't read the longer version Andrew's wro

Re: [Hol-info] Learning HOL Light

2014-03-24 Thread Bill Richter
Mark, I tried to make your corrections, and here's my new draft, at just 500 lines: I want to explain how to read the HOL Light basics from the source code in several sections 0) informal math and HOL 1) the type bool and the constant = 2) sequents, new_basic_definition and the HOL Light infere

Re: [Hol-info] Learning HOL Light

2014-03-23 Thread Bill Richter
Thanks, Rob! You're right, I hadn't looked at Section 1.4 "A Formulation Based on Equality" of Andrew's link > http://plato.stanford.edu/entries/type-theory-church/ and more to the point, > I didn't read the longer version Andrew's wrote in his book To Truth Through > Proof: More details ab

Re: [Hol-info] Learning HOL Light

2014-03-23 Thread Bill Richter
Thanks, Mark! My draft can use a lot of help from experts like you. I think I decided that what I'm attempting is to describe, in the usual language of mathematicians, the set of HOL Light sequents. But I'm not sure your declare/define terminology is standard. The string "declar" does not o

Re: [Hol-info] Learning HOL Light

2014-03-23 Thread Rob Arthan
Bill, On 23 Mar 2014, at 18:44, Bill Richter wrote: > > The claim (which you may not be making) that Hankin derived FOL from the > basic LC axioms (e.g. the HOL axioms) seems to contradict Andrew's link > http://plato.stanford.edu/entries/type-theory-church/ > which as I posted lists Prop Log

Re: [Hol-info] Learning HOL Light

2014-03-23 Thread Mark
Hi Bill These are nice explanations, but here are a few comments and corrections: > * 1) the definitions of type bool and the constant = * > You're still using the terminology "definition" for 'bool' and '=', whereas they are only *declared* in each of the HOL systems' axiomatisati

Re: [Hol-info] Learning HOL Light

2014-03-23 Thread Bill Richter
Thanks, Mark! I figured out the constant = myself, but it would have saved me a lot of time if I checked my mail yesterday when you explained it :) I should have said '@' instead of '?' here. The constant '?' is actually defined in these axiomatisations (using '@'). This is true for HO

Re: [Hol-info] Learning HOL Light

2014-03-23 Thread Bill Richter
I want to explain how to read the HOL Light basics from the source code in several sections 0) colloquial (informal) math and HOL 1) the definitions of type bool and the constant = 2) sequents, new_basic_definition and the HOL Light inference rules 3) The BETA_CONV proof of general beta-conversio

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Rob Arthan
Andrew, On 21 Mar 2014, at 09:13, Andrew Butterfield wrote: > > On 20 Mar 2014, at 16:50, Rob Arthan wrote: > >> >> ProofPower is no different from HOL4 and HOL Light as regards substitution. >> The ProofPower documentation does include a formal specification of the >> logic and the proof

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Andrew Butterfield
On 20 Mar 2014, at 16:50, Rob Arthan wrote: > > ProofPower is no different from HOL4 and HOL Light as regards substitution. > The ProofPower documentation does include a formal specification of the logic > and the proof system, but you would probably do better looking at the HOL4 > Logic Ma

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Andrew Butterfield
On 20 Mar 2014, at 16:50, Rob Arthan wrote: > > ProofPower is no different from HOL4 and HOL Light as regards substitution. > The ProofPower documentation does include a formal specification of the logic > and the proof system, but you would probably do better looking at the HOL4 > Logic Ma

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Mark Adams
Hi Bill, on 21/3/14 4:28 PM, Bill Richter wrote: > ... BTW where is the constant = defined in HOL Light? I see now that > the line in bool.ml override_interface ("<=>",`(=):bool->bool->bool`);; > just means that <=> is being defined as a synonym for = in this special > case. In general = has t

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Mark Adams
I should have said '@' instead of '?' here. The constant '?' is actually defined in these axiomatisations (using '@'). Mark. on 21/3/14 9:10 AM, Mark Adams wrote: > ... In HOL Light's axiomatisation, the only such entities are the 'bool' and > 'fun' type constants and the '=' constant (the oth

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Ramana Kumar
The constant = is not defined in HOL Light, but simply declared (as Mark said). In fact, equality is even more basic than that: it's a built in term. You can see, for example, the "safe_mk_eq" function in fusion.ml, and also the "the_term_constants" reference (which starts with "=" built in). I fe

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Bill Richter
Thanks for correcting me, Mark! I'll look at your HOL Zero source code, especially corethy.ml. I see my error now. From bool.ml: let T_DEF = new_basic_definition `T = ((\p:bool. p) = (\p:bool. p))`;; The first = is an Ocaml =, but the 2nd =, the one we care about, is the primitive HOL Ligh

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Bill Richter
Thanks, Konrad! I'll read your proof of NOT_FORALL_THM, and try to find Gordon and Melham's book. Two points: I don't believe that Church ever explained how typed LC implies FOL. Church certainly does not explain this in his paper A Formulation of the Simple Theory of Types http://www.jstor.o

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Konrad Slind
Bill: > On p 29 of LOGIC, you write that there are constants > Tbool, ∀(α→bool)→bool etc. Why aren't there colons? I would have written that as > T:bool and ∀:(α→bool)→bool > Are the apparent subscripts supposed to indicate colons, or does HOL4 not use colons for type annotations? Throughout th

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Mark Adams
Hi Bill, on 21/3/14 6:19 AM, Bill Richter wrote: > ... > > T = ((λxbool . x) = (λxbool . x)) > > So it looks to me that HOL Light is defining Tom's primitive = in terms of > the Ocaml =. Is that correct? And maybe that just means that the HOL Light > primitive = is "represented" in Ocaml as th

Re: [Hol-info] Learning HOL Light

2014-03-21 Thread Mark Adams
Hi Bill, Have you tried looking at the HOL Zero source code? I think you will find it illustrative for your purposes. It has a simple core like HOL Light, but the source code explains more of what is going on. In file 'corethy.ml' I try to motivate the axioms and constant definitions used in th

Re: [Hol-info] Learning HOL Light

2014-03-20 Thread Bill Richter
Thanks, Konrad! You seem to agree with me here, that the typed-LC-implies-FOL isn't actually important: My personal feelings on this foundational aspect are that the actual set of axioms isn't that important provided the usual introduction and elimination rules of predicate calculus can

Re: [Hol-info] Learning HOL Light

2014-03-20 Thread Konrad Slind
My personal feelings on this foundational aspect are that the actual set of axioms isn't that important provided the usual introduction and elimination rules of predicate calculus can be derived from them. My recollection (don't have citations to hand) is that Church originally wanted the untyped

Re: [Hol-info] Learning HOL Light

2014-03-20 Thread Bill Richter
Thanks, Rob! I don't Andrew's book to hand either, but his on-line article is causing me real trouble: http://plato.stanford.edu/entries/type-theory-church/ 1.3.2 Elementary Type Theory We start by listing the axioms for what we shall call elementary type theory. (1) [pο ∨ pο] ⊃ pο

Re: [Hol-info] Learning HOL Light

2014-03-20 Thread Rob Arthan
Bill, On 19 Mar 2014, at 07:02, Bill Richter wrote: > work is. If I understood it, I'm sure I'd say it was elegant mathematics, > and that it's good we're assuming the weakest possible set of axioms. Have you looked at Peter Andrews’ book "An Introduction to Mathematical Logic and Type The

Re: [Hol-info] Learning HOL Light

2014-03-19 Thread Bill Richter
2. The argument formerly used a direct port of the original Diaconescu proof as presented in Beeson's "Foundations of Constructive Mathematics". But in July 2009 I changed it to a somewhat optimized variant shown to me by Mark Adams. This is noted in the CHANGES fil

Re: [Hol-info] Learning HOL Light

2014-03-19 Thread Bill Richter
Thanks, John and Rob! The main problem I'm having is actually embarrassingly simple: I don't understand the typed Lambda Calculus angle in Church's work or HOL. Now I definitely see the point of having functions as well as sets, and that means that the HOL type theory (sets are either types or

Re: [Hol-info] Learning HOL Light

2014-03-17 Thread John Harrison
Konrad and Rob have already answered Bill very thoroughly, but I'll add two additional comments: 1. I guess Bill was dicombobulated by the "..._AX" name, which does suggest an axiom. This name is for historical reasons and compatibility with other HOLs. BOOL_CASES_AX was traditionally a

Re: [Hol-info] Learning HOL Light

2014-03-17 Thread Rob Arthan
On 17 Mar 2014, at 00:52, Konrad Slind wrote: > RE: type bool. I think BOOL_CASES_AX can be derived from choice. > There's a topos-flavoured proof (due to Diaconescu?) in Lambek and Scott, > which I think John ported to HOL-Light. Yes. I don’t know the right reference: the comment in the HOL Li

Re: [Hol-info] Learning HOL Light

2014-03-16 Thread Bill Richter
Thanks, Konrad! I see that the HOL light BOOL_CASES_AX is proved in class.ml using the result I mentioned, EXCLUDED_MIDDLE, which class.ml says is derived from Beeson's book: let BOOL_CASES_AX = prove (`!t. (t <=> T) \/ (t <=> F)`, GEN_TAC THEN DISJ_CASES_TAC(SPEC `t:bool` EXCLUDED_MIDDLE)

Re: [Hol-info] Learning HOL Light

2014-03-16 Thread Konrad Slind
RE: type bool. I think BOOL_CASES_AX can be derived from choice. There's a topos-flavoured proof (due to Diaconescu?) in Lambek and Scott, which I think John ported to HOL-Light. Konrad. On Sun, Mar 16, 2014 at 7:25 PM, Bill Richter wrote: > I'm trying to understand Tom Hales's compact descri

Re: [Hol-info] Learning HOL Light

2014-03-16 Thread Bill Richter
I'm trying to understand Tom Hales's compact description of HOL Light in his AMS Notices article www.ams.org/notices/200811/tx081101370p.pdf The first things I don't understand are the type bool and the beta-conversion inference rule. Isn't there an axiom that there are exactly two term type boo

Re: [Hol-info] Learning HOL Light

2014-02-19 Thread Vincent Aravantinos
On 19.02.2014 14:41, Bill Richter wrote: > - if you have existentials or disjunctions in the theorems you want to > use or in the goal, use MESON_TAC > > By putting this after SIMP_TAC, I infer that SIMP_TAC will not handle > existentials or disjunctions. Indeed - most of the time. Let me

Re: [Hol-info] Learning HOL Light

2014-02-19 Thread Bill Richter
Vince, thanks for improving my code! I've implemented Freek's 1-line "by" proofs, so I can shorten your proof a bit: let INTERIOR_EQ = theorem `; ∀s. interior s = s ⇔ open s by simplify interior_DEF OPEN_IN SUBSET_UNIV TOPSPACE_EUCLIDEAN InteriorEq EQ_SYM_EQ`;; But why does this work? L

Re: [Hol-info] Learning HOL Light

2014-02-18 Thread Vincent Aravantinos
Hi Bill, you're right. Indeed, part of the idea of automation tools is to actually remove the burden of knowing precisely what's going on inside. But they're not perfect so in practice, it turns out to actually be useful to know about them. So knowing about the algorithms behind them is still

Re: [Hol-info] Learning HOL Light

2014-02-17 Thread Bill Richter
Back to my other question, there's something about USE_THEN and type annotations I don't understand. I get the same problem with FIRST_ASSUM. In Multivariate/topology.ml there's a theorem let FRONTIER_CLOSURES = prove (`!s:real^N->bool. frontier s = (closure s) INTER (closure(UNIV DIFF s))`,

Re: [Hol-info] Learning HOL Light

2014-02-17 Thread Bill Richter
Thanks, Vince! I think we haven't quite gotten it right yet, as it's tricky to talk about intentions. You correctly pointed out there was something wrong with the way I used REWRITE_TAC[DIST_SYM]. John's proof uses ONCE_REWRITE_TAC correctly, but he's using DIST_TRIANGLE_ALT, while I tried to

Re: [Hol-info] Learning HOL Light

2014-02-17 Thread Vincent Aravantinos
On 17.02.2014 12:49, Bill Richter wrote: > Vince, this is very interesting: > > I would say what is bad coding is not to rely on features you don't > understand but on features that are actually > undocumented/unintended. Here, the ordering chosen is indeed > ingenious to prevent s

Re: [Hol-info] Learning HOL Light

2014-02-17 Thread Bill Richter
Vince, this is very interesting: I would say what is bad coding is not to rely on features you don't understand but on features that are actually undocumented/unintended. Here, the ordering chosen is indeed ingenious to prevent some often-met looping situations. However, as John p

Re: [Hol-info] Learning HOL Light

2014-02-14 Thread Vincent Aravantinos
On 14.02.2014 04:39, Bill Richter wrote: > I guess I understood that REWRITE_TAC used a complicated algorithm in order > to avoid infinite looping. So I think I didn't express my question very > well. I tend to think that it's not good coding on my part to rely on > features that I don't even

Re: [Hol-info] Learning HOL Light

2014-02-13 Thread Bill Richter
Thanks, John! I'll read p 34 more carefully. Your example shows the behavior I'd want from REWRITE_TAC. You theorem is # ADD_AC;; val it : thm = |- m + n = n + m /\ (m + n) + p = m + n + p /\ m + n + p = n + m + p This is a good exercise for my right associativity skill. and that's what it

Re: [Hol-info] Learning HOL Light

2014-02-12 Thread John Harrison
Hi Bill, | I'm quite mystified that the REWRITE_TAC[DIST_SYM] only rewrote the | middle dist term Generally speaking, with constructs like REWRITE_TAC that apply rewrites repeatedly, there are special heuristics to deal with those that would obviously loop indefinitely. (This doesn't apply to mo

Re: [Hol-info] Learning HOL Light

2014-02-12 Thread Bill Richter
Here's a question about free variables and REWRITE_TAC (and other thmlist->tactics). Almost every usage of USE_THEN in the HOL Light sources is of the form USE_THEN label MATCH_MP_TAC Here's an example of a labeled assumption used in thmlist of MESON_TAC: let NSQRT_2 = prove (`!p q. p * p =

Re: [Hol-info] Learning HOL Light

2014-02-12 Thread Bill Richter
I have a question about REWRITE_TAC. I was invited to speak at the conference https://ihp2014.pps.univ-paris-diderot.fr/doku.php?id=workshop_1 where John, Freek, Tobias Nipkow and Tom Hales are 4 of the 14 plenary speakers, and I hope folks here will help answer various HOL Light questions I sti

Re: [Hol-info] Learning HOL Light

2014-01-25 Thread Bill Richter
In my last post I should have said instead that HOL programmers have very good concrete down-to-earth adjoint functors skills, which pure mathematicians tend to have good theoretical adjoint functors skills, and maybe interfaces that hides the adjoint functors calculations are good. Today I'd a

Re: [Hol-info] Learning HOL Light

2014-01-24 Thread Bill Richter
I want to explain GEN_REWRITE_TAC, which I just understood (partly because of Rob and Michael's advice here about is_comb etc), and to argue that 1) HOL programmers are very good at the pure math skill of adjoint functor, and 2) getting mathematicians to use HOL may require an interface that hide

Re: [Hol-info] Learning HOL Light

2013-09-29 Thread Bill Richter
John, I'm sorry it took me so long to respond to your MP_TAC vs MESON_TAC post of Jun 1: | What's the difference between MESON_TAC[th1; th2; th3];; and | MP_TAC th3;; | MESON_TAC[th1; th2];; The difference is that after MP_TAC any free variables or free type variables effectively

Re: [Hol-info] Learning HOL Light

2013-08-04 Thread Bill Richter
Mark, I now understand your HOLZero/print_exn idea, and it works pretty well: exception Readable_fail of string;; let PrintErrorFail s = raise(Readable_fail s);; let print_exn e = match e with | Readable_fail s -> print_string s | _ -> print_string (Printexc.to_string e);; #install

Re: [Hol-info] Learning HOL Light

2013-08-02 Thread Bill Richter
Mark, your update_database.ml idea worked great! My code simplified to (* From update_database.ml: Execute any OCaml expression given as a string. *) let exec = ignore o Toploop.execute_phrase false Format.std_formatter o !Toploop.parse_toplevel_phrase o Lexing.from_string;; (* exec and a re

Re: [Hol-info] Learning HOL Light

2013-08-02 Thread Mark
>> HOL Light and HOL Zero don't use OCaml's lexing facilities, but >> implement their own from scratch. > > Wow, I didn't know that! Where can I learn about HOL Light lexing > facilities? HOL Light's nice, simple and compact, but is a bit light on source code comments. It's got a snappy little l

Re: [Hol-info] Learning HOL Light

2013-08-02 Thread Bill Richter
Mark, thank you very much! You gave me a good idea, to try to use the top of update_database.ml directly: (* Execute any OCaml expression given as a string. *) let exec = ignore o Toploop.execute_phrase false Format.std_formatter o !Toploop.parse_toplevel_phrase o Lexing.from_string;

Re: [Hol-info] Learning HOL Light

2013-08-02 Thread Mark
Hi Bill, > Let me try to explain. My only objection to my PrintErrorFail is minor: > it prints Exception: Failure "". at the end, but arguably this is a good > error message. What you do is print out the message regardless of whether the exception bubbles up to the toplevel. The solution I'm

Re: [Hol-info] Learning HOL Light

2013-08-01 Thread Mark
Hi Bill, > By grepping, I see occurrences of Format.print_string and > Format.print_newline commands in e.g. make.ml, but isn't the Format > prefix here unnecessary, because they're pervasive? Isn't that > explained in section 20.2 Module Pervasives : The initially opened > module of the ocaml re

Re: [Hol-info] Learning HOL Light

2013-07-31 Thread Bill Richter
Mark, I think you can write some good Light documentation, and maybe improve the HOL Light code. Let me try to explain. My only objection to my PrintErrorFail is minor: it prints Exception: Failure "". at the end, but arguably this is a good error message. Here's what I like about my def: 1

Re: [Hol-info] Learning HOL Light

2013-07-29 Thread Bill Richter
Thanks, Mark! I see your include Format;; in printer.ml. By grepping, I see occurrences of Format.print_string and Format.print_newline commands in e.g. make.ml, but isn't the Format prefix here unnecessary, because they're pervasive? Isn't that explained in section 20.2 Module Pervasives :

Re: [Hol-info] Learning HOL Light

2013-07-29 Thread Mark
Hi Bill, > Thanks, Mark! That sounds like a good tip, but can you be more specific? I > produce error message with this function > > let PrintErrorFail s = > open_box 0; print_string s; close_box (); print_newline (); fail();; > > > But I only want to change the OCaml exception printer for m

Re: [Hol-info] Learning HOL Light

2013-07-27 Thread Bill Richter
Thanks, Mark! That sounds like a good tip, but can you be more specific? I produce error message with this function let PrintErrorFail s = open_box 0; print_string s; close_box (); print_newline (); fail();; BTW I do not understand why this works, why I don't have to say Format.open_box an

Re: [Hol-info] Learning HOL Light

2013-07-26 Thread Mark
Hi Bill, You can overwrite the OCaml exception printer if you want, like I do in HOL Zero in 'exn.ml' and the main build file 'holzero.ml', where the error message is part of the exception and gets printed out if/when the exception bubbles to the top. You could do something like this: let pri

Re: [Hol-info] Learning HOL Light

2013-07-26 Thread Bill Richter
Vince, I figured out how to print error messages without double-quotes and with actual newlines! This and a lot more is explained in the ocaml doc in "Module Format", which I got the idea to use after looking at Freek's miz3.ml. I'd like to get rid of a trailing message Exception: Failure "".

Re: [Hol-info] Learning HOL Light

2013-07-07 Thread Bill Richter
I learned a number of basic facts thinking about Vince and Freek's ideas, and now I have no "unused variable" warnings in RichterHilbertAxiomGeometry/readable.ml. I have some questions. I reworked Freek's code to get eliminate the "unused variable" warning I was getting with `is_thm': let

Re: [Hol-info] Learning HOL Light

2013-07-04 Thread Bill Richter
Vince, I tried your new `ignore' idea with your previous `get' idea, and I think it works but doesn't suppress error messages. That is, it works fine if I replace my definition of `is_thm' in RichterHilbertAxiomGeometry/readable.m, with your let is_thm s = try ignore (exec_thm s); true wi

Re: [Hol-info] Learning HOL Light

2013-07-02 Thread Bill Richter
Thanks, Vince! Your is_thm works fine, but I get a warning when I try to extend your idea: let is_thm s = try ignore (exec_thm s); true with _ -> false;; let is_tactic s = try ignore (exec_tactic s); true with _ -> false;; let is_thmtactic s = try ignore (exec_thmtactic s); true wi

Re: [Hol-info] Learning HOL Light

2013-07-01 Thread Vincent Aravantinos
Hi Bill, Le 2013-07-02 à 00:00, Bill Richter a écrit : > I hope folks can help me improve my code readable.ml, which in the new > subversion 166 is in > hol_light/RichterHilbertAxiomGeometry/ > > 1) Can you pretty-print error messages in HOL Light? E.g. here: > > with Not_found -> failwith

Re: [Hol-info] Learning HOL Light

2013-07-01 Thread Bill Richter
I hope folks can help me improve my code readable.ml, which in the new subversion 166 is in hol_light/RichterHilbertAxiomGeometry/ 1) Can you pretty-print error messages in HOL Light? E.g. here: with Not_found -> failwith("missing initial \"proof\" or final \"qed;\" in "^ s) It would be nice

Re: [Hol-info] Learning HOL Light

2013-06-10 Thread Bill Richter
Thanks for the great response, John! I'm sorry it took me so long to respond, and I still don't have a good response, but: l think I see what you're saying about MP_TAC, MESON_TAC and FREEZE_THEN, and I'll have to do more experiments. I ought to learn how parse_preterm works, and I would if

Re: [Hol-info] Learning HOL Light

2013-06-01 Thread John Harrison
Hi Bill, | Can someone explain the point of HOL Light parsers, as in the | reference manual entry for many: There is an approach to writing parsers in functional languages where you can make functional code look almost like an abstract grammar. These HOL Light functions are a pretty simple versi

Re: [Hol-info] Learning HOL Light

2013-05-24 Thread Bill Richter
Can someone explain the point of HOL Light parsers, as in the reference manual entry for many: This is one of a suite of combinators for manipulating ``parsers''. A parser is simply a function whose OCaml type is some instance of :('a)list -> 'b * ('a)list. The function should take a

Re: [Hol-info] Learning HOL Light

2013-05-12 Thread Bill Richter
Vince and Freek, I was wrong and you were right! First I used Vince's let get = Obj.magic o Toploop.getvalue;; but then I switched over to Freek's much more complicated exec_thm, as I could not see how to test for theorems with get, as I didn't know how to handle a get exception. My low-tec

Re: [Hol-info] Learning HOL Light

2013-05-09 Thread Bill Richter
Here's a reasonable version of a miz3 interface for HOL Light. Thanks to Vince, Freek and Petros for helping me out! I believe this is the end of this parser-based discussion, so allow me to summarize. It's good for formal proofs to readable, especially if you want to attract mathematician

Re: [Hol-info] Learning HOL Light

2013-05-08 Thread Bill Richter
Thanks, Ramana! I think it would be good to compare what I'm doing with how things are in HOL4, because 1) John has always stressed the importance of readability in formal proofs, and 2) my code looks like it will be a lot simpler than John's mizar.ml or Freek's miz.ml. I know nothing of HOL4,

Re: [Hol-info] Learning HOL Light

2013-05-07 Thread Ramana Kumar
> > Do such regexp issues arise in HOL4 and SML? > HOL4 does not have a separate tactic language. Proof scripts are written in SML directly. (The SML implementation will have a parser etc. though.) HOL4 does have a sophisticated parser for the object language of HOL terms and types, which I thin

Re: [Hol-info] Learning HOL Light

2013-05-07 Thread Ramana Kumar
You can't detect matching braces with regular expressions. (See e.g. http://stackoverflow.com/questions/546433/regular-expression-to-match-outer-brackets .) What you probably need is to define your tactic language with a grammar and write a parser for it. You're going down a route that I think ma

Re: [Hol-info] Learning HOL Light

2013-05-07 Thread Bill Richter
Thanks, Ramana! I created my thmlist_tactics list in the same way that HOL Light creates the theorems database in hol_light/database.ml: needs "help.ml";; theorems := [ "ABSORPTION",ABSORPTION; "ABS_SIMP",ABS_SIMP; "ADD",ADD; [...] "vector",vector ];; That doesn't strike me as a painful solutio

Re: [Hol-info] Learning HOL Light

2013-05-06 Thread Ramana Kumar
On Sun, May 5, 2013 at 5:52 PM, Bill Richter wrote: > Did I show this wasn't true in this theorem biz here, and did Ramana show > it wasn't true in HOL4 with DB.fetch? > Not quite. Using a database that maps strings to values is a way to solve the problem of looking up a theorem by its name. But

Re: [Hol-info] Learning HOL Light

2013-05-05 Thread Bill Richter
Here's a toy version of the miz3 interface for HOL Light that I'm aiming for, with 3 easy proofs. I've coded up quite a bit more (although not case_split), but this is short enough to show the idea. This was really a lot of fun to code up. Thanks again to Vince and Freek! -- Best, Bill #l

Re: [Hol-info] Learning HOL Light

2013-05-05 Thread Bill Richter
Thanks, Freek, Ramana and Vincent! I think (assoc thm !theorems) gives a nicer solution: RK> In HOL Light I guess there's no database of theorems indexed by RK> names? That would be one way to avoid having to use Obj.magic. Yes! The database is an association listtheorems, which is 2212 lines

Re: [Hol-info] Learning HOL Light

2013-05-05 Thread Vincent Aravantinos
Am 2013-05-05 um 03:31 schrieb Ramana Kumar : > On Sun, May 5, 2013 at 5:45 AM, Vincent Aravantinos > wrote: >> Hi Bill >> >> 2013/5/4 Bill Richter >>> Question: given the string of a theorem "IN_ELIM_THM", how can I access the >>> theorem IN_ELIM_THM? Or given a string of a thm_list->tact

Re: [Hol-info] Learning HOL Light

2013-05-05 Thread Ramana Kumar
On Sun, May 5, 2013 at 5:45 AM, Vincent Aravantinos < vincent.aravanti...@gmail.com> wrote: > Hi Bill > > 2013/5/4 Bill Richter > >> Question: given the string of a theorem "IN_ELIM_THM", how can I access >> the theorem IN_ELIM_THM? Or given a string of a thm_list->tactic >> "MESON_TAC", how can

Re: [Hol-info] Learning HOL Light

2013-05-04 Thread Vincent Aravantinos
Hi Bill 2013/5/4 Bill Richter > Question: given the string of a theorem "IN_ELIM_THM", how can I access > the theorem IN_ELIM_THM? Or given a string of a thm_list->tactic > "MESON_TAC", how can I access MESON_TAC? # let get = Obj.magic o Toploop.getvalue;; val get : string -> 'a = # ((get "I

Re: [Hol-info] Learning HOL Light

2013-05-04 Thread Bill Richter
Question: given the string of a theorem "IN_ELIM_THM", how can I access the theorem IN_ELIM_THM? Or given a string of a thm_list->tactic "MESON_TAC", how can I access MESON_TAC? This is a problem that Freek must have solved in miz3.ml, but I can't figure out how. John did not seem to solve it

Re: [Hol-info] Learning HOL Light

2013-05-01 Thread Bill Richter
Thanks for explaining the ((asl,w) as g) of tactics.ml, Vince! I now see your explanation is also in ocaml-4.00-refman.pdf, sec 6.6 Patterns. I know you told me about your HOL-Light-Q, but you told me not to read it, and you did not tell me how to get the nonempty environment we need. But it'

Re: [Hol-info] Learning HOL Light

2013-04-30 Thread Vincent Aravantinos
Le 01.05.13 00:29, Bill Richter a écrit : > Thanks, Vince! It look like your q.ml and the HOL4 version are both > counterexamples to what I've been posting, that the only place where > retypecheck is used with a nonempty environment is in John & Freek's > Mizar-like code. I'm really happy to h

Re: [Hol-info] Learning HOL Light

2013-04-30 Thread Bill Richter
Thanks, Vince! It look like your q.ml and the HOL4 version are both counterexamples to what I've been posting, that the only place where retypecheck is used with a nonempty environment is in John & Freek's Mizar-like code. I'm really happy to have been wrong! I can definitely see some simila

Re: [Hol-info] Learning HOL Light

2013-04-30 Thread Vincent Aravantinos
On 04/30/2013 10:24 AM, Bill Richter wrote: > I wrote my type annotation reducing versions of EXISTS_TAC and X_GEN_TAC, and > cleaned up the code, with > > let (make_env: goal -> (string * pretype) list) = > fun (asl,w) -> map ((fun (s,ty) -> s,pretype_of_type ty) o dest_var) >

Re: [Hol-info] Learning HOL Light

2013-04-30 Thread Bill Richter
I wrote my type annotation reducing versions of EXISTS_TAC and X_GEN_TAC, and cleaned up the code, with let (make_env: goal -> (string * pretype) list) = fun (asl,w) -> map ((fun (s,ty) -> s,pretype_of_type ty) o dest_var) (freesl (w::(map (concl o snd) asl)));;

Re: [Hol-info] Learning HOL Light

2013-04-29 Thread Bill Richter
Thanks, Konrad and Mark! I sorta understood what you posted on my own, by thinking about John & Freek's Mizar-like code. And thanks to Vince, as I now have the type annotation reduction I wanted, using retypecheck code from Freek's function parse_context_term from Mizarlight/miz2a.ml, which is

Re: [Hol-info] Learning HOL Light

2013-04-28 Thread Konrad Slind
> I bet the information that p, q, and m have type num is stored somewhere. > I know we can infer the type num from the assumptions, but that's not always true. > Can you tell me where this type information is stored? Every occurrence of a variable in HOL includes the type of the variable. You ca

  1   2   3   >