(* ========================================================================== *)
(* 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*)

let h0 = new_definition `h0 = #1.26`;;
(*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}`;;
let ball_annulus = new_definition
  `ball_annulus = cball((vec 0:real^3) , &2 * h0) DIFF ball(vec 0, &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();;