John, I feel my code isn't quite perfect enough to submit my Hilbert
geometry paper.  Freek's miz3 code in the miz3 dox 1201.3601-1.pdf
solving the drinker's paradox on p 13--14 is perhaps designed to show
various features of miz3, but it is more than twice as long as needed:

Paste in these 4 commands and then the rest of this message:
   hol_light> ocaml
   #use "hol.ml";;  
#load "unix.cma";;
loadt "miz3/miz3.ml";;

let DRINKER = thm `;
  let P be A->bool;
  thus ?x. P x ==> !y. P y [22]

  proof
    (?x. ~P x) \/ ~(?x. ~P x) [1];
    cases by 1;
    suppose ?x. ~P x [2];
      consider x such that ~P x [3] by 2;
      take x;
      assume P x [4];
      F [5] by 3,4;
      thus !y. P y [6] by 5;
    end;
     suppose ~(?x. ~P x) [10];
       consider a being A such that T;
       take a;
       assume P a [11];
       let y be A;
       P y \/ ~P y [12];
       cases by 12;
       suppose P y [13];
         thus P y by 13;
       end;
       suppose ~P y [14];
         ?x. ~P x [15] by 14;
         F [16] by 10,15;
         thus P y [17] by 16;
       end;
     end;
   end`;;

(* Few of the above labels are needed.  Here's a much shorter version.  *)

horizon := 0;; 

let DRINKER = thm `;
  let P be A->bool;
  thus ?x. P x ==> !y. P y

  proof
    (?x. ~P x) \/ ~(?x. ~P x);
    cases by -;
    suppose ?x. ~P x;
      consider x such that ~P x by -;
      P x ==> !y. P y by -;
    qed by -;
    suppose ~(?x. ~P x);
      !y. P y by -;
    qed by -;
  end`;;


(* We can save one line by understanding that ~(!x. P x) <=> !y. P y: *)

let DRINKER = thm `;
  let P be A->bool;
  thus ?x. P x ==> !y. P y

  proof
    (!x. P x) \/ ~(!x. P x);
    cases by -;
    suppose (!x. P x);
    qed by -;
    suppose ~(!x. P x);
      consider x such that ~P x by -;
      P x ==> !y. P y by -;
    qed by -;
  end`;;

(* So I still don't know of an example where `take' is necessary. *)

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