Thanks, Michael!  I will treat the Logic Manual as a true description of the 
HOL in HOL Light, and I will try harder to read it.  I have a lot of trouble 
with your 3 sentences: 

   Sets in HOL Light and HOL4 are predicates over their respective
   types.  Types correspond to non-empty sets (as already discussed).
   So, because any predicate bounded above corresponds to a ZFC set,
   the sets in HOL do also correspond to ZFC sets.

One question would be: how does HOL Light turn my code into ZFC FOL?  That 
sounds like a tough question which I'm interested in, but it's not my real 
question.  I need to talk about sets to my audience of mathematicians in my 
paper I'll submit soon to the Amer Math Monthly.  I have 3900 lines of code 
http://www.math.northwestern.edu/~richter/RichterHOL-LightMiz3HilbertAxiomGeometry.tar.gz
and I want to tell them something about which sets I'm using.  My first 4 lines 
of code are

new_type("point",0);;
new_type_abbrev("point_set",`:point->bool`);;
new_constant("Between",`:point->point->point->bool`);;
new_constant("Line",`:point_set->bool`);;

I think that says I told HOL Light to define a set called point and two 
functions
Between: point x point x point ---> {True, False}
Line: P(point) ---> {True, False}
These sets & functions will be specified more closely by my axioms.  We then 
(in our heads) define a "point" to be an element of point, and a "line" to be a 
subset of point (i.e. element of P(point)) which Line sends to True.   I think 
my first axiom 
let I1 = new_axiom
  `! A B.  ~(A = B) ==> ?! l. Line l /\  A IN l /\ B IN l`;;
says that given two elements of the set point, there is a unique line 
containing them.  I often write 
  let A B C be point;
I think that means that A, B and C are variables referring to "points", and so 
(in our heads) we say that if 
Between A B C = True
then the middle "point" is "between" the two outer "points". 
I have a definition 

let Interval_DEF = new_definition
  `! A B. open (A,B) = {X | Between A X B}`;;

I think that says if A, B refer to two elements of a & a of the set point, then 
open (A,B) refers to the subset of point consisting of all "points" between a 
and a.  

Now is my interpretation of my own code correct?  I'm happy to cite the Logic 
Manual in my paper, but need to give audience more to go on.   Are there any 
examples in the Logic Manual that are as "concrete" as my description above?  
I'm not too worried right now about how HOL Light is able to prove my 
statements about such sets are actually true. 

I have technical questions about sets defined by {...}, whether they're 
abstractions or enumerations (thanks for the new terminology, Mark).   My first 
theorem is 

let IN_Interval = prove
 (`! A B X. X IN open (A,B) <=> Between A X B`,
     REWRITE_TAC[IN_ELIM_THM; Interval_DEF]);;

Here's the code in sets.ml for IN_ELIM_THM:

let IN_ELIM_THM = prove
 (`(!P x. x IN GSPEC (\v. P (SETSPEC v)) <=> P (\p t. p /\ (x = t))) /\
   (!p x. x IN GSPEC (\v. ?y. SETSPEC v (p y) y) <=> p x) /\
   (!P x. GSPEC (\v. P (SETSPEC v)) x <=> P (\p t. p /\ (x = t))) /\
   (!p x. GSPEC (\v. ?y. SETSPEC v (p y) y) x <=> p x) /\
   (!p x. x IN (\y. p y) <=> p x)`,
  REPEAT STRIP_TAC THEN REWRITE_TAC[IN; GSPEC] THEN
  TRY(AP_TERM_TAC THEN REWRITE_TAC[FUN_EQ_THM]) THEN
  REWRITE_TAC[SETSPEC] THEN MESON_TAC[]);;

Why do we have to work so hard to prove IN_Interval?  I would have thought that 
the {...} definition in  Interval_DEF just amounted to a lambda, so 
open (A,B) = {X | Between A X B}
means that 
open (A,B) = \X. Between A X B
With that lambda definition of open (A,B), my theorem IN_Interval looks really 
obvious, it just needs the first definition of sets.ml 

let IN = new_definition
  `!P:A->bool. !x. x IN P <=> P x`;;

Are you & Mark saying that HOL Light has a more complicated definition of {X | 
Between A X B}, one that requires the serious technicality of IN_ELIM_THM?  Can 
I just rewrite sets.ml myself with ordinary lambdas so that I don't need 
IN_ELIM_THM?  I think my audience of mathematicians needs some explanation, and 
hoping you'll give me one. 

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

Reply via email to