1 (* ========================================================================= *)
\r
2 (* FLYSPECK - BOOK FORMALIZATION *)
\r
4 (* Authour : VU KHAC KY *)
\r
5 (* Book lemma: URRPHBZ3 *)
\r
6 (* Chaper : Packing (Marchal cells) *)
\r
8 (* ========================================================================= *)
\r
10 (* ========================================================================= *)
\r
11 (* FILES NEED TO BE LOADED *)
\r
13 (* flyspeck_needs "packing/marchal_cells_2.hl";; *)
\r
14 (* flyspeck_needs "packing/HDTFNFZ.hl";; *)
\r
15 (* ========================================================================= *)
\r
17 module Urrphbz3 = struct
\r
20 open Vukhacky_tactics;;
\r
25 open Marchal_cells;;
\r
27 open Marchal_cells_2_new;;
\r
31 let URRPHBZ3 = prove_by_refinement (URRPHBZ3_concl,
\r
32 [(REPEAT STRIP_TAC);
\r
33 (ABBREV_TAC `X = mcell k V ul`);
\r
35 (UP_ASM_TAC THEN REWRITE_WITH `VX V X = V INTER X`);
\r
36 (MATCH_MP_TAC HDTFNFZ);
\r
37 (EXISTS_TAC `ul:(real^3)list` THEN EXISTS_TAC `k:num`);
\r
38 (ASM_REWRITE_TAC[]);
\r
39 (REWRITE_TAC[SET_RULE `A DIFF A INTER B = A DIFF B`; IN_DIFF]);
\r
42 (NEW_GOAL `open ((:real^3) DIFF X)`);
\r
43 (REWRITE_TAC[GSYM closed]);
\r
44 (EXPAND_TAC "X" THEN ASM_SIMP_TAC[CLOSED_MCELL]);
\r
45 (UP_ASM_TAC THEN REWRITE_TAC[OPEN_CONTAINS_CBALL]);
\r
47 (NEW_GOAL `?e. &0 < e /\ cball (v:real^3,e) SUBSET (:real^3) DIFF X`);
\r
48 (FIRST_ASSUM MATCH_MP_TAC);
\r
50 (UP_ASM_TAC THEN REWRITE_TAC[cball; SUBSET; IN; IN_ELIM_THM]);
\r
52 (EXISTS_TAC `e:real`);
\r
54 (ASM_REAL_ARITH_TAC);
\r
55 (REWRITE_WITH `e < dist (p, v:real^3) <=> ~(dist (v, p) <= e)`);
\r
56 (REWRITE_TAC[DIST_SYM]);
\r
60 (NEW_GOAL `((:real^3) DIFF X) (p:real^3)`);
\r
61 (FIRST_ASSUM MATCH_MP_TAC);
\r
63 (NEW_GOAL `~(X (p:real^3))`);
\r
65 (REWRITE_WITH `((:real^3) DIFF X) p ==> ~X p <=> p IN ((:real^3) DIFF X) ==> ~(p IN X)`);
\r
66 (ASM_REWRITE_TAC[IN]);
\r
68 (ASM_MESON_TAC[])]);;
\r