My old definition of ray OK.  The problem was int_angle, where I needed this 
clumsy looking usage, with the useless and "unsettling" first line of the proof


let InteriorWellDefined_THM = thm `;
  let A O B X P be point;
  assume P IN int_angle A O B     [H1];
  assume X IN ray O B DELETE O     [H2];
  thus P IN int_angle A O X

  proof
    int_angle A O B P     by H1, IN;
    consider a b such that
    ~Collinear A O B /\ 
    Line a /\ O IN a /\ A IN a /\ P NOTIN a /\ 
    Line b /\ O IN b /\ B IN b /\ P NOTIN b /\ 
    P,B same_side a /\ P,A same_side b     [def_int] by -, InteriorAngle_DEF;
    [...]

With my new code, it looks much better:

let InteriorWellDefined_THM = thm `;
  let A O B X P be point;
  assume P IN int_angle A O B     [H1];
  assume X IN ray O B DELETE O     [H2];
  thus P IN int_angle A O X

  proof
    consider a b such that
    ~Collinear A O B /\ 
    Line a /\ O IN a /\ A IN a /\ P NOTIN a /\ 
    Line b /\ O IN b /\ B IN b /\ P NOTIN b /\ 
    P,B same_side a /\ P,A same_side b     [def_int] by -, IN_InteriorAngle;
    [...]

The fixed comes from the set abstraction definition and sets.ml-type theorem 

let InteriorAngle_DEF = new_definition
 `∀ A O B P. 
  int_angle A O B = {P:point | ¬Collinear A O B ∧ ∃ a b. 
  Line a ∧ O ∈ a ∧ A ∈ a ∧ Line b ∧ O ∈ b ∧ B ∈ b ∧
  P ∉ a ∧ P ∉ b ∧ P,B same_side a ∧ P,A same_side b}`;;

let IN_InteriorAngle = prove
 (`∀ A O B P:point. P ∈ int_angle A O B ⇔ 
     ¬Collinear A O B ∧ ∃ a b. 
     Line a ∧ O ∈ a ∧ A ∈ a ∧ Line b ∧ O ∈ b ∧ B ∈ b ∧
     P ∉ a ∧ P ∉ b ∧ P,B same_side a ∧ P,A same_side b`,
  REWRITE_TAC[IN_ELIM_THM; InteriorAngle_DEF]);;

I think it's fine for me to write `IN_ELIM_THM' HOL Light code in my miz3 code 
http://www.math.northwestern.edu/~richter/RichterHOL-LightMiz3HilbertAxiomGeometry.tar.gz
that I don't understand, because `IN_ELIM_THM' code of this sort fills sets.ml, 
which I'm making heavy use of.  It would be nice to understand my own code, but 
that's no higher a priority than understanding sets.ml. Still, it would be nice 
to rewrite the parts of sets.ml I use in miz3, including this.

-- 
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/hol-info

Reply via email to