[Hol-info] formalizing an axiom schema and MacOS OCaml/Camlp binaries

2014-11-15 Thread Bill Richter
Does anyone know how to formalize an axiom schema in HOL Light? I'm interested in formalizing the Tarski axiomatic geometry Axiom schema of Continuity http://en.wikipedia.org/wiki/Tarski%27s_axioms#The_axioms and the part I don't know how to handle involves the universal quantification Let

Re: [Hol-info] Matrix multiplication in HOL

2014-08-15 Thread Bill Richter
Ramana and Robert, matrix multiplication in HOL Light is defined in the Multivariate directory. I'm not a real expert on this, but you can find examples of Multivariate-powered matrix multiplication in

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

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

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 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

Re: [Hol-info] Learning HOL Light

2014-03-24 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 about

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

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

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

Re: [Hol-info] Learning HOL Light

2014-03-21 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

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

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

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

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 file

Re: [Hol-info] Learning HOL Light

2014-03-17 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 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

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

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-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 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

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-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

Re: [Hol-info] More on set comprehensions

2014-01-24 Thread Bill Richter
Rob, I think Michael's IMAGE idea may show that I was wrong about your semantic embedding idea. I said that I was happy with the HOL Light parser's definition of the set comprension {f x | R x} = {a | ∃x. a = f x ∧ R x} and I didn't think that it made sense to talk about the semantic value

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

Re: [Hol-info] More on set comprehensions

2014-01-03 Thread Bill Richter
Rob, thanks for correcting my variable capture mistake: In this case, the two instances of x have different types and there is no variable capture, since two variables with the same name but different types are considered to be distinct in the logic. Right, and you have to do the type

Re: [Hol-info] More on set comprehensions

2013-12-31 Thread Bill Richter
Rob, I learned a lot from your post! My conclusion is that in both HOL Light and HOL4, {f x | R x} = λa. ∃x. R x ∧ a = f x for some variable a than is not free in R x or f x. I judge both HOL approaches to have pluses minuses, and can't rate one above the other: 1) In HOL Light, the proof

Re: [Hol-info] HOL Light set comprehensions

2013-12-27 Thread Bill Richter
Michael, that's very helpful! You taught me something about term.ml, and reminded me of that every HOL term is either a constant, a variable, a function (abstraction) or a function application (combination). So pasting your code into HOL Light gives the right answers: let PrintTermType tm =

Re: [Hol-info] HOL Light set comprehensions

2013-12-17 Thread Bill Richter
Thanks, Rob! This is helpful info: In all the HOLs, you will find that the parser uses various constants like [the SETSPEC definition] to represent derived syntactic constructs (like set comprehensions) in terms of primitive constructs (like conjunction and equality) in such a way

Re: [Hol-info] HOL Light set comprehensions

2013-12-12 Thread Bill Richter
Thanks, Rob! Can you explain how HOL4 performs the quantification with GSPEC? I would think that GSPEC would have to choose a fresh variable, and I've never understood how that's to be done, because you have know that your new fresh variable hasn't already been chosen. So I would think that

Re: [Hol-info] HOL Light set comprehensions

