(* ========================================================================= *) (* FLYSPECK - BOOK FORMALIZATION *) (* *) (* Authour : VU KHAC KY *) (* Book lemma: URRPHBZ3 *) (* Chaper : Packing (Marchal cells) *) (* *) (* ========================================================================= *) (* ========================================================================= *) (* FILES NEED TO BE LOADED *) (* flyspeck_needs "packing/marchal_cells_2.hl";; *) (* flyspeck_needs "packing/HDTFNFZ.hl";; *) (* ========================================================================= *) module Urrphbz3 = struct open Rogers;; open Vukhacky_tactics;; open Pack_defs;; open Pack_concl;; open Pack1;; open Sphere;; open Marchal_cells;; open Emnwuus;; open Marchal_cells_2_new;; open Lepjbdj;; open Hdtfnfz;; let URRPHBZ3 = prove_by_refinement (URRPHBZ3_concl, [(REPEAT STRIP_TAC); (ABBREV_TAC `X = mcell k V ul`); (SWITCH_TAC); (UP_ASM_TAC THEN REWRITE_WITH `VX V X = V INTER X`); (MATCH_MP_TAC HDTFNFZ); (EXISTS_TAC `ul:(real^3)list` THEN EXISTS_TAC `k:num`); (ASM_REWRITE_TAC[]); (REWRITE_TAC[SET_RULE `A DIFF A INTER B = A DIFF B`; IN_DIFF]); (REPEAT STRIP_TAC); (NEW_GOAL `open ((:real^3) DIFF X)`); (REWRITE_TAC[GSYM closed]); (EXPAND_TAC "X" THEN ASM_SIMP_TAC[CLOSED_MCELL]); (UP_ASM_TAC THEN REWRITE_TAC[OPEN_CONTAINS_CBALL]); (STRIP_TAC); (NEW_GOAL `?e. &0 < e /\ cball (v:real^3,e) SUBSET (:real^3) DIFF X`); (FIRST_ASSUM MATCH_MP_TAC); (ASM_SET_TAC[]); (UP_ASM_TAC THEN REWRITE_TAC[cball; SUBSET; IN; IN_ELIM_THM]); (REPEAT STRIP_TAC); (EXISTS_TAC `e:real`); (REPEAT STRIP_TAC); (ASM_REAL_ARITH_TAC); (REWRITE_WITH `e < dist (p, v:real^3) <=> ~(dist (v, p) <= e)`); (REWRITE_TAC[DIST_SYM]); (REAL_ARITH_TAC); (STRIP_TAC); (NEW_GOAL `((:real^3) DIFF X) (p:real^3)`); (FIRST_ASSUM MATCH_MP_TAC); (ASM_SIMP_TAC[]); (NEW_GOAL `~(X (p:real^3))`); (UP_ASM_TAC); (REWRITE_WITH `((:real^3) DIFF X) p ==> ~X p <=> p IN ((:real^3) DIFF X) ==> ~(p IN X)`); (ASM_REWRITE_TAC[IN]); (SET_TAC[]); (ASM_MESON_TAC[])]);; end;;