(* ========================================================================== *)
(* FLYSPECK - BOOK FORMALIZATION *)
(* *)
(* Lemma: UBHDEUU *)
(* Chapter: Tame Hypermap *)
(* Author: DANG TAT DAT *)
(* Date: 2010-04-7 *)
(* ========================================================================== *)
needs "/home/nyx/flyspeck/working/flyspeck_needs.hl";;
flyspeck_needs "fan/fan.hl";;
open Fan;;
open Sphere;;
(*Contravening Hypermap*)
(*Definition Const real number*)
let ESTD = new_definition `ESTD (V:real^3->bool) = {{v,w}|(v IN V) /\ (w IN V)/\ (&0) < dist(v,w) /\ dist(v,w) <= (&2)*h0}`;;
let ECTC = new_definition `ECTC (V:real^3->bool) = {{v,w}|(v IN V) /\ (w IN V)/\dist(v,w) = &2}`;;
(*-----------Thang Lemma------------------------------------------------------*)
let CKQOWSA_concl = `!(V:real^3 -> bool).(packing V) /\ (V SUBSET ball_annulus) ==> (FAN (vec 0,V,(ESTD V)))`;;
let CKQOWSA = new_axiom CKQOWSA_concl;;
(*---------------------------------------------------------------------------*)
(*UBHDEUU*)
g `!(V:real^3 -> bool).(packing V) /\ (V SUBSET ball_annulus) ==> (ECTC V) SUBSET (ESTD V)`;;
e (PURE_REWRITE_TAC [ECTC;ESTD]);;
e (REPEAT STRIP_TAC);;
e (PURE_REWRITE_TAC [SUBSET]);;
e (GEN_TAC);;
e (REWRITE_TAC [IN_ELIM_THM]);;
e (STRIP_TAC);;
e (EXISTS_TAC `v:real^3`);;
e (EXISTS_TAC `w:real^3`);;
e (ASM_REWRITE_TAC[]);;
e (STRIP_TAC);;
e (ARITH_TAC);;
e (REWRITE_TAC [h0]);;
e (ARITH_TAC);;
let ECTC_SUBSET_ESTD = top_thm();;
g `!(V:real^3 -> bool) (E:(real^3 ->bool)->bool). (packing V) /\ (V SUBSET ball_annulus) /\ ((E = ESTD V) \/ (E = ECTC V)) ==> FAN (vec 0,V,E) `;;
e (REPEAT GEN_TAC);;
e (STRIP_TAC);;
e (ASM_REWRITE_TAC[]);;
e (ASM_MESON_TAC[CKQOWSA]);;
e (ASM_REWRITE_TAC[]);;
e (SUBGOAL_THEN `ECTC (V:real^3 -> bool) SUBSET ESTD V` ASSUME_TAC);;
e (ASM_MESON_TAC [ECTC_SUBSET_ESTD]);;
e (SUBGOAL_THEN `(FAN (vec 0,(V:real^3->bool),(ESTD V)))` ASSUME_TAC);;
e (ASM_MESON_TAC[CKQOWSA]);;
e (ASM_MESON_TAC [CTVTAQA]);;
let UBHDEUU = top_thm();;