2013-12-06 Thread Bill Richter
Rob, I think the answer to your interesting question involves more complicated set abstractions like {y + 6 | y 0}. I think here we see the merit of the HOL Light invisible variables, as this simple proof shows: g `EMPTY = {y + 6 | y 0}`;; e(REWRITE_TAC[SETSPEC; GSPEC]);;

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

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);;

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: [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-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

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 to at

Re: [Hol-info] Voevodsky's Homotopy type theory book: HOL relevance?

2013-06-24 Thread Bill Richter
I just noticed that Voevodsky's Homotopy Type Theory book deals on p 7 with issues I've posted here: http://hottheory.files.wordpress.com/2013/03/hott-online.pdf One difficulty often encountered by the classical mathematician when faced with learning about type theory is that [it is not

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-05-25 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-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

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 solution, but I

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-02 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

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

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-27 Thread Bill Richter
Vince, I think you just explained to me that I've been misunderstanding HOL all along! What I'd been asking about environment and scope of variable sounds now like the simple fact that HOL allows free variables. I think that means that FOL is actually quite different than the way

Re: [Hol-info] Learning HOL Light

2013-04-25 Thread Bill Richter
Thanks, Vince! I didn't know this: Mathematically, a variable is the pair of a name and a type, so if two variables have the same name and the same type then they're just the same variable. But I should have known this, because there are 4 different kinds of terms, each having a type,

Re: [Hol-info] Learning HOL Light

2013-04-23 Thread Bill Richter
Vince, I solved your parser/preterm/retypecheck exercise to fix my cases, using this below: (term_of_preterm o (retypecheck [])) (end_itlist (fun pt1 pt2 - (Combp (Combp (`;\/`, pt1), pt2))) pretermDisjlist) But I think it's much simpler to get the parser to produce strings instead of

Re: [Hol-info] Learning HOL Light

2013-04-17 Thread Bill Richter
Thanks, Vince! I think you're saying that the HOL4 Q-module can do type inference using the goal. I would guess that Petros's IsabelleLight techniques (which I used for my consider) could also do this goal-powered type inference. Freek's miz3.ml does much more type inference.

Re: [Hol-info] Learning HOL Light

2013-04-16 Thread Bill Richter
Thanks, Vince! Here's an example of a free variable occurrence in the scope of a variable binding whose type is not inferred, from hol_light/Examples/inverse_bug_puzzle_tac.ml. I picked a long proof so you can clearly see. I apologize is my ML-like terminology isn't correct in HOL: let

Re: [Hol-info] Learning HOL Light

2013-04-15 Thread Bill Richter
Thanks, Vince! It worked, once I substituted your quotexpander into system.ml and restarted HOL Light with ocaml #use hol.ml;; Now I can get to work on your exercise. A few questions: Why didn't my attempt work? Why did I get the error message Exception: Noparse. from let parse_qproof

Re: [Hol-info] Learning HOL Light

2013-04-15 Thread Bill Richter
Vince, thanks for fixing my error! This works now: let parse_qproof s = (fst o parse_preterm o lex o explode) (String.sub s 1 (String.length s - 1));; Now I get the same output for both `;1 + 1`;; and, with your new quotexpander, `'1 + 1`;; val it : preterm = Combp (Combp (Varp (+,

Re: [Hol-info] Learning HOL Light

2013-04-13 Thread Bill Richter
Thanks, Petros! I hate to be an ingrate, but could you port one of my longer proofs to IsabelleLight? It might help if you read section 10.1, The bug puzzle, of the HOL Light tutorial, or hol_light/Examples/inverse_bug_puzzle_tac.ml. Thanks for telling me about cases: I'll change the name.

Re: [Hol-info] Learning HOL Light

2013-04-08 Thread Bill Richter
Vince, you recommended replacing the lines let quotexpander s = if String.sub s 0 1 = : then parse_type \^ (String.escaped (String.sub s 1 (String.length s - 1)))^\ else parse_term \^(String.escaped s)^\;; in system.ml by: let quotexpander s = if

Re: [Hol-info] Learning HOL Light

2013-04-06 Thread Bill Richter
Petros, I think this is a pretty good exercise for a novice (unless they use MESON_TAC[], which solves it instantly): g `P == (P==Q) == Q`;; e (REPEAT DISCH_TAC);; e (FIRST_ASSUM (fun x - FIRST_ASSUM (fun y - ACCEPT_TAC (MP x y;; I'm still kind of a novice myself, so I tried to

Re: [Hol-info] Learning HOL Light

2013-04-05 Thread Bill Richter
Petros, your code worked great, and I now have consider working the way I wanted, included below. I couldn't use it for cases, and that's a good place to try Vincent's quotexpander idea. I put your code into BuildExist, and borrowed some of Marco Maggesi's HYP ideas to turn a string into a

Re: [Hol-info] Learning HOL Light

2013-04-04 Thread Bill Richter
Thanks, Vincent! I definitely have to work your exercise now. Two dumb questions: 1) how do I get quotexpander to turn off type inference by putting a period at the end of the terms? Of all your possibilities, that's the one I like best. 2)Doesn't Ocaml use the applicative order application

Re: [Hol-info] Learning HOL Light

2013-04-04 Thread Bill Richter
Petros, your consider code is a huge step toward what I need. I'll try to finish modifying your code tonight. Here's the string version I have now, and below that is an earlier term version: let consider vars_t prfs lab = let len = String.length vars_t in let rec findSuchThat = function

Re: [Hol-info] Learning HOL Light

2013-04-03 Thread Bill Richter
Vincent, you gave me a nice exercise which I'll try to work, but it dawned on me that we can't use that unless we permanently change the parser. E.g. every time I use miz3, I have to change the parser for that entire HOL Light session. The same thing goes for your nice hack of quotexpander:

Re: [Hol-info] Learning HOL Light

2013-04-02 Thread Bill Richter
Freek, can you explain your code miz3.ml in really broad detail? I think miz3.ml is an amazing accomplishment, but I don't understand it, and much of what I don't understand involves parsing. Petros, thanks for your new stuff, which I haven't understood yet. I ran your code, which works:

Re: [Hol-info] Learning HOL Light

2013-04-02 Thread Bill Richter
Thanks, Vincent, but I really was wrong, I just made an error in describing my mistake. You're right (and I knew it): if you just type `1 + 1`, you still get the exception: My error was thinking that the presence of preterm_of_term would keep `1 + 1` from being evaluated, and that was

Re: [Hol-info] Learning HOL Light

2013-04-02 Thread Bill Richter
Vince, this is great! May I ask you to learn about miz3? With a little work, I think miz3.ml can be turned into a general purpose interface for HOL Light, with much improved readability, with fewer type annotations in particular. The part of miz3.ml we don't need is what I think is the hard

Re: [Hol-info] Learning HOL Light

2013-04-01 Thread Bill Richter
Thanks, Vincent and Petros! I'll have to study your interesting posts carefully. A few quick comments: Petros, it looks like you're doing something that's a whole lot more interesting than my project. I'm not sure I have the terminology straight: Suppose we bind a variable x, say with

Re: [Hol-info] Learning HOL Light

2013-04-01 Thread Bill Richter
Thanks, Vincent! Let me be more precise. I want functions that act on terms that are somewhat like the ocaml function ^ which concatenates strings. I don't know how to define ^, but I know how to define similar functions on lists in ocaml. There's a simple example in the official

Re: [Hol-info] Learning HOL Light

2013-03-31 Thread Bill Richter
Thanks, Ramana! You're the person I wanted to talk to. I already had a vague understand of what you explained (thanks for explaning), but I have a different question about HOL4: I'm convinced that the solution to my problem involves camlp (I use camlp5-6.05), as I can't find anything in the

Re: [Hol-info] Learning HOL Light

2013-03-29 Thread Bill Richter
John Harrison pointed out that my Mizar-like function `consider' and `cases' I just posted won't work if a string contains /\ followed immediately by a newline. We see the problem from # move (B,A,C) (B,A,X) /\ move (B,A,X) (B',A,X) /\ move (B',A,X) (B',A,Y) /\ move (B',A,Y) (B',A',Y);;

Re: [Hol-info] Learning HOL Light

2013-03-23 Thread Bill Richter
I fixed my Mizar-like function `consider' (see below) using strings, Marco's DESTRUCT_TAC ideas and Freek's parse_term ideas, and used it to port the HOL Light tutorial (p 81) readable proof of the irrationality of sqrt 2. I realized that John's function (p 78) `using' can be thought of

Re: [Hol-info] Learning HOL Light

2013-03-22 Thread Bill Richter
Freek Wiedijk answered a question: string_of_term and then parse_term take terms to strings and strings to terms. Using parse_term, I made a start toward Freek's miz3 interface which doesn't use backquotes and require the extra type annotations. It also uses Marco Maggesi's new

Re: [Hol-info] build failure

2013-01-23 Thread Bill Richter
Sounds like good work, Marko! You ought to post your OS, as I think the Makefile does different things depending on what it detects your OS to be. -- Best, Bill -- Master Visual Studio, SharePoint, SQL, ASP.NET, C#

Re: [Hol-info] ProofGeneral + miz3?

2013-01-23 Thread Bill Richter
Marko, Petros Ramana, I use Emacs miz3, with a minimal interface hol_light/RichterHilbertAxiomGeometry/hol-light-fonts.el which mostly allows writing HOL Light code with math characters. The Isabelle folks are phasing out ProofGeneral in favor of jedit. I would like to have automatic

Re: [Hol-info] Learning HOL Light

2013-01-23 Thread Bill Richter
I think I just learned something about MP_TAC, that these are different: MP_TAC t THEN MESON_TAC[] MESON_TAC[t] This is important to me because of the HOL Light tutorial's Mizar-like definitions let by labs tac = MAP_EVERY (fun l - USE_THEN l MP_TAC) labs THEN tac;; let using ths tac = MAP_EVERY

Re: [Hol-info] build failure

2013-01-21 Thread Bill Richter
Marko, as Ramana said, you're having a ocaml/campl5 problem. You didn't say which HOL Light version you're using. I reccommend the latest subversion. That might fix the problem. If not, read John Harrison's post http://sourceforge.net/mailarchive/message.php?msg_id=29268458 You didn't say

Re: [Hol-info] Learning HOL Light

2013-01-18 Thread Bill Richter
Thanks, Ramana! I think I wasn't clear. As Rob explained, there's a type quantification problem: we can't define Fibration p E B. Any time you wish to write Fibration p E B, you must write instead !M:A-bool. HLP p E B M. With that in mind, I don't understand your objection It's not

Re: [Hol-info] Learning HOL Light

2013-01-18 Thread Bill Richter
Just because you don't write the A doesn't mean it isn't there. And if you'll still need to be careful if there's an A in context, whether you write it explicitly or not, although hopefully type inference will pick another type variable for you if there's already an A around (e.g.

Re: [Hol-info] Learning HOL Light

2013-01-16 Thread Bill Richter
Ramana and Rob, thanks for telling me about dependent types, which I'd heard Coq had. I think John Harrison believes that Coq dependent types are really complicated, so I'm happy with HOL not allowing 3 to have type num in the vector type real^3, , and instead requiring 3 to be a type. If

Re: [Hol-info] Learning HOL Light

2013-01-15 Thread Bill Richter
In HOL Light vectors, there's something like type quantification, and I thought that wasn't possible in HOL. First, I could not find an HOL4 analogue of HOL Light vectors. The basic idea seems to be that to define the type operator ^ which yields the type real^3 which denotes vectors in R^3,

Re: [Hol-info] Learning HOL Light

2013-01-05 Thread Bill Richter
Thanks, Ramana! I'll try to find Larry's book ($66.30 on Amazon). But since it's ML code, uh, can't we read the sources and get a pretty good idea? Is there an Isabelle doc version of this? Thanks for the feedback on my MP_TAC o SPEC code, which I forgot to say is John's code

Re: [Hol-info] Learning HOL Light

2013-01-04 Thread Bill Richter
Thanks, Ramana! That's very helpful, clarifying DISCH_TAC and explaining To keep things really simple: thm_tactic is just an abbreviation for (thm - tactic). That is, a thm_tactic is any function that takes a theorem and returns a tactic. Great, I didn't know how to parse the phrase

Re: [Hol-info] Learning HOL Light

2013-01-02 Thread Bill Richter
Thanks, Petros! It will take me a while to digest your post. BTW I was wrong about the HOL Light reference manual treatment of STRIP_TAC, which is fine. BTW how does HOL and Informatics fit together? How do they not? :) They are connected in so many ways... I think hol-info ought

Re: [Hol-info] Learning HOL Light

2012-12-18 Thread Bill Richter
I guess you've found a bug in the documentation. Thanks, Michael! I think you're right, because the ref manual makes the same apparent error: http://www.cl.cam.ac.uk/~jrh13/hol-light/reference.html Given a goal (A,t), STRIP_TAC removes one outermost occurrence of one of the connectives

Re: [Hol-info] Learning HOL Light

2012-12-17 Thread Bill Richter
Thanks, Petros Michael! I didn't completely understand what you wrote, but I see how Michael simplified Petros's proof. This is really nice, and I can probably just modify your code to finish the exercise in footnote 23, p 67 of the HOL Light tutorial: let addN = new_definition `!p p' n.

Re: [Hol-info] Learning HOL Light

2012-12-13 Thread Bill Richter
Thank, Ramana and Petros! Your code looks very helpful, and I'll study it, but first I want to explain something I did with miz3's `consider' but could not port to HOL Light, even using the tutorial p 78 Mizar-like `consider'. Here's a simpler version of the tutorial p 65 `reachable' let

Re: [Hol-info] Learning HOL Light

2012-12-13 Thread Bill Richter
Petros, I really like your fix of my code, and it's even nicer than Ramana's, although I need to understand why his CHOOSE_TAC(ASSUME t) works. Your fix SUBGOAL_THEN `?m. p = 2 * m` CHOOSE_TAC is especially appealing to me, because you're usage just substitutes CHOOSE_TAC for ASSUME_TAC, as

Re: [Hol-info] Learning HOL Light

2012-12-11 Thread Bill Richter
I have a question about X_CHOOSE_TAC and another vote for miz3. In miz3 you can easily define variables with `consider'. The HOL Light tutorial only explains two ways to define variables, both in proofs (p 73--81) of the irrationality of sqrt{2}. John's p 78 Mizar-like `consider' is close to

Re: [Hol-info] Learning HOL Light

2012-12-09 Thread Bill Richter
Mark, thanks for explaining my irregular syntax (how do I learn I can't mix symbolic and alpha-numeric characters?), and that HOL Zero precedence is similar to HOL Light's. I have a SWAP_FORALL_THM question an a vote for miz3. I got this tactics proof to work, but I don't know why it does:

Re: [Hol-info] Learning HOL Light

2012-12-07 Thread Bill Richter
Thanks, Mark! This is very cool, and I did not know it: Milner type inference tells us that type annotations are never needed! And I don't need type annotations for FunctionSpace! These two results are fine: let FunctionSpace = new_definition `! s t. s --- t = {f | (! x. x IN s == f

Re: [Hol-info] Learning HOL Light

2012-12-06 Thread Bill Richter
Thanks, Mark! Your precedence list explains my code. Why don't we try to prove your precedence order is correct for HOL Light. Don't we just have to understand parser.ml? I just realized I don't need type annotations if use tactics: let CartesianProduct = new_definition `! X Y. X times

[Hol-info] Learning HOL Light

2012-12-05 Thread Bill Richter
I'm trying to learn HOL Light by reading the tutorial, and I keep running into things I don't understand. Maybe it's a good idea to have a thread for the experts to straighten out beginners like me. Here's my latest problem, about parenthesis and maybe precedence. I have an improved proof of

Re: [Hol-info] sqrt{2} irrationality and miz3

2012-12-03 Thread Bill Richter
I'm sorry, it's the HOL Light tactic DISCH_TAC, not MATCH_MP_TAC, that's much the same as the way the miz3 thesis changes from α ⇒ β to β after writing assume α; And DISCH_TAC is part of STRIP_TAC, which also includes GEN_TAC, which is much the same as the way the miz3 thesis changes from ∀

Re: [Hol-info] sqrt{2} irrationality and miz3

2012-12-02 Thread Bill Richter
I have a dumb question about interactive HOL Light proofs vs tactics scripts. I got the impression from p 48 of the tutorial that you can package an interactive (g e) proof as a tactic script with THEN. But that didn't work for me. Part of my question is how to debug a tactics script.

[Hol-info] sqrt{2} irrationality and miz3

2012-11-29 Thread Bill Richter
Continuing to study whether HOL Light tactics proofs can be ported to miz3, and if miz3 can explain tactics proofs, I turn to John's inductive proof (p 52 ff) of the sum of the first n natural numbers. John writes on p 53 The resulting goal may look like a mess, but I think the problem is just

[Hol-info] sqrt{2} irrationality and miz3

2012-11-28 Thread Bill Richter
I ported the HOL Light tutorial's proof of the irrationality of sqrt{2} (below). The tactics proof of NSQRT_2 (p 75) used the theorems num_WF, RIGHT_IMP_FORALL_THM, EVEN_MULT, ARITH, EVEN_EXISTS, ARITH_RULE, LE_MULT2, MULT_EQ_0; ARITH_RULE. My miz3 port used all these theorems except

Re: [Hol-info] rigorous axiomatic geometry proof in HOL Light

2012-11-07 Thread Bill Richter
John, I'm now certain that your proof of TRIANGLE_ANGLE_SUM_LEMMA is pretty much what I posted yesterday. I was confused about LAW_OF_COSINES, a vector triviality which I actually used. Here's a better proof that my son I worked out today. Which is to say, I gave it to him as a guided

Re: [Hol-info] rigorous axiomatic geometry proof in HOL Light

2012-11-06 Thread Bill Richter
John, I'm finally responding to your Aug 31 post. I lifted a bold, clever proof of TRIANGLE_ANGLE_SUM in Multivariate/geom.ml, although your actual proof may be simpler. I ran your code below, and saw the goalstacks, but they didn't help much, because it's really TRIANGLE_ANGLE_SUM_LEMMA I

Re: [Hol-info] Hol Light -- Where's the Easy button?

2012-11-06 Thread Bill Richter
John Nicol, you may not need this anymore, but a miz3 tip that I learned from your CARD exercise. Miz3 solves this immediately: let notXinterYZ_THM = thm `; ! x y z: A. ~(x = y) /\ ~(x = z) /\ ~(y = z) == {x} INTER {y, z} = {} by SET_RULE; `;; (* But let's try to get rid of the powerful

Re: [Hol-info] Hol Light -- Where's the Easy button?

2012-11-04 Thread Bill Richter
Thanks for the exercise, John! Konrad's tips were very helpful, and here's a awkward-looking miz3 solution below (using the default timeout of 1). As Konrad said, this is really an exercise in sets.ml, and CARD is a part of sets.ml I didn't know anything about. Miz3Tips, which as you noted

Re: [Hol-info] Hol Light -- Where's the Easy button?

2012-11-04 Thread Bill Richter
Thanks, John! Here's a better version of my miz3 code and an exercise for you. I think Konrad gave you excellent advice, especially considering that HOL4 does not yet have anything like miz3. I thought Konrad said that writing declarative proofs in miz3 is a very good way to actually learn

Re: [Hol-info] rigorous axiomatic geometry proof in HOL Light

2012-09-03 Thread Bill Richter
Thanks for correcting my typed LC, Ramana: no Y combinator (that makes sense, as Y sorta comes from Russell's paradox, which typing was designed to prevent), and it's simply typed LC. My heavy was just slang, and generated is from Hales's Notices article. Maybe I wasn't clear about syntax and

  1   2   3   >