Update from HH
[Flyspeck/.git] / formal_lp / hypermap / ineqs / lp_ineqs_proofs-compiled.hl
1 needs "../formal_lp/hypermap/ssreflect/list_hypermap_iso-compiled.hl";;
2 needs "../formal_lp/hypermap/ineqs/lp_ineqs_defs.hl";;
3 needs "../formal_lp/ineqs/constants_approx.hl";;
4 needs "tame/ssreflect/tame_lemmas-compiled.hl";;
5
6 (* Module Lp_ineqs_proofs*)
7 module Lp_ineqs_proofs = struct
8
9 let lp_fan = new_definition `lp_fan (V,E) <=> FAN (vec 0,V,E)
10   /\ fully_surrounded (V,E)
11   /\ (!v w. v IN V /\ w IN V /\ ~(v = w) /\ ~({v,w} IN E) ==> #2.52 <= dist (v,w))
12   /\ V SUBSET ball_annulus
13   /\ packing V`;;
14 let lp_cond = new_definition `lp_cond (L:((A)list)list,g,h) (V,E)
15   <=> lp_fan (V,E)
16   /\ good_list L
17   /\ good_list_nodes L
18   /\ hyp_iso g (hypermap_of_list L, hypermap_of_fan (V,E))
19   /\ BIJ h (elements_of_list L) V
20   /\ (!d. g d = h (FST d), h (SND d))
21   /\ (!x. x IN elements_of_list L <=> h x IN V)`;;
22 let lp_tau = new_definition `lp_tau (V,E) <=>
23         (!f. f IN face_set (hypermap_of_fan (V,E)) ==> &0 <= tauVEF (V,E,f))`;;
24 let add_diag = new_definition `add_diag (V,E) (v,w)
25                         = if (v,w) IN dart1_of_fan (V,E) then
26                                 {w, sigma_fan (vec 0) V E v w} INSERT E
27                                 else E`;;
28 let add_diag_list = new_definition
29         `add_diag_list (g,V,E) diags = foldr (\d E'. add_diag (V,E') (g d)) E diags`;;
30 let split_list_list = new_definition
31         `split_list_list L ds = foldr (\d L. split_list_hyp L d) L ds`;;
32 open Ssrbool;;
33 open Ssrnat;;
34 open Seq;;
35 open Seq2;;
36 open Sphere;;
37 open Fan_defs;;
38 open Hypermap;;
39 open Hypermap_and_fan;;
40 open Pack_defs;;
41 open Tame_defs;;
42 open Hypermap_iso;;
43 open Add_triangle;;
44 open List_hypermap;;
45 open List_hypermap_iso;;
46 open Tame_general;;
47 open Tame_lemmas;;
48 open Constants_approx;;
49 open Lp_ineqs_def;;
50
51 (* Lemma const1_gt0 *)
52 let const1_gt0 = Sections.section_proof []
53 `&0 < const1`
54 [
55    (((((use_arg_then2 ("sol0_over_pi_EQ_const1", [sol0_over_pi_EQ_const1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("real_div", [real_div]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_MUL", [REAL_LT_MUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sol0_POS", [sol0_POS]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_INV", [REAL_LT_INV]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("PI_POS", [PI_POS]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
56 ];;
57
58 (* Lemma const1_ge0 *)
59 let const1_ge0 = Sections.section_proof []
60 `&0 <= const1`
61 [
62    (((((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("const1_gt0", [const1_gt0]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
63 ];;
64
65 (* Lemma tau_fan_eq_tauVEF *)
66 let tau_fan_eq_tauVEF = Sections.section_proof ["V";"E";"f"]
67 `lp_tau (V,E) /\ f IN face_set (hypermap_of_fan (V,E))
68         ==> tau_fan (V,E) f = tauVEF (V,E,f)`
69 [
70    (((((use_arg_then2 ("lp_tau", [lp_tau]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["tau_h"]))) THEN ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("tau_h", [])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC));
71    (((((use_arg_then2 ("tau_fan", [tau_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ABS_REFL", [REAL_ABS_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
72 ];;
73
74 (* Lemma face_map_in_darts_k *)
75 let face_map_in_darts_k = Sections.section_proof ["H";"k";"d"]
76 `d IN darts_k k H
77         ==> face_map H d IN darts_k k H /\ inverse (face_map H) d IN darts_k k H`
78 [
79    (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))))) THEN ALL_TAC THEN (case THEN ((move ["d_in"]) THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] []))))))));
80    ((((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("lemma_dart_inveriant_under_inverse_maps", [lemma_dart_inveriant_under_inverse_maps]))(thm_tac (new_rewrite [] [])))) THEN ((simp_tac THEN TRY done_tac)));
81    ((split_tac) THEN (congr_tac (`CARD _`)) THEN (((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))) THEN ((use_arg_then2 ("lemma_face_identity", [lemma_face_identity])) (thm_tac apply_tac)));
82    (((((use_arg_then2 ("POWER_1", [POWER_1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_in_face", [lemma_in_face]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
83    (((((use_arg_then2 ("POWER_1", [POWER_1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_power_inverse_in_face", [lemma_power_inverse_in_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("face_refl", [face_refl]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
84 ];;
85
86 (* Lemma f_fan_pair_ext_in_darts_k *)
87 let f_fan_pair_ext_in_darts_k = Sections.section_proof ["V";"E";"k";"d"]
88 `FAN (vec 0,V,E)
89                 /\ d IN darts_k k (hypermap_of_fan (V,E))
90         ==> f_fan_pair_ext (V,E) d IN darts_k k (hypermap_of_fan (V,E))
91                 /\ inverse (f_fan_pair_ext (V,E)) d IN darts_k k (hypermap_of_fan (V,E))`
92 [
93    (BETA_TAC THEN (case THEN ((move ["fanV"]) THEN (move ["d_in"]))));
94    (((((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("face_map_in_darts_k", [face_map_in_darts_k]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
95 ];;
96
97 (* Section FunctionPair *)
98 Sections.begin_section "FunctionPair";;
99
100 (* Lemma res_inv_subset *)
101 let res_inv_subset = Sections.section_proof ["f";"s";"s'";"t";"x"]
102 `s' SUBSET s /\ BIJ f s t /\ x IN IMAGE f s'
103         ==> res_inv f s' x = res_inv f s x`
104 [
105    (((((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_IMAGE", [IN_IMAGE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["s'_sub"])) THEN (case THEN (move ["bij_f"])) THEN (case THEN (move ["y"])) THEN (case THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (move ["y_in"]));
106    ((((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("s'_sub", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
107    (((((fun arg_tac -> (use_arg_then2 ("res_inv_left", [res_inv_left])) (fun fst_arg -> (use_arg_then2 ("y_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (move ["a"]) THEN (move ["b"]) THEN (move ["h"]));
108    ((((use_arg_then2 ("bij_f", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("BIJ", [BIJ]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INJ", [INJ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ALL_TAC) THEN (case THEN ((move ["_"]) THEN (move ["f_inj"]))) THEN (move ["_"])));
109    ((((use_arg_then2 ("f_inj", [])) (disch_tac [])) THEN (clear_assumption "f_inj") THEN (DISCH_THEN apply_tac)) THEN ((((use_arg_then2 ("h", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("s'_sub", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
110 ];;
111 (Sections.add_section_var (mk_var ("h1", (`:A->B`))));;
112 (Sections.add_section_var (mk_var ("h2", (`:C->D`))));;
113 (Sections.add_section_var (mk_var ("g", (`:A#C -> B#D`))));;
114 (Sections.add_section_hyp "g_eq" (`!x. g x = h1 (FST x), h2 (SND x)`));;
115
116 (* Lemma INJ_pair *)
117 let INJ_pair = Sections.section_proof ["s1";"t1";"s2";"t2"]
118 `INJ h1 s1 t1 /\ INJ h2 s2 t2
119         ==> INJ g (s1 CROSS s2) (t1 CROSS t2)`
120 [
121    ((repeat_tactic 1 9 (((use_arg_then2 ("INJ", [INJ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (case THEN ((move ["h1_in"]) THEN (move ["h1_inj"])))) THEN (case THEN ((move ["h2_in"]) THEN (move ["h2_inj"]))));
122    (((THENL) (split_tac) [(case THEN ((move ["a"]) THEN (move ["b"]))); ((case THEN ((move ["a"]) THEN (move ["b"]))) THEN (case THEN ((move ["c"]) THEN (move ["d"]))))]) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] [])))))));
123    ((BETA_TAC THEN (move ["ab_in"])) THEN ((((use_arg_then2 ("h1_in", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("h2_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
124    ((BETA_TAC THEN (case THEN (move ["ab_in"])) THEN (case THEN (move ["cd_in"])) THEN (case THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("h1_inj", [])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("h2_inj", [])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
125 ];;
126
127 (* Lemma SURJ_pair *)
128 let SURJ_pair = Sections.section_proof ["s1";"t1";"s2";"t2"]
129 `SURJ h1 s1 t1 /\ SURJ h2 s2 t2
130         ==> SURJ g (s1 CROSS s2) (t1 CROSS t2)`
131 [
132    ((repeat_tactic 1 9 (((use_arg_then2 ("SURJ", [SURJ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (case THEN ((move ["h1_in"]) THEN (move ["h1_surj"])))) THEN (case THEN ((move ["h2_in"]) THEN (move ["h2_surj"]))));
133    (((split_tac) THEN ALL_TAC THEN (case THEN ((move ["a"]) THEN (move ["b"])))) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] [])))))));
134    ((BETA_TAC THEN (move ["ab_in"])) THEN ((((use_arg_then2 ("h1_in", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("h2_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
135    (BETA_TAC THEN (case THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("h1_surj", [])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (case THEN (move ["y1"])) THEN (move ["y1_eq"]) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("h2_surj", [])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (case THEN (move ["y2"])) THEN (move ["y2_eq"]));
136    (((fun arg_tac -> arg_tac (Arg_term (`y1,y2`))) (term_tac exists_tac)) THEN ((((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y1_eq", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y2_eq", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
137 ];;
138
139 (* Lemma BIJ_pair *)
140 let BIJ_pair = Sections.section_proof ["s1";"t1";"s2";"t2"]
141 `BIJ h1 s1 t1 /\ BIJ h2 s2 t2
142         ==> BIJ g (s1 CROSS s2) (t1 CROSS t2)`
143 [
144    (((repeat_tactic 1 9 (((use_arg_then2 ("BIJ", [BIJ]))(thm_tac (new_rewrite [] []))))) THEN (move ["h"])) THEN ((((use_arg_then2 ("INJ_pair", [INJ_pair]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("SURJ_pair", [SURJ_pair]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
145 ];;
146
147 (* Lemma res_inv_pair *)
148 let res_inv_pair = Sections.section_proof ["s1";"t1";"s2";"t2"]
149 `BIJ h1 s1 t1 /\ BIJ h2 s2 t2
150    ==> (!a b. a IN t1 /\ b IN t2
151         ==> res_inv g (s1 CROSS s2) (a,b) = res_inv h1 s1 a, res_inv h2 s2 b)`
152 [
153    (BETA_TAC THEN (case THEN ((move ["bij_h1"]) THEN (move ["bij_h2"]))) THEN (move ["a"]) THEN (move ["b"]) THEN (case THEN ((move ["a_in"]) THEN (move ["b_in"]))));
154    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("BIJ_pair", [BIJ_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["bij_g"])));
155    ((((use_arg_then2 ("bij_g", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("BIJ", [BIJ]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INJ", [INJ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ALL_TAC) THEN (case THEN ((move ["g_in"]) THEN (move ["g_inj"]))) THEN (move ["_"])));
156    (((use_arg_then2 ("g_inj", [])) (disch_tac [])) THEN (clear_assumption "g_inj") THEN (DISCH_THEN apply_tac));
157    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
158    (((((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_h1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_h2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
159 ];;
160
161 (* Finalization of the section FunctionPair *)
162 let res_inv_subset = Sections.finalize_theorem res_inv_subset;;
163 let INJ_pair = Sections.finalize_theorem INJ_pair;;
164 let SURJ_pair = Sections.finalize_theorem SURJ_pair;;
165 let BIJ_pair = Sections.finalize_theorem BIJ_pair;;
166 let res_inv_pair = Sections.finalize_theorem res_inv_pair;;
167 Sections.end_section "FunctionPair";;
168
169 (* Lemma darts_of_list_subset *)
170 let darts_of_list_subset = Sections.section_proof ["L";"v";"w"]
171 `v,w IN darts_of_list L ==> v IN elements_of_list L /\ w IN elements_of_list L`
172 [
173    ((((use_arg_then2 ("darts_of_list", [darts_of_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("elements_of_list", [elements_of_list]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(thm_tac (new_rewrite [] []))))));
174    ((((use_arg_then2 ("mem_list_of_darts", [mem_list_of_darts]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["l"])) THEN (case THEN (move ["mem_l"])) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("mem_list_pairs", [mem_list_pairs])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (move ["mem_vw"]));
175    ((repeat_tactic 1 9 (((use_arg_then2 ("list_of_elements", [list_of_elements]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("mem_undup", [mem_undup]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("mem_flatten", [mem_flatten]))(thm_tac (new_rewrite [] []))))));
176    ((split_tac) THEN ((use_arg_then2 ("l", [])) (term_tac exists_tac)) THEN (done_tac));
177 ];;
178
179 (* Section Lp_cond *)
180 Sections.begin_section "Lp_cond";;
181 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
182 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
183 (Sections.add_section_var (mk_var ("L", (`:((A)list)list`))));;
184
185 (* Lemma lp_cond_lemma *)
186 let lp_cond_lemma = Sections.section_proof ["f"]
187 `lp_fan (V,E) /\ good_list L /\ good_list_nodes L
188         /\ hyp_iso f (hypermap_of_fan (V,E), hypermap_of_list L)
189         ==> ?g h. lp_cond (L, g, h) (V,E)
190                /\ (!x. h x = if x IN elements_of_list L then
191                         res_inv (fan_list_nodes_iso (f,V,E)) V x else vec 0)`
192 [
193    (((((use_arg_then2 ("lp_cond", [lp_cond]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ALL_TAC) THEN (case THEN (move ["fanV"])) THEN (case THEN (move ["f_surr"])) THEN (case THEN (move ["diag_dist"])) THEN (case THEN ((move ["subV"]) THEN (move ["packV"]))) THEN (case THEN (move ["goodL"])) THEN (case THEN (move ["good_nodes"])) THEN (move ["iso_f"]));
194    ((((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_surr", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("subV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("packV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("goodL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("good_nodes", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))));
195    ((fun arg_tac -> arg_tac (Arg_term (`fan_list_iso (f, V, E)`))) (term_tac (set_tac "f'")));
196    ((fun arg_tac -> arg_tac (Arg_term (`fan_list_nodes_iso (f, V, E)`))) (term_tac (set_tac "h'")));
197    ((fun arg_tac -> arg_tac (Arg_term (`f' d = h' (FST d), h' (SND d)`))) (term_tac (have_gen_tac ["d"](move ["f'_eq"]))));
198    ((((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"])) THEN ((((use_arg_then2 ("f'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fan_list_iso", [fan_list_iso]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h'_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
199    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartV"]) THEN (move ["_"])))));
200    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (move ["_"])))));
201    ((fun arg_tac -> arg_tac (Arg_term (`hyp_iso f' (hypermap_of_fan (V,E), hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["iso_f'"]))));
202    ((((fun arg_tac -> (use_arg_then2 ("hyp_iso_ext", [hyp_iso_ext])) (fun fst_arg -> (use_arg_then2 ("iso_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)) THEN ((((use_arg_then2 ("dartV", []))(thm_tac (new_rewrite [] [])))) THEN (move ["d"]) THEN (move ["d_in"])));
203    (((((use_arg_then2 ("f'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("hyp_iso_eq_fan_list_iso", [hyp_iso_eq_fan_list_iso])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("iso_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
204    ((fun arg_tac -> arg_tac (Arg_term (`BIJ h' V (elements_of_list L)`))) (term_tac (have_gen_tac [](move ["bij_h'"]))));
205    (((((use_arg_then2 ("h'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_list_nodes_iso_BIJ", [fan_list_nodes_iso_BIJ])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("iso_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
206    ((fun arg_tac -> arg_tac (Arg_term (`\x. if x IN elements_of_list L then res_inv h' V x else vec 0`))) (term_tac (set_tac "h")));
207    ((fun arg_tac -> arg_tac (Arg_term (`\d. h (FST d), h (SND d)`))) (term_tac (set_tac "g")));
208    (((use_arg_then2 ("g", [])) (term_tac exists_tac)) THEN ((use_arg_then2 ("h", [])) (term_tac exists_tac)));
209    ((THENL_LAST) (split_tac) ((BETA_TAC THEN (move ["x"])) THEN ((((use_arg_then2 ("h_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (done_tac)));
210    ((THENL_FIRST) (split_tac) (((((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))) THEN (move ["v"]) THEN (move ["w"]) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("diag_dist", [])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (done_tac)));
211    ((THENL_ROT (-1)) (split_tac));
212    (((((use_arg_then2 ("g_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (split_tac));
213    ((((fun arg_tac -> (use_arg_then2 ("bij_ext", [bij_ext])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("bij_res_inv", [bij_res_inv])) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac) THEN (move ["x"]) THEN (move ["x_in"])) THEN ((((use_arg_then2 ("h_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("x_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
214    (((((use_arg_then2 ("h_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (move ["x"]));
215    ((THENL_FIRST) (((fun arg_tac -> arg_tac (Arg_term (`x IN _`))) (disch_eq_tac "x_in" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)) ((((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
216    ((((use_arg_then2 ("subV", [])) (disch_tac [])) THEN (clear_assumption "subV") THEN ((use_arg_then2 ("contraL", [contraL])) (disch_tac [])) THEN (clear_assumption "contraL") THEN (DISCH_THEN apply_tac)) THEN (((((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("NOT_FORALL_THM", [NOT_FORALL_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("NOT_IMP", [NOT_IMP]))(thm_tac (new_rewrite [] []))))) THEN (move ["v0"])));
217    (((fun arg_tac -> arg_tac (Arg_term (`vec 0`))) (term_tac exists_tac)) THEN ((((use_arg_then2 ("Ckqowsa_3_points.in_ball_annulus", [Ckqowsa_3_points.in_ball_annulus]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("negb_and", [negb_and]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("negbK", [negbK]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
218    (((fun arg_tac -> (use_arg_then2 ("hyp_iso_ext", [hyp_iso_ext])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("hyp_iso_inv", [hyp_iso_inv])) (fun fst_arg -> (use_arg_then2 ("iso_f'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
219    (((((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("g_def", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ALL_TAC THEN (case THEN ((move ["v"]) THEN (move ["w"]))) THEN (move ["vw_in"]) THEN (simp_tac));
220    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("BIJ_pair", [BIJ_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f'_eq", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["bij_f'"])));
221    ((THENL_ROT (-1)) (((fun arg_tac -> (use_arg_then2 ("res_inv_subset", [res_inv_subset])) (fun fst_arg -> (use_arg_then2 ("bij_f'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
222    ((fun arg_tac -> (use_arg_then2 ("darts_of_list_subset", [darts_of_list_subset])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["vw_in2"])));
223    (((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("res_inv_pair", [res_inv_pair])) (fun fst_arg -> (use_arg_then2 ("f'_eq", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("h_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("vw_in2", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
224    ((((fun arg_tac -> (use_arg_then2 ("iso_dart", [iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso_f'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] [])))));
225    ((BETA_TAC THEN (case THEN ((move ["a"]) THEN (move ["b"]))) THEN (DISCH_THEN (fun snd_th -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
226 ];;
227
228 (* Lemma lp_fan_trans1 *)
229 let lp_fan_trans1 = Sections.section_proof ["d"]
230 `lp_fan (V,E) ==> lp_fan (V, add_diag (V,E) d)`
231 [
232    ((repeat_tactic 1 9 (((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["fanV"])) THEN (case THEN (move ["f_surr"])) THEN (case THEN (move ["diag"])) THEN (case THEN (move ["subV"])) THEN (move ["packV"]));
233    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]));
234    ((THENL_LAST) (((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart1_of_fan (V,E)`))) (disch_eq_tac "vw_in1" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)) (((((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
235    ((((use_arg_then2 ("packV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("subV", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] []))))));
236    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["dart1_eq"])));
237    ((fun arg_tac -> arg_tac (Arg_term (`V, add_diag (V,E) (v,w) = split_fan_face (V,E) (v,w)`))) (term_tac (have_gen_tac [](move ["add_eq"]))));
238    (((((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("split_fan_face", [split_fan_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
239    ((((use_arg_then2 ("vw_in1", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["vw_in"])));
240    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["fan2"]) THEN (case THEN (move ["_"])) THEN (move ["f_surr2"])))));
241    ((((use_arg_then2 ("add_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fan2", [fan2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_surr2", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))));
242    (BETA_TAC THEN (move ["a"]) THEN (move ["b"]));
243    (((((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("negb_or", [negb_or]))(thm_tac (new_rewrite [] []))))) THEN (move ["cond"]));
244    ((((use_arg_then2 ("diag", [])) (disch_tac [])) THEN (clear_assumption "diag") THEN (DISCH_THEN apply_tac)) THEN (done_tac));
245 ];;
246
247 (* Lemma lp_cond_trans1 *)
248 let lp_cond_trans1 = Sections.section_proof ["g";"h";"d"]
249 `lp_cond (L,g,h) (V,E)
250         ==> lp_cond (split_list_hyp L d,g,h) (V, add_diag (V,E) (g d))`
251 [
252    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]));
253    ((repeat_tactic 1 9 (((use_arg_then2 ("lp_cond", [lp_cond]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["fan_cond"])) THEN (case THEN (move ["goodL"])) THEN (case THEN (move ["good_nodes"])) THEN (case THEN (move ["iso_g"])) THEN (case THEN (move ["bij_h"])) THEN (case THEN (move ["g_eq"])) THEN (move ["h_cond"]));
254    ((((use_arg_then2 ("lp_fan_trans1", [lp_fan_trans1]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))));
255    ((((use_arg_then2 ("fan_cond", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["fanV"])) THEN (case THEN (move ["f_surr"])) THEN (case THEN (move ["diag_dist"])) THEN (case THEN ((move ["subV"]) THEN (move ["packV"])))));
256    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["dart1_eq"])));
257    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartV"]) THEN (move ["_"])))));
258    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (move ["_"])))));
259    ((THENL_ROT (-1)) (((fun arg_tac -> arg_tac (Arg_term (`v,w IN darts_of_list L`))) (disch_eq_tac "vw_in" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)));
260    ((((use_arg_then2 ("d_not_in_dart_split_eq", [d_not_in_dart_split_eq]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("darts_of_list", [darts_of_list]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)));
261    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`add_diag (V,E) (g (v,w)) = E`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((ALL_TAC) THEN (done_tac)));
262    ((((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))));
263    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`~(h v, h w IN dart_of_fan (V,E))`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((ALL_TAC) THEN (done_tac)));
264    (((use_arg_then2 ("vw_in", [])) (disch_tac [])) THEN (clear_assumption "vw_in") THEN ((use_arg_then2 ("contra", [contra])) (disch_tac [])) THEN (clear_assumption "contra") THEN (DISCH_THEN apply_tac) THEN (move ["hvw_in"]));
265    (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`res_inv g (darts_of_list L) (h v, h w) = v,w`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] [])))))))));
266    (((fun arg_tac -> (use_arg_then2 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("hyp_iso_inv", [hyp_iso_inv])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC);
267    ((((((use_arg_then2 ("dartV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
268    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("hvw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["hvw_inV"])));
269    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v IN elements_of_list L /\ w IN elements_of_list L`))) (term_tac (have_gen_tac [](move ["vw_in"])))) ((repeat_tactic 1 9 (((use_arg_then2 ("h_cond", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
270    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("BIJ_pair", [BIJ_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("g_eq", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["bij_g"])));
271    ((THENL_ROT (-1)) (((fun arg_tac -> (use_arg_then2 ("res_inv_subset", [res_inv_subset])) (fun fst_arg -> (use_arg_then2 ("bij_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
272    (((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("res_inv_pair", [res_inv_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("g_eq", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
273    ((((use_arg_then2 ("dartL", []))(gsym_then (thm_tac (new_rewrite [2] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("iso_dart", [iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("hvw_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] [])))));
274    ((BETA_TAC THEN (case THEN ((move ["a"]) THEN (move ["b"]))) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("darts_of_list_subset", [darts_of_list_subset])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
275    ((fun arg_tac -> arg_tac (Arg_term (`elements_of_list (split_list_hyp L (v,w)) = elements_of_list L`))) (term_tac (have_gen_tac [](move ["els_eq"]))));
276    (((repeat_tactic 1 9 (((use_arg_then2 ("elements_of_list", [elements_of_list]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] []))))) THEN ((use_arg_then2 ("perm_eq_set_of_list_eq", [perm_eq_set_of_list_eq])) (thm_tac apply_tac)));
277    ((((use_arg_then2 ("list_of_elements_split", [list_of_elements_split]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
278    ((fun arg_tac -> (use_arg_then2 ("hyp_iso_inv", [hyp_iso_inv])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["iso_inv_g"])));
279    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("iso_imp_good_list_split", [iso_imp_good_list_split])) (fun fst_arg -> (use_arg_then2 ("iso_inv_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("good_nodes", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["good_split"])));
280    ((((use_arg_then2 ("good_split", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("iso_imp_good_list_nodes_split", [iso_imp_good_list_nodes_split])) (fun fst_arg -> (use_arg_then2 ("iso_inv_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
281    ((((use_arg_then2 ("els_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h_cond", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("bij_h", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("g_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
282    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`g (v,w) = h v, h w`))) (term_tac (have_gen_tac [](move ["hvw_eq"])))) ((ALL_TAC) THEN (done_tac)));
283    ((fun arg_tac -> arg_tac (Arg_term (`h v, h w IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["hvw_in"]))));
284    (((((use_arg_then2 ("hvw_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartV", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
285    ((fun arg_tac -> arg_tac (Arg_term (`V, add_diag (V,E) (h v,h w) = split_fan_face (V,E) (h v,h w)`))) (term_tac (have_gen_tac [](move ["add_eq"]))));
286    (((((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("split_fan_face", [split_fan_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("hvw_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
287    (((use_arg_then2 ("add_eq", []))(thm_tac (new_rewrite [] []))));
288    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("hvw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["fan2"]) THEN (case THEN (move ["_"])) THEN (move ["f_surr2"])))));
289    ((fun arg_tac -> arg_tac (Arg_term (`fan_list_iso (res_inv g (dart (hypermap_of_list L)), V, E)`))) (term_tac (set_tac "f")));
290    ((fun arg_tac -> arg_tac (Arg_term (`hyp_iso f (hypermap_of_fan (V,E), hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["iso_f"]))));
291    (((fun arg_tac -> (use_arg_then2 ("hyp_iso_ext", [hyp_iso_ext])) (fun fst_arg -> (use_arg_then2 ("iso_inv_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac) THEN (move ["d"]) THEN (move ["d_in"]));
292    (((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("hyp_iso_eq_fan_list_iso", [hyp_iso_eq_fan_list_iso]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dartV", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
293    ((fun arg_tac -> arg_tac (Arg_term (`fan_list_nodes_iso (res_inv g (dart (hypermap_of_list L)),V,E)`))) (term_tac (set_tac "h'")));
294    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("BIJ_pair", [BIJ_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("g_eq", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["bij_g"])));
295    ((fun arg_tac -> arg_tac (Arg_term (`x IN elements_of_list L ==> h' (h x) = x`))) (term_tac (have_gen_tac ["x"](move ["h'_eq"]))));
296    (((((use_arg_then2 ("h_cond", []))(thm_tac (new_rewrite [] [])))) THEN (move ["x_in"])) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("DART_EXISTS", [DART_EXISTS])) (fun fst_arg -> (use_arg_then2 ("x_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("E", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC THEN (case THEN (move ["hy"])) THEN (move ["hxy_in"])));
297    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("hyp_iso_eq_fan_list_iso", [hyp_iso_eq_fan_list_iso])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("iso_inv_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("hxy_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
298    ((((use_arg_then2 ("fan_list_iso", [fan_list_iso]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("res_inv_subset", [res_inv_subset])) (fun fst_arg -> (use_arg_then2 ("bij_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
299    ((((fun arg_tac -> (use_arg_then2 ("iso_dart", [iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("hxy_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))));
300    ((case THEN (move ["a"]) THEN (move ["b"]) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("darts_of_list_subset", [darts_of_list_subset])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
301    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("res_inv_pair", [res_inv_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("g_eq", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("hxy_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
302    ((((((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
303    ((fun arg_tac -> arg_tac (Arg_term (`f (h v, h w) = v,w`))) (term_tac (have_gen_tac [](move ["fh_eq"]))));
304    (((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fan_list_iso", [fan_list_iso]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h'_def", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("h'_eq", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("darts_of_list_subset", [darts_of_list_subset])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
305    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("split_list_hyp_iso", [split_list_hyp_iso])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("iso_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("good_nodes", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("hvw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
306    (((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("fan_list_iso_invariant", [fan_list_iso_invariant]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fh_eq", []))(thm_tac (new_rewrite [] []))))) THEN (move ["iso2_f"]));
307    (((fun arg_tac -> (use_arg_then2 ("hyp_iso_ext", [hyp_iso_ext])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("hyp_iso_inv", [hyp_iso_inv])) (fun fst_arg -> (use_arg_then2 ("iso2_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac) THEN (case THEN ((move ["a"]) THEN (move ["b"]))) THEN (move ["ab_in"]));
308    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_list_nodes_iso_BIJ", [fan_list_nodes_iso_BIJ])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("iso_inv_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("good_nodes", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
309    ((((use_arg_then2 ("h'_def", []))(thm_tac (new_rewrite [] [])))) THEN (move ["bij_h'"]));
310    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("BIJ_pair", [BIJ_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC)) THEN (ANTS_TAC));
311    ((case THEN (move ["x"]) THEN (move ["y"])) THEN ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fan_list_iso", [fan_list_iso]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h'_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
312    ((BETA_TAC THEN (move ["bij_f'"])) THEN (((fun arg_tac -> (use_arg_then2 ("res_inv_subset", [res_inv_subset])) (fun fst_arg -> (use_arg_then2 ("bij_f'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
313    (((((fun arg_tac -> (use_arg_then2 ("iso_dart", [iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso2_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ab_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((move ["x"]) THEN (move ["y"]))));
314    ((in_tac ["fan2"] true (((use_arg_then2 ("add_eq", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("IN_CROSS", [IN_CROSS]))(thm_tac (new_rewrite [] []))))));
315    (((DISCH_THEN (fun snd_th -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC) THEN (done_tac));
316    ((((use_arg_then2 ("ab_in", [])) (disch_tac [])) THEN (clear_assumption "ab_in") THEN BETA_TAC) THEN (((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("good_split", [])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`v,w`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
317    (((DISCH_THEN (fun snd_th -> (use_arg_then2 ("darts_of_list_subset", [darts_of_list_subset])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC) THEN ((((use_arg_then2 ("els_eq", []))(thm_tac (new_rewrite [] [])))) THEN (move ["ab_in2"])));
318    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("res_inv_pair", [res_inv_pair])) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))));
319    (((repeat_tactic 1 9 (((use_arg_then2 ("ab_in2", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))))) THEN (case THEN (move ["x"]) THEN (move ["y"])) THEN ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fan_list_iso", [fan_list_iso]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h'_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
320    ((fun arg_tac -> arg_tac (Arg_term (`h a IN V /\ h b IN V`))) (term_tac (have_gen_tac [](move ["hab_inV"]))));
321    ((((use_arg_then2 ("bij_h", [])) (disch_tac [])) THEN (clear_assumption "bij_h") THEN BETA_TAC) THEN (((((use_arg_then2 ("BIJ", [BIJ]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INJ", [INJ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ALL_TAC) THEN (case THEN (move ["h_in"])) THEN (move ["_"]) THEN (move ["_"])) THEN (repeat_tactic 1 9 (((use_arg_then2 ("h_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
322    (((((fun arg_tac -> (use_arg_then2 ("h'_eq", [])) (fun fst_arg -> (use_arg_then2 ("a", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("h'_eq", [])) (fun fst_arg -> (use_arg_then2 ("b", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("res_inv_bij", [res_inv_bij])) (fun fst_arg -> (use_arg_then2 ("bij_h'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
323 ];;
324
325 (* Finalization of the section Lp_cond *)
326 let lp_cond_lemma = Sections.finalize_theorem lp_cond_lemma;;
327 let lp_fan_trans1 = Sections.finalize_theorem lp_fan_trans1;;
328 let lp_cond_trans1 = Sections.finalize_theorem lp_cond_trans1;;
329 Sections.end_section "Lp_cond";;
330
331 (* Lemma lp_cond_trans *)
332 let lp_cond_trans = Sections.section_proof ["L";"V";"E";"g";"h";"ds"]
333 `lp_cond (L,g,h) (V,E)
334         ==> lp_cond (split_list_list L ds, g, h) (V, add_diag_list (g,V,E) ds)`
335 [
336    (BETA_TAC THEN (move ["cond"]));
337    (((THENL) (((use_arg_then2 ("ds", [])) (disch_tac [])) THEN (clear_assumption "ds") THEN elim) [ALL_TAC; ((move ["h"]) THEN (move ["t"]) THEN (move ["Ih"]))]) THEN ((((use_arg_then2 ("split_list_list", [split_list_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("add_diag_list", [add_diag_list]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("foldr", [foldr]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))));
338    (((((use_arg_then2 ("split_list_list", [split_list_list]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("add_diag_list", [add_diag_list]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("lp_cond_trans1", [lp_cond_trans1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
339 ];;
340
341 (* Lemma bij_in *)
342 let bij_in = Sections.section_proof ["f";"s";"t"]
343 `BIJ f s t ==> (!x. x IN s ==> f x IN t)`
344 [
345    ((((((use_arg_then2 ("BIJ", [BIJ]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INJ", [INJ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ALL_TAC) THEN (case THEN (move ["bij_in"])) THEN (move ["_"]) THEN (move ["_"]) THEN (move ["x"]) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("bij_in", [])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (done_tac));
346 ];;
347
348 (* Lemma list_sum_neg *)
349 let list_sum_neg = Sections.section_proof ["s";"f"]
350 `list_sum s (\x. --(f x)) = --(list_sum s f)`
351 [
352    (((((use_arg_then2 ("REAL_NEG_MINUS1", [REAL_NEG_MINUS1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("list_sum_lmul", [list_sum_lmul]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_NEG_MINUS1", [REAL_NEG_MINUS1]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
353 ];;
354
355 (* Lemma list_sum_sub *)
356 let list_sum_sub = Sections.section_proof ["s";"f1";"f2"]
357 `list_sum s (\x. f1 x - f2 x) = list_sum s f1 - list_sum s f2`
358 [
359    (((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("list_sum_add", [list_sum_add]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("list_sum_neg", [list_sum_neg]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
360 ];;
361
362 (* Lemma list_sum_filter *)
363 let list_sum_filter = Sections.section_proof ["s";"a";"f"]
364 `list_sum (filter a s) f = list_sum s (\x. if a x then f x else &0)`
365 [
366    (((THENL) (((use_arg_then2 ("s", [])) (disch_tac [])) THEN (clear_assumption "s") THEN elim) [ALL_TAC; ((move ["h"]) THEN (move ["t"]) THEN (move ["Ih"]))]) THEN ((((use_arg_then2 ("filter", [filter]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("list_sum_nil", [list_sum_nil]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))));
367    ((((use_arg_then2 ("list_sum_cons", [list_sum_cons]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("Ih", []))(gsym_then (thm_tac (new_rewrite [] []))))));
368    ((THENL_FIRST) (((fun arg_tac -> arg_tac (Arg_term (`a h`))) (disch_eq_tac "ah" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)) ((((use_arg_then2 ("list_sum_cons", [list_sum_cons]))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
369    ((((use_arg_then2 ("REAL_ADD_LID", [REAL_ADD_LID]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
370 ];;
371
372 (* Section Contravening *)
373 Sections.begin_section "Contravening";;
374 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
375 (Sections.add_section_hyp "cV" (`contravening V`));;
376
377 (* Let fanV *)
378 Sections.add_section_lemma "fanV" (Sections.section_proof []
379 `FAN (vec 0,V,ESTD V)`
380 [
381    ((((use_arg_then2 ("CONTRAVENING_FAN", [CONTRAVENING_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
382 ]);;
383
384 (* Lemma contravening_lp_fan *)
385 let contravening_lp_fan = Sections.section_proof []
386 `lp_fan (V,ESTD V)`
387 [
388    ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("CONTRAVENING_IMP_FULLY_SURROUNDED", [CONTRAVENING_IMP_FULLY_SURROUNDED]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
389    ((in_tac ["cV"] false (((use_arg_then2 ("contravening", [contravening]))(thm_tac (new_rewrite [] []))))) THEN (((repeat_tactic 1 9 (((use_arg_then2 ("cV", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (move ["v"]) THEN (move ["w"]) THEN (case THEN (move ["vV"])) THEN (case THEN (move ["wV"])) THEN (case THEN (move ["vw_neq"]))));
390    ((((use_arg_then2 ("contraR", [contraR])) (disch_tac [])) THEN (clear_assumption "contraR") THEN (DISCH_THEN apply_tac)) THEN ((((use_arg_then2 ("IN_ESTD", [IN_ESTD]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("wV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_neq", []))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
391 ];;
392
393 (* Lemma contravening_lp_cond *)
394 let contravening_lp_cond = Sections.section_proof ["L";"f"]
395 `good_list L /\ good_list_nodes L
396         /\ hyp_iso f (hypermap_of_fan (V,ESTD V), hypermap_of_list L)
397         ==> ?g h. lp_cond (L, g, h) (V, ESTD V)`
398 [
399    (BETA_TAC THEN (case THEN (move ["goodL"])) THEN (case THEN (move ["good_nodes"])) THEN (move ["iso_f"]));
400    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("lp_cond_lemma", [lp_cond_lemma])) (fun fst_arg -> (use_arg_then2 ("contravening_lp_fan", [contravening_lp_fan])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("good_nodes", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("iso_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["g"]) THEN (case THEN (move ["h"])) THEN (case THEN (move ["cond"])) THEN (move ["_"])))));
401    ((((use_arg_then2 ("g", [])) (term_tac exists_tac)) THEN ((use_arg_then2 ("h", [])) (term_tac exists_tac))) THEN (done_tac));
402 ];;
403
404 (* Lemma contravening_lp_cond_alt *)
405 let contravening_lp_cond_alt = Sections.section_proof ["L"]
406 `good_list L
407         /\ 2 * (sizel (list_of_elements L) + sizel (list_of_faces L)) = sizel (list_of_darts L) + 4
408         /\ (iso) (hypermap_of_fan (V,ESTD V)) (hypermap_of_list L)
409         ==> ?g h. lp_cond (L, g, h) (V, ESTD V)`
410 [
411    (BETA_TAC THEN (case THEN (move ["goodL"])) THEN (case THEN (move ["eq"])) THEN (move ["iso"]));
412    ((fun arg_tac -> (use_arg_then2 ("iso_imp_hyp_iso", [iso_imp_hyp_iso])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["f"]) THEN (move ["iso_f"])))));
413    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("contravening_lp_cond", [contravening_lp_cond])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("iso_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
414    ((((fun arg_tac -> (use_arg_then2 ("good_list_nodes_size_condition", [good_list_nodes_size_condition])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
415    ((((fun arg_tac -> (use_arg_then2 ("iso_planar", [iso_planar])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("iso_connected", [iso_connected])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("iso_edge_nondegenerate", [iso_edge_nondegenerate])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))));
416    (((((use_arg_then2 ("Jgtdebu.JGTDEBU5", [Jgtdebu.JGTDEBU5]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("Jgtdebu.JGTDEBU3", [Jgtdebu.JGTDEBU3]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("Jgtdebu.JGTDEBU1", [Jgtdebu.JGTDEBU1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
417 ];;
418
419 (* Section Bij *)
420 Sections.begin_section "Bij";;
421 (Sections.add_section_var (mk_var ("h", (`:num->real^3`))));;
422 (Sections.add_section_var (mk_var ("L", (`:((num)list)list`))));;
423 (Sections.add_section_hyp "bij_h" (`BIJ h (elements_of_list L) V`));;
424
425 (* Lemma lnsum_ineq *)
426 let lnsum_ineq = Sections.section_proof []
427 `&12 <= list_sum (list_of_elements L) (ln_list h)`
428 [
429    ((((use_arg_then2 ("cV", [])) (disch_tac [])) THEN (clear_assumption "cV") THEN BETA_TAC) THEN ((((use_arg_then2 ("contravening", [contravening]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (case THEN (move ["ineq"])) THEN (move ["_"])));
430    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`list_sum (list_of_elements L) (ln_list h) = scriptL V`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((((use_arg_then2 ("ineq", [ineq])) (disch_tac [])) THEN (clear_assumption "ineq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
431    ((((use_arg_then2 ("list_sum_set_of_list", [list_sum_set_of_list]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("uniq_list_of_elements", [uniq_list_of_elements]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("elements_of_list", [elements_of_list]))(gsym_then (thm_tac (new_rewrite [] []))))));
432    ((((use_arg_then2 ("scriptL", [scriptL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("list_defs_th", [list_defs_th]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("Basics.BIJ_SUM", [Basics.BIJ_SUM])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
433    ((((use_arg_then2 ("SUM_EQ", [SUM_EQ])) (thm_tac apply_tac)) THEN (move ["v"]) THEN (move ["vV"]) THEN (simp_tac)) THEN ((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
434 ];;
435
436 (* Let cardV_eq *)
437 Sections.add_section_lemma "cardV_eq" (Sections.section_proof []
438 `CARD V = LENGTH (list_of_elements L)`
439 [
440    ((((use_arg_then2 ("Seq.size", [Seq.size]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("card_set_of_list_uniq", [card_set_of_list_uniq]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("uniq_list_of_elements", [uniq_list_of_elements]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("elements_of_list", [elements_of_list]))(gsym_then (thm_tac (new_rewrite [] []))))));
441    (((((fun arg_tac -> (use_arg_then2 ("bij_card_eq", [bij_card_eq])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("elements_of_list", [elements_of_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("FINITE_SET_OF_LIST", [FINITE_SET_OF_LIST]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
442 ]);;
443
444 (* Let y_ineqs *)
445 Sections.add_section_lemma "y_ineqs" (Sections.section_proof ["y"]
446 `MEM y (list_of_elements L) ==> &2 <= norm (h y) /\ norm (h y) <= &2 * h0`
447 [
448    (((((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("elements_of_list", [elements_of_list]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (move ["y_in"]));
449    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`h y IN ball_annulus`))) (term_tac (have_gen_tac []ALL_TAC)))) (((((use_arg_then2 ("Fnjlbxs.in_ball_annulus", [Fnjlbxs.in_ball_annulus]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN ((((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) THEN (done_tac)));
450    ((((use_arg_then2 ("cV", [])) (disch_tac [])) THEN (clear_assumption "cV") THEN BETA_TAC) THEN (((((use_arg_then2 ("contravening", [contravening]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("bij_in", [bij_in])) (fun fst_arg -> (use_arg_then2 ("bij_h", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
451 ]);;
452
453 (* Lemma lnsum13_ineq *)
454 let lnsum13_ineq = Sections.section_proof []
455 `sizel (list_of_elements L) = 13 ==> 
456         list_sum (list_of_elements L) (\y. yn_list h y - &2) <= #0.52`
457 [
458    ((((use_arg_then2 ("cV", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("contravening", [contravening]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["_"])) THEN (case THEN (move ["in_ba"])) THEN (move ["_"]) THEN (move ["size_eq"])));
459    ((fun arg_tac -> arg_tac (Arg_term (`list_sum (list_of_elements L) (ln_list h) 
460         = inv (h0 - &1) * list_sum (list_of_elements L) (\y. h0 - yn_list h y / &2)`))) (term_tac (have_gen_tac [](move ["eq"]))));
461    ((((use_arg_then2 ("list_sum_lmul", [list_sum_lmul]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_MUL_SYM", [REAL_MUL_SYM]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("real_div", [real_div]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lfun", [lfun]))(gsym_then (thm_tac (new_rewrite [] []))))));
462    (((use_arg_then2 ("list_sum_eq", [list_sum_eq])) (thm_tac apply_tac)) THEN (move ["y"]) THEN (move ["mem_y"]));
463    (((repeat_tactic 1 9 (((use_arg_then2 ("list_defs_th", [list_defs_th]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("Nonlinear_lemma.lmfun_lfun", [Nonlinear_lemma.lmfun_lfun]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("y_ineqs", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
464    ((((use_arg_then2 ("lnsum_ineq", [lnsum_ineq])) (disch_tac [])) THEN (clear_assumption "lnsum_ineq") THEN BETA_TAC) THEN ((((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("list_sum_sub", [list_sum_sub]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("real_div", [real_div]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("list_sum_rmul", [list_sum_rmul]))(thm_tac (new_rewrite [] []))))));
465    ((((fun arg_tac -> (use_arg_then2 ("list_sum_const", [list_sum_const])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`h0`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("list_sum_const", [list_sum_const])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`&2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("size_eq", []))(thm_tac (new_rewrite [] [])))));
466    ((((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac));
467 ];;
468
469 (* Lemma lnsum13_high_strict *)
470 let lnsum13_high_strict = Sections.section_proof ["i"]
471 `MEM i (list_of_elements L)
472         /\ sizel (list_of_elements L) = 13 /\ #2.36 <= yn_list h i
473         ==> !j. MEM j (list_of_elements L) /\ ~(j = i) ==> yn_list h j < #2.18`
474 [
475    (BETA_TAC THEN (case THEN (move ["mem_i"])) THEN (case THEN (move ["size13"])) THEN (move ["ineq"]) THEN (move ["j"]) THEN (case THEN (move ["mem_j"])) THEN (move ["j_neq_i"]));
476    ((fun arg_tac -> arg_tac (Arg_term (`delete1 i (delete1 j (list_of_elements L))`))) (term_tac (set_tac "s")));
477    ((fun arg_tac -> arg_tac (Arg_term (`list_sum s (\y. yn_list h y - &2)
478         = list_sum (list_of_elements L) (\y. yn_list h y - &2) - (yn_list h i + yn_list h j - &4)`))) (term_tac (have_gen_tac []ALL_TAC)));
479    ((((use_arg_then2 ("s_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("list_sum_delete1", [list_sum_delete1]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("mem_j", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("mem_delete1_uniq", [mem_delete1_uniq]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("uniq_list_of_elements", [uniq_list_of_elements]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
480    (((((use_arg_then2 ("j_neq_i", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("mem_i", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)) THEN (arith_tac) THEN (done_tac));
481    ((fun arg_tac -> arg_tac (Arg_term (`&0 <= list_sum s (\y. yn_list h y - &2)`))) (term_tac (have_gen_tac []ALL_TAC)));
482    (((((use_arg_then2 ("list_sum_ge0", [list_sum_ge0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("list_defs_th", [list_defs_th]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (move ["x"]) THEN (move ["mem_x"]) THEN (simp_tac));
483    (((((use_arg_then2 ("REAL_SUB_LE", [REAL_SUB_LE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y_ineqs", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("mem_delete1", [mem_delete1])) (fun fst_arg -> (use_arg_then2 ("j", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("mem_delete1", [mem_delete1])) (fun fst_arg -> (use_arg_then2 ("i", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("s_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
484    ((((use_arg_then2 ("ineq", [ineq])) (disch_tac [])) THEN (clear_assumption "ineq") THEN ((fun arg_tac -> (use_arg_then2 ("lnsum13_ineq", [lnsum13_ineq])) (fun fst_arg -> (use_arg_then2 ("size13", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
485 ];;
486
487 (* Lemma lnsum13_high *)
488 let lnsum13_high = Sections.section_proof ["i"]
489 `MEM i (list_of_elements L)
490         /\ sizel (list_of_elements L) = 13 /\ #2.36 <= yn_list h i
491         ==> ALL (\j. ~(j = i) ==> yn_list h j <= #2.18) (list_of_elements L)`
492 [
493    ((((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["mem_i"])) THEN (case THEN (move ["size13"])) THEN (move ["ineq"]) THEN (move ["j"]) THEN (simp_tac) THEN (move ["mem_j"]) THEN (move ["j_neq_i"]));
494    (((((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("lnsum13_high_strict", [lnsum13_high_strict])) (fun fst_arg -> (use_arg_then2 ("mem_i", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
495 ];;
496
497 (* Lemma lnsum13_mid *)
498 let lnsum13_mid = Sections.section_proof ["i";"j"]
499 `MEM i (list_of_elements L) /\ MEM j (list_of_elements L) /\ ~(i = j)
500         /\ sizel (list_of_elements L) = 13 
501         /\ #2.18 <= yn_list h i /\ #2.18 <= yn_list h j
502         ==> ALL (\k. ~(k = i) /\ ~(k = j) ==> yn_list h k <= #2.18) (list_of_elements L)
503                 /\ yn_list h i <= #2.36 /\ yn_list h j <= #2.36`
504 [
505    ((THENL_ROT (-1)) (((((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["mem_i"])) THEN (case THEN (move ["mem_j"])) THEN (case THEN (move ["i_neq_j"])) THEN (case THEN (move ["size13"])) THEN (move ["ineqs"]) THEN (simp_tac)) THEN (split_tac)));
506    ((((use_arg_then2 ("i_neq_j", [])) (disch_tac [])) THEN (clear_assumption "i_neq_j") THEN ((use_arg_then2 ("contraR", [contraR])) (disch_tac [])) THEN (clear_assumption "contraR") THEN (DISCH_THEN apply_tac)) THEN (((use_arg_then2 ("negb_and", [negb_and]))(thm_tac (new_rewrite [] [])))));
507    ((repeat_tactic 1 9 (((use_arg_then2 ("REAL_NOT_LE", [REAL_NOT_LE]))(thm_tac (new_rewrite [] []))))) THEN (case THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("lnsum13_high_strict", [lnsum13_high_strict])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN ((ANTS_TAC) THEN ((TRY done_tac))));
508    ((BETA_TAC THEN ((fun arg_tac ->  (conv_thm_tac DISCH_THEN)  (fun fst_arg -> (use_arg_then2 ("mem_j", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac MP_TAC))) THEN (((use_arg_then2 ("ineqs", [])) (disch_tac [])) THEN (clear_assumption "ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
509    ((BETA_TAC THEN ((fun arg_tac ->  (conv_thm_tac DISCH_THEN)  (fun fst_arg -> (use_arg_then2 ("mem_i", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac MP_TAC))) THEN (((use_arg_then2 ("ineqs", [])) (disch_tac [])) THEN (clear_assumption "ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
510    (BETA_TAC THEN (move ["k"]) THEN (move ["mem_k"]) THEN (move ["k_neq"]));
511    ((fun arg_tac -> arg_tac (Arg_term (`delete1 k (delete1 i (delete1 j (list_of_elements L)))`))) (term_tac (set_tac "s")));
512    ((fun arg_tac -> arg_tac (Arg_term (`list_sum s (\y. yn_list h y - &2)
513         = list_sum (list_of_elements L) (\y. yn_list h y - &2) 
514                 - (yn_list h k + yn_list h i + yn_list h j - &6)`))) (term_tac (have_gen_tac []ALL_TAC)));
515    ((((use_arg_then2 ("s_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("list_sum_delete1", [list_sum_delete1]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("mem_j", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
516    ((repeat_tactic 1 9 (((use_arg_then2 ("mem_delete1_uniq", [mem_delete1_uniq]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("uniq_delete1", [uniq_delete1]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("uniq_list_of_elements", [uniq_list_of_elements]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
517    (((((use_arg_then2 ("i_neq_j", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("mem_i", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("k_neq", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("mem_k", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)) THEN (arith_tac) THEN (done_tac));
518    ((fun arg_tac -> arg_tac (Arg_term (`&0 <= list_sum s (\y. yn_list h y - &2)`))) (term_tac (have_gen_tac []ALL_TAC)));
519    (((((use_arg_then2 ("list_sum_ge0", [list_sum_ge0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("list_defs_th", [list_defs_th]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (move ["x"]) THEN (move ["mem_x"]) THEN (simp_tac));
520    (((((use_arg_then2 ("REAL_SUB_LE", [REAL_SUB_LE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y_ineqs", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("mem_delete1", [mem_delete1])) (fun fst_arg -> (use_arg_then2 ("j", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("mem_delete1", [mem_delete1])) (fun fst_arg -> (use_arg_then2 ("i", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("mem_delete1", [mem_delete1])) (fun fst_arg -> (use_arg_then2 ("k", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("s_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
521    ((((use_arg_then2 ("ineqs", [])) (disch_tac [])) THEN (clear_assumption "ineqs") THEN ((fun arg_tac -> (use_arg_then2 ("lnsum13_ineq", [lnsum13_ineq])) (fun fst_arg -> (use_arg_then2 ("size13", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
522 ];;
523
524 (* Finalization of the section Bij *)
525 let lnsum_ineq = Sections.finalize_theorem lnsum_ineq;;
526 let lnsum13_ineq = Sections.finalize_theorem lnsum13_ineq;;
527 let lnsum13_high_strict = Sections.finalize_theorem lnsum13_high_strict;;
528 let lnsum13_high = Sections.finalize_theorem lnsum13_high;;
529 let lnsum13_mid = Sections.finalize_theorem lnsum13_mid;;
530 Sections.end_section "Bij";;
531
532 (* Finalization of the section Contravening *)
533 let contravening_lp_fan = Sections.finalize_theorem contravening_lp_fan;;
534 let contravening_lp_cond = Sections.finalize_theorem contravening_lp_cond;;
535 let contravening_lp_cond_alt = Sections.finalize_theorem contravening_lp_cond_alt;;
536 let lnsum_ineq = Sections.finalize_theorem lnsum_ineq;;
537 let lnsum13_ineq = Sections.finalize_theorem lnsum13_ineq;;
538 let lnsum13_high_strict = Sections.finalize_theorem lnsum13_high_strict;;
539 let lnsum13_high = Sections.finalize_theorem lnsum13_high;;
540 let lnsum13_mid = Sections.finalize_theorem lnsum13_mid;;
541 Sections.end_section "Contravening";;
542
543 (* Lemma hyp_iso_comm_power *)
544 let hyp_iso_comm_power = Sections.section_proof ["H";"G";"g";"d"]
545 `hyp_iso g (G, H) /\ d IN dart G
546            ==> (!k. (face_map H POWER k) (g d) = g ((face_map G POWER k) d))`
547 [
548    (BETA_TAC THEN (case THEN ((move ["iso_g"]) THEN (move ["d_in"]))));
549    ((THENL_FIRST) ((THENL) elim [ALL_TAC; ((move ["k"]) THEN (move ["Ih"]))]) (((repeat_tactic 1 9 (((use_arg_then2 ("POWER_0", [POWER_0]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac)));
550    (((repeat_tactic 1 9 (((use_arg_then2 ("COM_POWER", [COM_POWER]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("Ih", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("hyp_iso_comm", [hyp_iso_comm])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("lemma_dart_invariant_power_face", [lemma_dart_invariant_power_face]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
551 ];;
552
553 (* Section ExtraDefs *)
554 Sections.begin_section "ExtraDefs";;
555 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
556 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
557 (Sections.add_section_var (mk_var ("L", (`:((num)list)list`))));;
558 (Sections.add_section_var (mk_var ("g", (`:(num#num -> real^3#real^3)`))));;
559 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
560 (Sections.add_section_hyp "goodL" (`good_list L`));;
561 (Sections.add_section_hyp "iso_g" (`hyp_iso g (hypermap_of_list L, hypermap_of_fan (V,E))`));;
562
563 (* Lemma y8_list_def *)
564 let y8_list_def = Sections.section_proof []
565 `ALL (\d. y8_list (g,V,E) d
566              = ye_list g (inverse (f_list_ext L) (inverse (f_list_ext L) d))) (list_of_darts L)`
567 [
568    (((((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (move ["d"]) THEN (move ["mem_d"]));
569    ((repeat_tactic 1 9 (((use_arg_then2 ("list_defs_th", [list_defs_th]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))));
570    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceL"])))));
571    ((((use_arg_then2 ("mem_d", [])) (disch_tac [])) THEN (clear_assumption "mem_d") THEN BETA_TAC) THEN (((((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartL", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (move ["d_in"])));
572    ((((use_arg_then2 ("faceL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("hyp_iso_inverse_comm", [hyp_iso_inverse_comm])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_dart_inveriant_under_inverse_maps", [lemma_dart_inveriant_under_inverse_maps]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
573    (((((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
574 ];;
575 (Sections.add_section_var (mk_var ("h", (`:num -> real^3`))));;
576 (Sections.add_section_hyp "g_eq" (`!x. g x = h (FST x), h (SND x)`));;
577
578 (* Lemma y4'_list_def *)
579 let y4'_list_def = Sections.section_proof []
580 `ALL (\d. y4'_list (g,V,E) d
581                 = ye_list g (SND d, FST (inverse (f_list_ext L) d))) (list_of_darts L)`
582 [
583    (((((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("list_defs_th", [list_defs_th]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (move ["d"]) THEN (move ["mem_d"]));
584    ((((fun arg_tac -> (use_arg_then2 ("pair_expand", [pair_expand])) (fun fst_arg -> (use_arg_then2 ("d", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [3] [])))) THEN (((use_arg_then2 ("pair_expand", [pair_expand]))(gsym_then (thm_tac (new_rewrite [] []))))));
585    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceL"])))));
586    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartH"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceH"])))));
587    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart (hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
588    (((((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
589    (((repeat_tactic 1 9 (((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("g_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("faceH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("hyp_iso_inverse_comm", [hyp_iso_inverse_comm])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
590 ];;
591
592 (* Lemma y4'_list_f_def *)
593 let y4'_list_f_def = Sections.section_proof []
594 `ALL (\d. y4'_list (g,V,E) (f_list_ext L d)
595                 = ye_list g (SND (f_list_ext L d), FST d)) (list_of_darts L)`
596 [
597    (((use_arg_then2 ("y4'_list_def", [y4'_list_def])) (disch_tac [])) THEN (clear_assumption "y4'_list_def") THEN BETA_TAC);
598    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceL"])))));
599    (((repeat_tactic 1 9 (((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (simp_tac)) THEN (move ["eq1"]) THEN (move ["d"]) THEN (move ["mem_d"]));
600    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart (hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
601    (((((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
602    (((use_arg_then2 ("eq1", []))(thm_tac (new_rewrite [] []))));
603    (((((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("faceL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
604    (((((use_arg_then2 ("faceL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`darts_of_list L`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dartL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("hypermap_lemma", [hypermap_lemma]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
605 ];;
606
607 (* Lemma y4'_list_inv_f_def *)
608 let y4'_list_inv_f_def = Sections.section_proof []
609 `ALL (\d. y4'_list (g,V,E) (inverse (f_list_ext L) d)
610                 = ye_list g (FST d, FST ((inverse (f_list_ext L) POWER 2) d))) (list_of_darts L)`
611 [
612    (((use_arg_then2 ("y4'_list_def", [y4'_list_def])) (disch_tac [])) THEN (clear_assumption "y4'_list_def") THEN BETA_TAC);
613    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceL"])))));
614    (((repeat_tactic 1 9 (((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (simp_tac)) THEN (move ["eq1"]) THEN (move ["d"]) THEN (move ["mem_d"]));
615    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart (hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
616    (((((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
617    (((use_arg_then2 ("eq1", []))(thm_tac (new_rewrite [] []))));
618    (((((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("faceL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_dart_inveriant_under_inverse_maps", [lemma_dart_inveriant_under_inverse_maps]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
619    ((((use_arg_then2 ("goodL", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("good_list", [good_list]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["uniqL"])) THEN (move ["_"])));
620    (((((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN ((congr_tac (`ye_list g (_1, _2)`)) THEN ((TRY done_tac))));
621    ((((use_arg_then2 ("f_list_ext_inverse", [f_list_ext_inverse]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
622    ((((use_arg_then2 ("mem_d", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart_in_face", [dart_in_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("find_face_alt", [find_face_alt]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("pair_expand", [pair_expand])) (fun fst_arg -> (use_arg_then2 ("d", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))));
623    (((DISCH_THEN (fun snd_th -> (use_arg_then2 ("prev_el_list_pairs_general", [prev_el_list_pairs_general])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (case THEN (move ["z"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
624 ];;
625
626 (* Lemma y4'_list_ff_def *)
627 let y4'_list_ff_def = Sections.section_proof []
628 `ALL (\d. y4'_list (g,V,E) ((f_list_ext L POWER 2) d)
629                 = ye_list g (SND ((f_list_ext L POWER 2) d), SND d)) (list_of_darts L)`
630 [
631    ((((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["d"]) THEN (move ["mem_d"]) THEN (simp_tac));
632    ((repeat_tactic 1 9 (((use_arg_then2 ("list_defs_th", [list_defs_th]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))));
633    ((fun arg_tac -> arg_tac (Arg_term (`g (SND ((f_list_ext L POWER 2) d), SND d) = SND (g ((f_list_ext L POWER 2) d)), SND (g d)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
634    ((repeat_tactic 1 9 (((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
635    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceL"])))));
636    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartH"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceH"])))));
637    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart (hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
638    (((((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
639    ((((use_arg_then2 ("faceL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("hyp_iso_comm_power", [hyp_iso_comm_power])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("faceH", []))(thm_tac (new_rewrite [] [])))));
640    (((((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN ((congr_tac (`dist (_1, _2)`)) THEN ((TRY done_tac))));
641    ((((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`inverse _`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("o_ASSOC", [o_ASSOC]))(thm_tac (new_rewrite [] [])))));
642    ((((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES_o", [PERMUTES_INVERSES_o])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] [])))));
643    (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] []))));
644    (((fun arg_tac -> arg_tac (Arg_term (`g d IN _`))) (disch_eq_tac "gd_in1" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac));
645    (((((fun arg_tac -> (use_arg_then2 ("pair_expand", [pair_expand])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`g d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [1] [])))) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
646    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso_g", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart_of_fan_eq", [dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("gd_in1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("orFb", [orFb]))(thm_tac (new_rewrite [] []))))));
647    ((((((use_arg_then2 ("IN_ELIM_THM", [IN_ELIM_THM]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("pair_expand", [pair_expand])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`g d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [1] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["v"])) THEN (case THEN (move ["_"])) THEN (case THEN ((((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) THEN (done_tac));
648 ];;
649
650 (* Lemma y4'_list_fff_def *)
651 let y4'_list_fff_def = Sections.section_proof []
652 `ALL (\d. y4'_list (g,V,E) ((f_list_ext L POWER 3) d)
653             = ye_list g (SND ((f_list_ext L POWER 3) d), SND (f_list_ext L d))) (list_of_darts L)`
654 [
655    (((use_arg_then2 ("y4'_list_ff_def", [y4'_list_ff_def])) (disch_tac [])) THEN (clear_assumption "y4'_list_ff_def") THEN BETA_TAC);
656    ((fun arg_tac -> (use_arg_then2 ("components_hypermap_of_list", [components_hypermap_of_list])) (fun fst_arg -> (use_arg_then2 ("goodL", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartL"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["faceL"])))));
657    (((repeat_tactic 1 9 (((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (simp_tac)) THEN (move ["eq1"]) THEN (move ["d"]) THEN (move ["mem_d"]));
658    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart (hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
659    (((((use_arg_then2 ("dartL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
660    ((((use_arg_then2 ("THREE", [THREE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq1", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
661    (((((use_arg_then2 ("IN_SET_OF_LIST", [IN_SET_OF_LIST]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("darts_of_list", [darts_of_list]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("faceL", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
662 ];;
663
664 (* Finalization of the section ExtraDefs *)
665 let y8_list_def = Sections.finalize_theorem y8_list_def;;
666 let y4'_list_def = Sections.finalize_theorem y4'_list_def;;
667 let y4'_list_f_def = Sections.finalize_theorem y4'_list_f_def;;
668 let y4'_list_inv_f_def = Sections.finalize_theorem y4'_list_inv_f_def;;
669 let y4'_list_ff_def = Sections.finalize_theorem y4'_list_ff_def;;
670 let y4'_list_fff_def = Sections.finalize_theorem y4'_list_fff_def;;
671 Sections.end_section "ExtraDefs";;
672
673 (* Section ExtraFan *)
674 Sections.begin_section "ExtraFan";;
675 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
676 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
677 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
678
679 (* Let dartH *)
680 Sections.add_section_lemma "dartH" (Sections.section_proof []
681 `dart (hypermap_of_fan (V,E)) = dart_of_fan (V,E)`
682 [
683    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
684 ]);;
685
686 (* Lemma f_fan_pair_ext_power_inverse *)
687 let f_fan_pair_ext_power_inverse = Sections.section_proof ["k";"d"]
688 `d IN dart_of_fan (V,E)
689         /\ k < CARD (face (hypermap_of_fan (V,E)) d)
690         ==> (f_fan_pair_ext (V,E) POWER k) d 
691           = (inverse (f_fan_pair_ext (V,E)) POWER (CARD (face (hypermap_of_fan (V,E)) d) - k)) d`
692 [
693    (BETA_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["k_lt"]))));
694    ((fun arg_tac -> arg_tac (Arg_term (`CARD _`))) (term_tac (set_tac "n")));
695    (((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [])))));
696    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("FINITE_ORBIT_MAP_INVERSE", [FINITE_ORBIT_MAP_INVERSE])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`dart_of_fan (V,E)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("n", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))));
697    (((((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("face_map_and_darts", [face_map_and_darts]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("face", [face]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("n_def", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("k_lt", [])) (disch_tac [])) THEN (clear_assumption "k_lt") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
698    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`n - (n - k) = k:num`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((ALL_TAC) THEN (done_tac)));
699    ((((use_arg_then2 ("k_lt", [])) (disch_tac [])) THEN (clear_assumption "k_lt") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
700 ];;
701
702 (* Lemma f_fan_pair_ext_power_in_dart *)
703 let f_fan_pair_ext_power_in_dart = Sections.section_proof ["k";"d"]
704 `d IN dart_of_fan (V,E)
705         ==> (f_fan_pair_ext (V,E) POWER k) d IN dart_of_fan (V,E)`
706 [
707    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (move ["d_in"]));
708    ((((use_arg_then2 ("lemma_dart_invariant_power_face", [lemma_dart_invariant_power_face]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
709 ];;
710
711 (* Lemma f_fan_pair_ext_power_inj *)
712 let f_fan_pair_ext_power_inj = Sections.section_proof ["k1";"k2";"d"]
713 `d IN dart_of_fan (V,E)
714         /\ k1 < CARD (face (hypermap_of_fan (V,E)) d) /\ k2 < CARD (face (hypermap_of_fan (V,E)) d)
715         ==> ((f_fan_pair_ext (V,E) POWER k1) d = (f_fan_pair_ext (V,E) POWER k2) d
716                 <=> k1 = k2)`
717 [
718    ((fun arg_tac -> arg_tac (Arg_term (`CARD _`))) (term_tac (set_tac "n")));
719    (BETA_TAC THEN (case THEN (move ["d_in"])) THEN (case THEN (move ["k1_lt"])) THEN (move ["k2_lt"]));
720    ((THENL_LAST) (split_tac) ((BETA_TAC THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
721    (((DISCH_THEN (fun snd_th -> (fun arg_tac -> (use_arg_then2 ("ORBIT_MAP_INJ", [ORBIT_MAP_INJ])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC) THEN (DISCH_THEN apply_tac) THEN ((use_arg_then2 ("n", [])) (term_tac exists_tac)));
722    (((((fun arg_tac -> (use_arg_then2 ("FINITE_DART_OF_FAN", [FINITE_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("face", [face]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
723 ];;
724
725 (* Lemma f_fan_pair_ext_in_dart1 *)
726 let f_fan_pair_ext_in_dart1 = Sections.section_proof ["d"]
727 `d IN dart1_of_fan (V,E) ==> 
728         f_fan_pair_ext (V,E) d IN dart1_of_fan (V,E)`
729 [
730    ((BETA_TAC THEN (move ["d_in"])) THEN ((((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("E_N_F_IN_DART1_OF_FAN", [E_N_F_IN_DART1_OF_FAN]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
731 ];;
732
733 (* Lemma f_fan_pair_ext_power_in_dart1 *)
734 let f_fan_pair_ext_power_in_dart1 = Sections.section_proof ["k";"d"]
735 `d IN dart1_of_fan (V,E)
736         ==> (f_fan_pair_ext (V,E) POWER k) d IN dart1_of_fan (V,E)`
737 [
738    (BETA_TAC THEN (move ["d_in"]));
739    ((THENL_FIRST) ((THENL) (((use_arg_then2 ("k", [])) (disch_tac [])) THEN (clear_assumption "k") THEN elim) [ALL_TAC; ((move ["k"]) THEN (move ["Ih"]))]) (((((use_arg_then2 ("POWER_0", [POWER_0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
740    (((((use_arg_then2 ("COM_POWER", [COM_POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext_in_dart1", [f_fan_pair_ext_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
741 ];;
742
743 (* Lemma f_fan_pair_ext_in_dart *)
744 let f_fan_pair_ext_in_dart = Sections.section_proof ["d"]
745 `d IN dart_of_fan (V,E)
746         ==> f_fan_pair_ext (V,E) d IN dart_of_fan (V,E)`
747 [
748    ((BETA_TAC THEN (move ["d_in"])) THEN ((((use_arg_then2 ("POWER_1", [POWER_1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_fan_pair_ext_power_in_dart", [f_fan_pair_ext_power_in_dart]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
749 ];;
750
751 (* Lemma inv_f_fan_pair_ext_power_in_dart1 *)
752 let inv_f_fan_pair_ext_power_in_dart1 = Sections.section_proof ["k";"d"]
753 `d IN dart1_of_fan (V,E)
754         ==> (inverse (f_fan_pair_ext (V,E)) POWER k) d IN dart1_of_fan (V,E)`
755 [
756    (BETA_TAC THEN (move ["d_in"]));
757    ((THENL_FIRST) ((THENL) (((use_arg_then2 ("k", [])) (disch_tac [])) THEN (clear_assumption "k") THEN elim) [ALL_TAC; ((move ["k"]) THEN (move ["Ih"]))]) (((((use_arg_then2 ("POWER_0", [POWER_0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
758    (((((use_arg_then2 ("COM_POWER", [COM_POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INVERSE_F_IN_DART1_OF_FAN", [INVERSE_F_IN_DART1_OF_FAN]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
759 ];;
760
761 (* Lemma face_eq_power *)
762 let face_eq_power = Sections.section_proof ["k";"d"]
763 `d IN darts_k k (hypermap_of_fan (V,E))
764         ==> face (hypermap_of_fan (V,E)) d = {(f_fan_pair_ext (V,E) POWER i) d | i < k}`
765 [
766    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["hypV"])));
767    (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("face", [face]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("hypV", []))(thm_tac (new_rewrite [] [])))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["card_f"]));
768    (((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("FINITE_ORBIT_MAP", [FINITE_ORBIT_MAP])) (fun fst_arg -> (use_arg_then2 ("card_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART1_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART1_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("finite_dart1", [finite_dart1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
769 ];;
770
771 (* Lemma face4_eq *)
772 let face4_eq = Sections.section_proof ["v";"w"]
773 `let w' = sigma_fan (vec 0) V E v w in
774                    let u = sigma_fan (vec 0) V E w' v in
775         v,w IN darts_k 4 (hypermap_of_fan (V,E))
776         ==> (f_fan_pair_ext (V,E) (v,w) = (w,u)
777                 /\ (f_fan_pair_ext (V,E) POWER 2) (v,w) = (u,w')
778                 /\ (f_fan_pair_ext (V,E) POWER 3) (v,w) = (w',v)
779                 /\ f_fan_pair_ext (V,E) (w,u) = (u,w')
780                 /\ f_fan_pair_ext (V,E) (u,w') = (w',v)
781                 /\ f_fan_pair_ext (V,E) (w',v) = (v,w))
782         /\ (v,w IN dart1_of_fan (V,E) /\ w,u IN dart1_of_fan (V,E)
783                 /\ u,w' IN dart1_of_fan (V,E) /\ w',v IN dart1_of_fan (V,E))
784         /\ face (hypermap_of_fan (V,E)) (v,w) = {(v,w), (w,u), (u,w'), (w',v)}`
785 [
786    (repeat_tactic 1 9 ((CONV_TAC let_CONV)));
787    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
788    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w' v`))) (term_tac (set_tac "u")));
789    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["hypV"])));
790    ((BETA_TAC THEN (move ["vw_in4"])) THEN (((use_arg_then2 ("vw_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("hypV", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["vw_in"])) THEN (move ["card_f"])));
791    ((fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inverse", [f_fan_pair_ext_power_inverse])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
792    ((((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (move ["inv_eq"]));
793    ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart1_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["vw_in1"]))));
794    (((((use_arg_then2 ("CARD_FACE_GT_1", [CARD_FACE_GT_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
795    ((fun arg_tac -> arg_tac (Arg_term (`w',v IN dart1_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["w'v_in1"]))));
796    (((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("sigma_in_dart1", [sigma_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
797    ((fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext (V,E)`))) (term_tac (set_tac "f")));
798    ((fun arg_tac -> arg_tac (Arg_term (`(inverse f POWER 2) (v,w) = (u,w')`))) (term_tac (have_gen_tac [](move ["eq0"]))));
799    ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
800    (((repeat_tactic 1 9 (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'v_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("u_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
801    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`2 < 4 /\ 4 - 2 = 2 /\ 3 < 4 /\ 4 - 3 = 1`))) (term_tac (have_gen_tac [](move ["ineqs"])))) ((arith_tac) THEN (done_tac)));
802    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`(f POWER 2) (v,w) = u,w'`))) (term_tac (have_gen_tac [](move ["eq2"])))) ((((use_arg_then2 ("inv_eq", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
803    ((fun arg_tac -> arg_tac (Arg_term (`f (v,w) = w,u`))) (term_tac (have_gen_tac [](move ["eq1"]))));
804    ((((use_arg_then2 ("pair_expand", [pair_expand]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("FST", [FST]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
805    ((((use_arg_then2 ("eq2", [])) (disch_tac [])) THEN (clear_assumption "eq2") THEN BETA_TAC) THEN ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext_in_dart1", [f_fan_pair_ext_in_dart1]))(thm_tac (new_rewrite [] [])))) THEN ((simp_tac THEN TRY done_tac))));
806    ((((((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("pair_expand", [pair_expand])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`f (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [1] [])))) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
807    ((fun arg_tac -> arg_tac (Arg_term (`(f POWER 3) (v,w) = w',v`))) (term_tac (have_gen_tac [](move ["eq3"]))));
808    ((((use_arg_then2 ("inv_eq", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ineqs", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
809    (((((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
810    ((((use_arg_then2 ("eq1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq3", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("eq1", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq2", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq3", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("THREE", [THREE]))(thm_tac (new_rewrite [1] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
811    ((((use_arg_then2 ("inv_eq", []))(thm_tac (new_rewrite [1] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ineqs", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))));
812    ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1; 2] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
813    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (use_arg_then2 ("f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_fan_pair_ext_in_dart1", [f_fan_pair_ext_in_dart1]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
814    ((repeat_tactic 1 9 (((use_arg_then2 ("f_fan_pair_ext_power_in_dart1", [f_fan_pair_ext_power_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
815    (((((fun arg_tac -> (use_arg_then2 ("face_eq_power", [face_eq_power])) (fun fst_arg -> (use_arg_then2 ("vw_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (gen_FINITE_SET 4)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_0", [POWER_0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
816 ];;
817
818 (* Lemma face5_eq *)
819 let face5_eq = Sections.section_proof ["v";"w"]
820 `let w' = sigma_fan (vec 0) V E v w in
821                    let u = sigma_fan (vec 0) V E w' v in
822                    let z = sigma_fan (vec 0) V E u w' in
823         v,w IN darts_k 5 (hypermap_of_fan (V,E))
824         ==> (f_fan_pair_ext (V,E) (v,w) = (w,z)
825                 /\ (f_fan_pair_ext (V,E) POWER 2) (v,w) = (z,u)
826                 /\ (f_fan_pair_ext (V,E) POWER 3) (v,w) = (u,w')
827                 /\ (f_fan_pair_ext (V,E) POWER 4) (v,w) = (w',v)
828                 /\ f_fan_pair_ext (V,E) (w,z) = (z,u)
829                 /\ f_fan_pair_ext (V,E) (z,u) = (u,w')
830                 /\ f_fan_pair_ext (V,E) (u,w') = (w',v)
831                 /\ f_fan_pair_ext (V,E) (w',v) = (v,w)
832                 /\ inverse (f_fan_pair_ext (V,E)) (v,w) = (w',v))
833         /\ (v,w IN dart1_of_fan (V,E) /\ w,z IN dart1_of_fan (V,E) /\ z,u IN dart1_of_fan (V,E)
834                 /\ u,w' IN dart1_of_fan (V,E) /\ w',v IN dart1_of_fan (V,E))
835         /\ face (hypermap_of_fan (V,E)) (v,w) = {(v,w), (w,z), (z,u), (u,w'), (w',v)}`
836 [
837    (repeat_tactic 1 9 ((CONV_TAC let_CONV)));
838    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
839    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w' v`))) (term_tac (set_tac "u")));
840    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E u w'`))) (term_tac (set_tac "z")));
841    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["hypV"])));
842    ((BETA_TAC THEN (move ["vw_in5"])) THEN (((use_arg_then2 ("vw_in5", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("hypV", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["vw_in"])) THEN (move ["card_f"])));
843    ((fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inverse", [f_fan_pair_ext_power_inverse])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
844    ((((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (move ["inv_eq"]));
845    ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart1_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["vw_in1"]))));
846    (((((use_arg_then2 ("CARD_FACE_GT_1", [CARD_FACE_GT_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
847    ((fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext (V,E)`))) (term_tac (set_tac "f")));
848    ((fun arg_tac -> arg_tac (Arg_term (`(inverse f) (v,w) = (w',v)`))) (term_tac (have_gen_tac [](move ["eq_inv1"]))));
849    (((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
850    ((fun arg_tac -> arg_tac (Arg_term (`(inverse f POWER 2) (v,w) = (u,w')`))) (term_tac (have_gen_tac [](move ["eq_inv2"]))));
851    ((((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq_inv1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
852    (((((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq_inv1", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("INVERSE_F_IN_DART1_OF_FAN", [INVERSE_F_IN_DART1_OF_FAN]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
853    ((fun arg_tac -> arg_tac (Arg_term (`(inverse f POWER 3) (v,w) = (z,u)`))) (term_tac (have_gen_tac [](move ["eq_inv3"]))));
854    ((((use_arg_then2 ("THREE", [THREE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("COM_POWER", [COM_POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq_inv2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
855    (((((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq_inv2", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("inv_f_fan_pair_ext_power_in_dart1", [inv_f_fan_pair_ext_power_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
856    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`2 < 5 /\ 5 - 2 = 3 /\ 3 < 5 /\ 5 - 3 = 2 /\ 4 < 5 /\ 5 - 4 = 1`))) (term_tac (have_gen_tac [](move ["ineqs"])))) ((arith_tac) THEN (done_tac)));
857    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`(f POWER 2) (v,w) = z,u`))) (term_tac (have_gen_tac [](move ["eq2"])))) ((((use_arg_then2 ("inv_eq", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
858    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`(f POWER 3) (v,w) = u,w'`))) (term_tac (have_gen_tac [](move ["eq3"])))) ((((use_arg_then2 ("inv_eq", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
859    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`(f POWER 4) (v,w) = w',v`))) (term_tac (have_gen_tac [](move ["eq4"])))) (((((use_arg_then2 ("inv_eq", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ineqs", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
860    ((fun arg_tac -> arg_tac (Arg_term (`f (v,w) = w,z`))) (term_tac (have_gen_tac [](move ["eq1"]))));
861    ((((use_arg_then2 ("pair_expand", [pair_expand]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("FST", [FST]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
862    ((((use_arg_then2 ("eq2", [])) (disch_tac [])) THEN (clear_assumption "eq2") THEN BETA_TAC) THEN ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext_in_dart1", [f_fan_pair_ext_in_dart1]))(thm_tac (new_rewrite [] [])))) THEN ((simp_tac THEN TRY done_tac))));
863    ((((((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("pair_expand", [pair_expand])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`f (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [1] [])))) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
864    (((((use_arg_then2 ("eq1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq3", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq4", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq_inv1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)) THEN (split_tac));
865    ((((use_arg_then2 ("eq1", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq2", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq3", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq4", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("THREE", [THREE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
866    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`4 = SUC 3`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
867    ((((use_arg_then2 ("THREE", [THREE]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
868    (((((use_arg_then2 ("eq_inv1", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
869    ((((use_arg_then2 ("eq1", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq2", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq3", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq4", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_fan_pair_ext_in_dart1", [f_fan_pair_ext_in_dart1]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
870    ((repeat_tactic 1 9 (((use_arg_then2 ("f_fan_pair_ext_power_in_dart1", [f_fan_pair_ext_power_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))));
871    (((((fun arg_tac -> (use_arg_then2 ("face_eq_power", [face_eq_power])) (fun fst_arg -> (use_arg_then2 ("vw_in5", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (gen_FINITE_SET 5)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_0", [POWER_0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
872 ];;
873
874 (* Lemma face_last_dart *)
875 let face_last_dart = Sections.section_proof ["v";"w"]
876 `v,w IN dart1_of_fan (V,E)
877         ==> (f_fan_pair_ext (V,E) POWER (CARD (face (hypermap_of_fan (V,E)) (v,w)) - 1)) (v,w)
878                 = sigma_fan (vec 0) V E v w, v`
879 [
880    (BETA_TAC THEN (move ["vw_in1"]));
881    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["vw_in"])))) (((((use_arg_then2 ("dart_of_fan_eq", [dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
882    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("FACE_NOT_EMPTY", [FACE_NOT_EMPTY])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`hypermap_of_fan (V,E)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`v,w`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["ineq"])));
883    ((THENL_FIRST) (((fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inverse", [f_fan_pair_ext_power_inverse])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) ((((use_arg_then2 ("ineq", [ineq])) (disch_tac [])) THEN (clear_assumption "ineq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
884    ((((use_arg_then2 ("subKn", [subKn]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
885    (((((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
886 ];;
887
888 (* Finalization of the section ExtraFan *)
889 let f_fan_pair_ext_power_inverse = Sections.finalize_theorem f_fan_pair_ext_power_inverse;;
890 let f_fan_pair_ext_power_in_dart = Sections.finalize_theorem f_fan_pair_ext_power_in_dart;;
891 let f_fan_pair_ext_power_inj = Sections.finalize_theorem f_fan_pair_ext_power_inj;;
892 let f_fan_pair_ext_in_dart1 = Sections.finalize_theorem f_fan_pair_ext_in_dart1;;
893 let f_fan_pair_ext_power_in_dart1 = Sections.finalize_theorem f_fan_pair_ext_power_in_dart1;;
894 let f_fan_pair_ext_in_dart = Sections.finalize_theorem f_fan_pair_ext_in_dart;;
895 let inv_f_fan_pair_ext_power_in_dart1 = Sections.finalize_theorem inv_f_fan_pair_ext_power_in_dart1;;
896 let face_eq_power = Sections.finalize_theorem face_eq_power;;
897 let face4_eq = Sections.finalize_theorem face4_eq;;
898 let face5_eq = Sections.finalize_theorem face5_eq;;
899 let face_last_dart = Sections.finalize_theorem face_last_dart;;
900 Sections.end_section "ExtraFan";;
901
902 (* Section FanAddDiag *)
903 Sections.begin_section "FanAddDiag";;
904 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
905 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
906 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
907
908 (* Let dartH *)
909 Sections.add_section_lemma "dartH" (Sections.section_proof []
910 `dart (hypermap_of_fan (V,E)) = dart_of_fan (V,E)`
911 [
912    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
913 ]);;
914
915 (* Let in_dart_inV *)
916 Sections.add_section_lemma "in_dart_inV" (Sections.section_proof ["d"]
917 `d IN dart_of_fan (V,E) ==> FST d IN V /\ SND d IN V`
918 [
919    (((((use_arg_then2 ("pair_expand", [pair_expand]))(thm_tac (new_rewrite [1] [])))) THEN (DISCH_THEN (fun snd_th -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (done_tac));
920 ]);;
921
922 (* Lemma add_diag_eq_E *)
923 let add_diag_eq_E = Sections.section_proof ["d"]
924 `CARD (face (hypermap_of_fan (V,E)) d) = 3
925         ==> add_diag (V,E) d = E`
926 [
927    ((((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["card_eq"])) THEN (((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))));
928    (((fun arg_tac -> arg_tac (Arg_term (`v,w IN _`))) (disch_eq_tac "vw_in1" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac));
929    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["vw_in"])))) (((((use_arg_then2 ("dart_of_fan_eq", [dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
930    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("split_fan_face_eq", [split_fan_face_eq])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_eq", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
931    ((((((use_arg_then2 ("split_fan_face", [split_fan_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["_"]))) THEN (done_tac));
932 ];;
933
934 (* Finalization of the section FanAddDiag *)
935 let add_diag_eq_E = Sections.finalize_theorem add_diag_eq_E;;
936 Sections.end_section "FanAddDiag";;
937
938 (* Section FullySurroundedAddDiag *)
939 Sections.begin_section "FullySurroundedAddDiag";;
940 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
941 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
942 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
943
944 (* Let dartH *)
945 Sections.add_section_lemma "dartH" (Sections.section_proof []
946 `dart (hypermap_of_fan (V,E)) = dart_of_fan (V,E)`
947 [
948    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
949 ]);;
950 (Sections.add_section_hyp "f_surr" (`fully_surrounded (V,E)`));;
951
952 (* Let dart1_eq *)
953 Sections.add_section_lemma "dart1_eq" (Sections.section_proof []
954 `dart1_of_fan (V,E) = dart_of_fan (V,E)`
955 [
956    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
957 ]);;
958
959 (* Lemma pack_dist *)
960 let pack_dist = Sections.section_proof ["x"]
961 `packing V /\ x IN dart_of_fan (V,E) ==> &2 <= dist x`
962 [
963    ((((use_arg_then2 ("x", [])) (disch_tac [])) THEN (clear_assumption "x") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (case THEN (move ["packV"]))) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["vw_in"])));
964    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("iffLR", [iffLR])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("Fnjlbxs.packing", [Fnjlbxs.packing])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("packV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("v", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("w", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
965    (((repeat_tactic 1 9 (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART1_OF_FAN", [PAIR_IN_DART1_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ", [PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
966 ];;
967
968 (* Lemma split_fan_face_eq_add_diag *)
969 let split_fan_face_eq_add_diag = Sections.section_proof ["d"]
970 `d IN dart_of_fan (V,E) 
971         ==> split_fan_face (V,E) d = V, add_diag (V,E) d`
972 [
973    ((((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"])) THEN ((((use_arg_then2 ("split_fan_face", [split_fan_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
974 ];;
975
976 (* Lemma faces_add_diag *)
977 let faces_add_diag = Sections.section_proof ["v";"w"]
978 `v,w IN dart_of_fan (V,E)
979          ==> let H2 = hypermap_of_fan (V, add_diag (V,E) (v,w)) in
980              let H = hypermap_of_fan (V,E) in
981              let w' = sigma_fan (vec 0) V E v w in
982                 face_set H2 = {face H2 (v,w), face H2 (w',w)} 
983                         UNION (face_set H DELETE (face H (v,w)))`
984 [
985    ((BETA_TAC THEN (move ["vw_in"])) THEN (repeat_tactic 1 9 ((CONV_TAC let_CONV))));
986    (((((use_arg_then2 ("EXTENSION", [EXTENSION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SING", [IN_SING]))(thm_tac (new_rewrite [] []))))) THEN (move ["f"]));
987    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
988    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fully_surrounded_card_face_alt", [fully_surrounded_card_face_alt])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN case THEN (move ["card_f"]));
989    ((((use_arg_then2 ("split_fan_face_eq_add_diag", [split_fan_face_eq_add_diag]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("split_fan_face_eq", [split_fan_face_eq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
990    ((fun arg_tac -> arg_tac (Arg_term (`w',w IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["w'w_in"]))));
991    (((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_fan_pair3", [f_fan_pair3]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
992    ((THENL_FIRST) ((THENL) (split_tac) [(((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))); ALL_TAC]) (((((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("orbC", [orbC]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("orbA", [orbA]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("orNb", [orNb]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
993    ((((THENL) case [ALL_TAC; (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))]) THEN ((TRY done_tac))) THEN (case THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN ((((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
994    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE face_split_fan_face_explicit))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
995    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("face_split_fan_face", [face_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
996    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
997    ((((use_arg_then2 ("split_fan_face_eq_add_diag", [split_fan_face_eq_add_diag]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))));
998    (BETA_TAC THEN (case THEN (move ["fan2"])) THEN (case THEN (move ["dart2"])) THEN (move ["f_surr2"]) THEN (move ["fs_eq"]) THEN (case THEN ALL_TAC) THEN (case THEN ((move ["f2_vw"]) THEN (move ["f2_w'w"]))) THEN (move ["_"]));
999    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartH2"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["fH2"])))));
1000    ((fun arg_tac -> arg_tac (Arg_term (`hypermap_of_fan _`))) (term_tac (set_tac "H2")));
1001    ((THENL_ROT (-1)) (split_tac));
1002    ((THENL_FIRST) case ((case THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN ((((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartH2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
1003    ((BETA_TAC THEN (case THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("lemma_face_representation", [lemma_face_representation])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (case THEN (move ["d"]))) THEN ((((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (move ["f_neq"])));
1004    ((THENL_LAST) (((fun arg_tac -> (use_arg_then2 ("fs_eq", [])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) (((((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartH2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
1005    ((((use_arg_then2 ("f_neq", [])) (disch_tac [])) THEN (clear_assumption "f_neq") THEN ((use_arg_then2 ("contra", [contra])) (disch_tac [])) THEN (clear_assumption "contra") THEN (DISCH_THEN apply_tac) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("lemma_face_identity", [lemma_face_identity])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1006    ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("lemma_face_representation", [lemma_face_representation])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (case THEN (move ["d"])));
1007    (((((use_arg_then2 ("dartH2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SING", [IN_SING]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in_cond"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))));
1008    ((THENL_ROT (-1)) ((THENL) (((use_arg_then2 ("d_in_cond", [])) (disch_tac [])) THEN (clear_assumption "d_in_cond") THEN case) [(move ["d_in"]); ALL_TAC]));
1009    ((case THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (DISJ1_TAC) THEN (DISJ1_TAC));
1010    ((((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))) THEN ((use_arg_then2 ("lemma_face_identity", [lemma_face_identity])) (thm_tac apply_tac)) THEN ((((use_arg_then2 ("f2_vw", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1011    ((THENL_ROT (-1)) (((fun arg_tac -> arg_tac (Arg_term (`d IN face (hypermap_of_fan (V,E)) (v,w)`))) (disch_eq_tac "d_in_f" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)));
1012    ((DISJ2_TAC) THEN ((((use_arg_then2 ("fs_eq", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))));
1013    ((((use_arg_then2 ("d_in_f", [])) (disch_tac [])) THEN (clear_assumption "d_in_f") THEN ((use_arg_then2 ("contra", [contra])) (disch_tac [])) THEN (clear_assumption "contra") THEN (DISCH_THEN apply_tac)) THEN (((use_arg_then2 ("contraLR", [contraLR])) (disch_tac [])) THEN (clear_assumption "contraLR") THEN (DISCH_THEN apply_tac) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("lemma_different_faces", [lemma_different_faces])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (done_tac));
1014    ((THENL_ROT (-1)) (((fun arg_tac -> arg_tac (Arg_term (`d = v,w \/ d = w',v`))) (disch_eq_tac "d_eq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)));
1015    ((DISJ1_TAC) THEN (DISJ2_TAC) THEN (((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))) THEN ((use_arg_then2 ("lemma_face_identity", [lemma_face_identity])) (thm_tac apply_tac)));
1016    (((((use_arg_then2 ("f2_w'w", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DIFF", [IN_DIFF]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SING", [IN_SING]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1017    ((DISJ1_TAC) THEN (DISJ1_TAC) THEN (((use_arg_then2 ("d_eq", [])) (disch_tac [])) THEN (clear_assumption "d_eq") THEN case THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))));
1018    ((((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))) THEN ((use_arg_then2 ("lemma_face_identity", [lemma_face_identity])) (thm_tac apply_tac)) THEN ((((use_arg_then2 ("f2_vw", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1019 ];;
1020
1021 (* Lemma f_fan_pair_ext_power_add_diag *)
1022 let f_fan_pair_ext_power_add_diag = Sections.section_proof ["v";"w";"k"]
1023 `let f = face (hypermap_of_fan (V,E)) (v,w) in
1024          let w' = sigma_fan (vec 0) V E v w in
1025                 v,w IN dart_of_fan (V,E) /\ 3 < CARD f
1026                 /\ 1 <= k /\ k <= CARD f - 2
1027         ==> (f_fan_pair_ext (V, add_diag (V,E) (v,w)) POWER k) (w',w)
1028                 = (f_fan_pair_ext (V,E) POWER k) (v,w)`
1029 [
1030    (repeat_tactic 1 9 ((CONV_TAC let_CONV)));
1031    ((fun arg_tac -> arg_tac (Arg_term (`face _ (v,w)`))) (term_tac (set_tac "f")));
1032    (BETA_TAC THEN (case THEN (move ["vw_in"])) THEN (case THEN (move ["card_f"])) THEN (move ["k_ineqs"]));
1033    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1034    ((THENL_FIRST) (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE f_split_fan_face))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC)) THEN (ANTS_TAC)) ((((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
1035    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
1036    ((((use_arg_then2 ("split_fan_face_eq_add_diag", [split_fan_face_eq_add_diag]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1037    (BETA_TAC THEN (move ["f_eqs"]) THEN (case THEN (move ["fan2"])) THEN (case THEN (move ["dart2"])) THEN (move ["f_surr2"]));
1038    ((repeat_tactic 1 9 (((use_arg_then2 ("f_fan_pair_power", [f_fan_pair_power]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)));
1039    (((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1040    ((THENL_FIRST) ((THENL) (((use_arg_then2 ("k_ineqs", [])) (disch_tac [])) THEN (clear_assumption "k_ineqs") THEN ((use_arg_then2 ("k", [])) (disch_tac [])) THEN (clear_assumption "k") THEN elim) [ALL_TAC; ((move ["k"]) THEN (move ["Ih"]))]) ((arith_tac) THEN (done_tac)));
1041    ((BETA_TAC THEN (move ["k_ineqs"])) THEN ((THENL) (((fun arg_tac -> (use_arg_then2 ("posnP", [posnP])) (fun fst_arg -> (use_arg_then2 ("k", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN case) [(((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))); (move ["k_gt0"])]));
1042    (((((use_arg_then2 ("ONE", [ONE]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_eqs", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1043    ((THENL_FIRST) ((repeat_tactic 1 9 (((use_arg_then2 ("COM_POWER", [COM_POWER]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("Ih", []))(thm_tac (new_rewrite [] []))))) ((((use_arg_then2 ("k_ineqs", [])) (disch_tac [])) THEN (clear_assumption "k_ineqs") THEN ((use_arg_then2 ("k_gt0", [])) (disch_tac [])) THEN (clear_assumption "k_gt0") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1044    ((((use_arg_then2 ("f_eqs", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("f_fan_pair_power", [f_fan_pair_power]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("negb_or", [negb_or]))(thm_tac (new_rewrite [] []))))));
1045    ((((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext_power_in_dart", [f_fan_pair_ext_power_in_dart]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("orTb", [orTb]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))));
1046    ((THENL_FIRST) (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fully_surrounded_diag_not_in_dart", [fully_surrounded_diag_not_in_dart])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC)) THEN (ANTS_TAC)) ((((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
1047    ((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (move ["ww'_n_in"]));
1048    (split_tac);
1049    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v,w = (f_fan_pair_ext (V,E) POWER 0) (v,w)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [2] []))))))) (((((use_arg_then2 ("POWER_0", [POWER_0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
1050    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inj", [f_fan_pair_ext_power_inj])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("LT_NZ", [LT_NZ]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))));
1051    ((((use_arg_then2 ("k_ineqs", [])) (disch_tac [])) THEN (clear_assumption "k_ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1052    ((THENL_FIRST) (split_tac) ((((use_arg_then2 ("ww'_n_in", [])) (disch_tac [])) THEN (clear_assumption "ww'_n_in") THEN ((use_arg_then2 ("contra", [contra])) (disch_tac [])) THEN (clear_assumption "contra") THEN (DISCH_THEN apply_tac) THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("f_fan_pair_ext_power_in_dart", [f_fan_pair_ext_power_in_dart]))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
1053    (split_tac);
1054    ((((use_arg_then2 ("ww'_n_in", [])) (disch_tac [])) THEN (clear_assumption "ww'_n_in") THEN ((use_arg_then2 ("contra", [contra])) (disch_tac [])) THEN (clear_assumption "contra") THEN (DISCH_THEN apply_tac)) THEN ((((use_arg_then2 ("dart_switch", [dart_switch]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("f_fan_pair_ext_power_in_dart", [f_fan_pair_ext_power_in_dart]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1055    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E w' v, w' = (inverse (f_fan_pair_ext (V,E)) POWER 2) (v,w)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
1056    ((((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1057    ((repeat_tactic 1 9 (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("dart_switch", [dart_switch]))(thm_tac (new_rewrite [] [])))));
1058    (((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("sigma_in_dart1", [sigma_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1059    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`2 = CARD f - (CARD f - 2)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((((use_arg_then2 ("k_ineqs", [])) (disch_tac [])) THEN (clear_assumption "k_ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1060    ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inverse", [f_fan_pair_ext_power_inverse])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] []))))));
1061    ((((use_arg_then2 ("k_ineqs", [])) (disch_tac [])) THEN (clear_assumption "k_ineqs") THEN BETA_TAC) THEN (arith_tac));
1062    (((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inj", [f_fan_pair_ext_power_inj])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("k_ineqs", [])) (disch_tac [])) THEN (clear_assumption "k_ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1063 ];;
1064
1065 (* Lemma inverse_f_fan_pair_ext_add_diag *)
1066 let inverse_f_fan_pair_ext_add_diag = Sections.section_proof ["v";"w"]
1067 `let f = face (hypermap_of_fan (V,E)) (v,w) in
1068          let w' = sigma_fan (vec 0) V E v w in
1069                 v,w IN dart_of_fan (V,E) /\ 3 < CARD f
1070         ==> inverse (f_fan_pair_ext (V, add_diag (V,E) (v,w))) (w',w)
1071                 = (inverse (f_fan_pair_ext (V,E)) POWER 2) (v,w)`
1072 [
1073    (repeat_tactic 1 9 ((CONV_TAC let_CONV)));
1074    (BETA_TAC THEN (case THEN ((move ["vw_in"]) THEN (move ["card_f"]))));
1075    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1076    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE face_split_fan_face_explicit))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1077    ((((use_arg_then2 ("split_fan_face_eq_add_diag", [split_fan_face_eq_add_diag]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1078    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
1079    ((fun arg_tac -> arg_tac (Arg_term (`face (hypermap_of_fan (V,E)) (v,w)`))) (term_tac (set_tac "f")));
1080    ((fun arg_tac -> arg_tac (Arg_term (`hypermap_of_fan _`))) (term_tac (set_tac "H2")));
1081    (BETA_TAC THEN (case THEN (move ["_"])) THEN (case THEN ALL_TAC) THEN (case THEN (move ["_"])) THEN (move ["card2_w'w"]) THEN (move ["_"]) THEN (case THEN (move ["fan2"])) THEN (case THEN (move ["dart2"])) THEN (move ["f_surr2"]));
1082    (((use_arg_then2 ("POWER_1", [POWER_1]))(gsym_then (thm_tac (new_rewrite [] [])))));
1083    ((fun arg_tac -> arg_tac (Arg_term (`1 = CARD (face H2 (w',w)) - (CARD f - 2)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
1084    ((((use_arg_then2 ("card2_w'w", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1085    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`2 = CARD f - (CARD f - 2)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1086    ((((use_arg_then2 ("H2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inverse", [f_fan_pair_ext_power_inverse])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))));
1087    (((((use_arg_then2 ("H2_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card2_w'w", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)) THEN (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1088    ((THENL_FIRST) (((use_arg_then2 ("subKn", [subKn]))(thm_tac (new_rewrite [] [])))) ((((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1089    ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [2] []))))) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("f_fan_pair_ext_power_inverse", [f_fan_pair_ext_power_inverse])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))));
1090    ((((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1091    ((((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE f_fan_pair_ext_power_add_diag))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1092    ((((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1093 ];;
1094
1095 (* Lemma azim_dart_eq_dihV *)
1096 let azim_dart_eq_dihV = Sections.section_proof ["v";"w"]
1097 `(v,w) IN dart_of_fan (V,E)
1098         ==> azim_dart (V,E) (v,w) = dihV (vec 0) v w (sigma_fan (vec 0) V E v w)`
1099 [
1100    ((BETA_TAC THEN (move ["vw_in"])) THEN (((use_arg_then2 ("vw_in", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["vw_in1"])));
1101    ((((use_arg_then2 ("fully_surrounded_azim_dart_eq_azim", [fully_surrounded_azim_dart_eq_azim]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1102    ((((use_arg_then2 ("AZIM_DIVH", [AZIM_DIVH]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((fun arg_tac -> (use_arg_then2 ("DART1_NOT_COLLINEAR", [DART1_NOT_COLLINEAR])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("sigma_in_dart1", [sigma_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
1103    ((((use_arg_then2 ("fully_surrounded_azim_dart_eq_azim", [fully_surrounded_azim_dart_eq_azim]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
1104    ((((use_arg_then2 ("f_surr", [])) (disch_tac [])) THEN (clear_assumption "f_surr") THEN BETA_TAC) THEN ((((use_arg_then2 ("fully_surrounded", [fully_surrounded]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1105 ];;
1106
1107 (* Finalization of the section FullySurroundedAddDiag *)
1108 let pack_dist = Sections.finalize_theorem pack_dist;;
1109 let split_fan_face_eq_add_diag = Sections.finalize_theorem split_fan_face_eq_add_diag;;
1110 let faces_add_diag = Sections.finalize_theorem faces_add_diag;;
1111 let f_fan_pair_ext_power_add_diag = Sections.finalize_theorem f_fan_pair_ext_power_add_diag;;
1112 let inverse_f_fan_pair_ext_add_diag = Sections.finalize_theorem inverse_f_fan_pair_ext_add_diag;;
1113 let azim_dart_eq_dihV = Sections.finalize_theorem azim_dart_eq_dihV;;
1114 Sections.end_section "FullySurroundedAddDiag";;
1115
1116 (* Section Fan *)
1117 Sections.begin_section "Fan";;
1118 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
1119 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
1120 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
1121 (Sections.add_section_hyp "f_surr" (`fully_surrounded (V,E)`));;
1122
1123 (* Lemma fan_sol_pos *)
1124 let fan_sol_pos = Sections.section_proof ["v";"w"]
1125 `v,w IN dart_of_fan (V,E)
1126         ==> &0 <= sol (vec 0) (dart_leads_into (vec 0) V E v w)`
1127 [
1128    (BETA_TAC THEN (move ["vw_in"]));
1129    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fully_surrounded_imp_conforming", [fully_surrounded_imp_conforming])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("Conforming.conforming_fan", [Conforming.conforming_fan]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (case THEN (move ["c_angle"])) THEN (move ["_"])));
1130    ((((use_arg_then2 ("c_angle", [])) (disch_tac [])) THEN (clear_assumption "c_angle") THEN BETA_TAC) THEN ((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE Conforming.conforming_solid_angle_fan)))(thm_tac (new_rewrite [] [])))) THEN (move ["c_angle"])));
1131    ((fun arg_tac -> (use_arg_then2 ("fan_hypermaps_iso_explicit2", [fan_hypermaps_iso_explicit2])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["iso"])));
1132    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartH"]) THEN (move ["_"])))));
1133    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart (hypermap_of_fan (V,E))`))) (term_tac (have_gen_tac [](move ["vw_in2"])))) ((((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
1134    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("iso_components", [iso_components])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["_"]) THEN (case THEN (move ["f_eq"])) THEN (move ["_"])))));
1135    ((((use_arg_then2 ("f_eq", [])) (disch_tac [])) THEN (clear_assumption "f_eq") THEN BETA_TAC) THEN ((fun arg_tac -> arg_tac (Arg_term (`face _1 _2`))) (term_tac (set_tac "f1"))) THEN (BETA_TAC THEN (move ["f1_eq"])));
1136    ((((fun arg_tac -> (use_arg_then2 ("c_angle", [])) (fun fst_arg -> (use_arg_then2 ("f1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (ANTS_TAC));
1137    (((((use_arg_then2 ("f1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1138    ((((use_arg_then2 ("f1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart_leads_into_eq1", [dart_leads_into_eq1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
1139    (BETA_TAC THEN (case THEN (move ["r1"])) THEN (case THEN (move ["r2"])) THEN (move ["_"]));
1140    ((((use_arg_then2 ("r2", [])) (disch_tac [])) THEN (clear_assumption "r2") THEN BETA_TAC) THEN ((((use_arg_then2 ("Sphere.eventually_radial", [Sphere.eventually_radial]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["r"])) THEN (case THEN (move ["r_gt0"])) THEN (move ["rad"])));
1141    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Vol1.sol_spec", [Vol1.sol_spec])) (fun fst_arg -> (use_arg_then2 ("r_gt0", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("rad", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INTER_COMM", [INTER_COMM]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("r1", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
1142    ((THENL_LAST) ((((use_arg_then2 ("REAL_LE_MUL", [REAL_LE_MUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_DIV", [REAL_LE_DIV]))(thm_tac (new_rewrite [] []))))) ((arith_tac) THEN (done_tac)));
1143    ((THENL_FIRST) (((use_arg_then2 ("REAL_POW_LE", [REAL_POW_LE]))(thm_tac (new_rewrite [] [])))) ((((use_arg_then2 ("r_gt0", [])) (disch_tac [])) THEN (clear_assumption "r_gt0") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1144    (((((use_arg_then2 ("real_ge", [real_ge]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("Vol1.VOLUME_PROPS_MEASURABLE", [Vol1.VOLUME_PROPS_MEASURABLE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1145 ];;
1146
1147 (* Lemma sol_fan_eq *)
1148 let sol_fan_eq = Sections.section_proof ["v";"w"]
1149 `v,w IN dart_of_fan (V,E)
1150         ==> sol_fan (V,E) (face (hypermap_of_fan (V,E)) (v, w))
1151                 = sol (vec 0) (dart_leads_into (vec 0) V E v w)`
1152 [
1153    (((((use_arg_then2 ("sol_fan", [sol_fan]))(thm_tac (new_rewrite [] [])))) THEN (move ["vw_in"])) THEN ((((use_arg_then2 ("fully_surrounded_sol", [fully_surrounded_sol]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("REAL_ADD_SYM", [REAL_ADD_SYM]))(thm_tac (new_rewrite [] []))))));
1154    (((((use_arg_then2 ("REAL_ABS_REFL", [REAL_ABS_REFL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fully_surrounded_sol", [fully_surrounded_sol]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("fan_sol_pos", [fan_sol_pos]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1155 ];;
1156 (Sections.add_section_hyp "packV" (`packing V`));;
1157 (Sections.add_section_hyp "subV" (`V SUBSET ball_annulus`));;
1158
1159 (* Let dart1_eq *)
1160 Sections.add_section_lemma "dart1_eq" (Sections.section_proof []
1161 `dart1_of_fan (V,E) = dart_of_fan (V,E)`
1162 [
1163    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1164 ]);;
1165
1166 (* Let dartH *)
1167 Sections.add_section_lemma "dartH" (Sections.section_proof []
1168 `dart (hypermap_of_fan (V,E)) = dart_of_fan (V,E)`
1169 [
1170    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1171 ]);;
1172
1173 (* Let fH *)
1174 Sections.add_section_lemma "fH" (Sections.section_proof []
1175 `face_map (hypermap_of_fan (V,E)) = f_fan_pair_ext (V,E)`
1176 [
1177    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1178 ]);;
1179
1180 (* Let nH *)
1181 Sections.add_section_lemma "nH" (Sections.section_proof []
1182 `node_map (hypermap_of_fan (V,E)) = n_fan_pair_ext (V,E)`
1183 [
1184    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1185 ]);;
1186
1187 (* Let norm_v *)
1188 Sections.add_section_lemma "norm_v" (Sections.section_proof ["v"]
1189 `v IN V ==> &2 <= norm v /\ norm v <= #2.52`
1190 [
1191    ((in_tac ["subV"] false (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] []))))) THEN ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("subV", [])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC));
1192    (((((use_arg_then2 ("Fnjlbxs.in_ball_annulus", [Fnjlbxs.in_ball_annulus]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
1193 ]);;
1194
1195 (* Let pack_dist *)
1196 Sections.add_section_lemma "pack_dist" (Sections.section_proof ["x"]
1197 `x IN dart_of_fan (V,E) ==> &2 <= dist x`
1198 [
1199    ((((use_arg_then2 ("x", [])) (disch_tac [])) THEN (clear_assumption "x") THEN case THEN (move ["v"]) THEN (move ["w"])) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["vw_in"])));
1200    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("iffLR", [iffLR])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("Fnjlbxs.packing", [Fnjlbxs.packing])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("packV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("v", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("w", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
1201    (((repeat_tactic 1 9 (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART1_OF_FAN", [PAIR_IN_DART1_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ", [PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1202 ]);;
1203
1204 (* Lemma rho_pos *)
1205 let rho_pos = Sections.section_proof ["v"]
1206 `v IN V ==> &0 <= &1 + const1 * (&1 - ln_fan v)`
1207 [
1208    ((THENL_LAST) ((BETA_TAC THEN (move ["vV"])) THEN ((((use_arg_then2 ("REAL_LE_ADD", [REAL_LE_ADD]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_MUL", [REAL_LE_MUL]))(thm_tac (new_rewrite [] [])))))) ((arith_tac) THEN (done_tac)));
1209    ((((use_arg_then2 ("const1_ge0", [const1_ge0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("lmfun", [lmfun]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))));
1210    ((((fun arg_tac -> (use_arg_then2 ("norm_v", [])) (fun fst_arg -> (use_arg_then2 ("vV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1211 ];;
1212
1213 (* Section V *)
1214 Sections.begin_section "V";;
1215 (Sections.add_section_var (mk_var ("v", (`:real^3`))));;
1216 (Sections.add_section_hyp "vV" (`v IN V`));;
1217
1218 (* Lemma ln_def *)
1219 let ln_def = Sections.section_proof []
1220 `ln_fan v = (#2.52 - yn_fan v) / #0.52`
1221 [
1222    ((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("lmfun", [lmfun]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))));
1223    ((((fun arg_tac -> (use_arg_then2 ("norm_v", [])) (fun fst_arg -> (use_arg_then2 ("vV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1224 ];;
1225
1226 (* Lemma rho_def *)
1227 let rho_def = Sections.section_proof []
1228 `rho_fan v = (&1 + sol0 / pi) - ln_fan v * sol0 / pi`
1229 [
1230    ((((use_arg_then2 ("rho_fan", [rho_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sol0_over_pi_EQ_const1", [sol0_over_pi_EQ_const1]))(thm_tac (new_rewrite [] [])))));
1231    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&0 <= &1 + const1 * (&1 - ln_fan v)`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
1232    ((((use_arg_then2 ("rho_pos", [rho_pos]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1233 ];;
1234
1235 (* Lemma ln_lo *)
1236 let ln_lo = Sections.section_proof []
1237 `&0 <= ln_fan v`
1238 [
1239    (((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Fnjlbxs.lmfun_ge0", [Fnjlbxs.lmfun_ge0]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1240 ];;
1241
1242 (* Lemma ln_hi *)
1243 let ln_hi = Sections.section_proof []
1244 `ln_fan v <= &1`
1245 [
1246    (((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("lmfun", [lmfun]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("norm_v", [])) (fun fst_arg -> (use_arg_then2 ("vV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1247 ];;
1248
1249 (* Lemma yn_lo *)
1250 let yn_lo = Sections.section_proof []
1251 `&2 <= yn_fan v`
1252 [
1253    (((((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1254 ];;
1255
1256 (* Lemma yn_hi *)
1257 let yn_hi = Sections.section_proof []
1258 `yn_fan v <= #2.52`
1259 [
1260    (((((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1261 ];;
1262
1263 (* Lemma rho_lo *)
1264 let rho_lo = Sections.section_proof []
1265 `&1 <= rho_fan v`
1266 [
1267    (((use_arg_then2 ("rho_fan", [rho_fan]))(thm_tac (new_rewrite [] []))));
1268    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&0 <= const1 * (&1 - ln_fan v)`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
1269    (((((use_arg_then2 ("REAL_LE_MUL", [REAL_LE_MUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("const1_ge0", [const1_ge0]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_hi", [ln_hi])) (disch_tac [])) THEN (clear_assumption "ln_hi") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1270 ];;
1271
1272 (* Lemma rho_hi *)
1273 let rho_hi = Sections.section_proof []
1274 `rho_fan v <= &1 + sol0 / pi`
1275 [
1276    (((use_arg_then2 ("rho_fan", [rho_fan]))(thm_tac (new_rewrite [] []))));
1277    ((fun arg_tac -> arg_tac (Arg_term (`&1 + _`))) (term_tac (set_tac "x")));
1278    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`abs x = x`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) (((((use_arg_then2 ("REAL_ABS_REFL", [REAL_ABS_REFL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("x_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_pos", [rho_pos]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
1279    ((((use_arg_then2 ("x_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_LADD", [REAL_LE_LADD]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sol0_over_pi_EQ_const1", [sol0_over_pi_EQ_const1]))(thm_tac (new_rewrite [] [])))));
1280    ((((fun arg_tac -> (use_arg_then2 ("REAL_MUL_RID", [REAL_MUL_RID])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`const1`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [2] []))))) THEN (((use_arg_then2 ("REAL_LE_MUL2", [REAL_LE_MUL2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("const1_ge0", [const1_ge0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] [])))));
1281    (((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("lmfun", [lmfun]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("norm_v", [])) (fun fst_arg -> (use_arg_then2 ("vV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1282 ];;
1283
1284 (* Finalization of the section V *)
1285 let ln_def = Sections.finalize_theorem ln_def;;
1286 let rho_def = Sections.finalize_theorem rho_def;;
1287 let ln_lo = Sections.finalize_theorem ln_lo;;
1288 let ln_hi = Sections.finalize_theorem ln_hi;;
1289 let yn_lo = Sections.finalize_theorem yn_lo;;
1290 let yn_hi = Sections.finalize_theorem yn_hi;;
1291 let rho_lo = Sections.finalize_theorem rho_lo;;
1292 let rho_hi = Sections.finalize_theorem rho_hi;;
1293 Sections.end_section "V";;
1294
1295 (* Section Dart *)
1296 Sections.begin_section "Dart";;
1297 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
1298 (Sections.add_section_hyp "d_in" (`d IN dart_of_fan (V,E)`));;
1299
1300 (* Lemma edge_sym *)
1301 let edge_sym = Sections.section_proof []
1302 `ye_fan d = ye_fan (e_fan_pair_ext (V,E) d)`
1303 [
1304    (((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]));
1305    (((((use_arg_then2 ("e_fan_pair_ext", [e_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("e_fan_pair", [e_fan_pair]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("DIST_SYM", [DIST_SYM]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1306 ];;
1307
1308 (* Lemma y1_def *)
1309 let y1_def = Sections.section_proof []
1310 `y1_fan d = yn_fan (FST d)`
1311 [
1312    (((((use_arg_then2 ("y1_fan", [y1_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1313 ];;
1314
1315 (* Lemma y2_def *)
1316 let y2_def = Sections.section_proof []
1317 `y2_fan d = yn_fan (FST (f_fan_pair_ext (V,E) d))`
1318 [
1319    (((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["d_in"]));
1320    (((((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y2_fan", [y2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1321 ];;
1322
1323 (* Lemma y3_def *)
1324 let y3_def = Sections.section_proof []
1325 `y3_fan (V,E) d = yn_fan (FST (inverse (f_fan_pair_ext (V,E)) d))`
1326 [
1327    (((((use_arg_then2 ("y3_fan", [y3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1328 ];;
1329
1330 (* Lemma y4_def *)
1331 let y4_def = Sections.section_proof []
1332 `y4_fan (V,E) d = ye_fan (f_fan_pair_ext (V,E) d)`
1333 [
1334    (((((use_arg_then2 ("y4_fan", [y4_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1335 ];;
1336
1337 (* Lemma y5_def *)
1338 let y5_def = Sections.section_proof []
1339 `y5_fan (V,E) d = ye_fan (inverse (f_fan_pair_ext (V,E)) d)`
1340 [
1341    (((((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1342 ];;
1343
1344 (* Lemma y6_def *)
1345 let y6_def = Sections.section_proof []
1346 `y6_fan d = ye_fan d`
1347 [
1348    (((((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1349 ];;
1350
1351 (* Lemma y8_def *)
1352 let y8_def = Sections.section_proof []
1353 `y8_fan (V,E) d = y5_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d)`
1354 [
1355    ((((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1356 ];;
1357
1358 (* Lemma y9_def *)
1359 let y9_def = Sections.section_proof []
1360 `y9_fan (V,E) d = ye_fan (f_fan_pair_ext (V,E) d)`
1361 [
1362    (((((use_arg_then2 ("y9_fan", [y9_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1363 ];;
1364
1365 (* Lemma azim_lo *)
1366 let azim_lo = Sections.section_proof []
1367 `&0 <= azim_dart (V,E) d`
1368 [
1369    ((((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL AZIM_DART_POS)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1370 ];;
1371
1372 (* Lemma azim_hi *)
1373 let azim_hi = Sections.section_proof []
1374 `azim_dart (V,E) d <= pi`
1375 [
1376    ((((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_surr", [])) (disch_tac [])) THEN (clear_assumption "f_surr") THEN BETA_TAC) THEN ((((use_arg_then2 ("fully_surrounded", [fully_surrounded]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1377 ];;
1378
1379 (* Lemma rhazim_lo *)
1380 let rhazim_lo = Sections.section_proof []
1381 `&0 <= rhazim_fan (V,E) d`
1382 [
1383    (((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_MUL", [REAL_LE_MUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ABS_POS", [REAL_ABS_POS]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1384 ];;
1385
1386 (* Lemma rhazim_hi *)
1387 let rhazim_hi = Sections.section_proof []
1388 `rhazim_fan (V,E) d <= pi + sol0`
1389 [
1390    ((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("REAL_MUL_RID", [REAL_MUL_RID])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`pi + sol0`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))));
1391    ((((fun arg_tac -> (use_arg_then2 ("REAL_MUL_LINV", [REAL_MUL_LINV])) (fun fst_arg -> (use_arg_then2 ("PI_NZ", [PI_NZ])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [3] []))))) THEN (((use_arg_then2 ("REAL_MUL_ASSOC", [REAL_MUL_ASSOC]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_MUL2", [REAL_LE_MUL2]))(thm_tac (new_rewrite [] [])))));
1392    ((((use_arg_then2 ("azim_hi", [azim_hi]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ABS_POS", [REAL_ABS_POS]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1393    ((((use_arg_then2 ("REAL_ADD_RDISTRIB", [REAL_ADD_RDISTRIB]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("REAL_MUL_RINV", [REAL_MUL_RINV])) (fun fst_arg -> (use_arg_then2 ("PI_NZ", [PI_NZ])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("real_div", [real_div]))(gsym_then (thm_tac (new_rewrite [] []))))));
1394    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`lmfun (h_dart d) = ln_fan (FST d)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) (((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
1395    ((fun arg_tac -> arg_tac (Arg_term (`abs _`))) (term_tac (set_tac "x")));
1396    ((fun arg_tac -> arg_tac (Arg_term (`FST d IN V`))) (term_tac (have_gen_tac [](move ["fst_in"]))));
1397    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["d_in"]) THEN (simp_tac)) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1398    ((fun arg_tac -> arg_tac (Arg_term (`x = &1 + const1 * (&1 - ln_fan (FST d))`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
1399    (((((use_arg_then2 ("x_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_ABS_REFL", [REAL_ABS_REFL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rho_pos", [rho_pos]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1400    ((((use_arg_then2 ("REAL_LE_LADD", [REAL_LE_LADD]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sol0_over_pi_EQ_const1", [sol0_over_pi_EQ_const1]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("REAL_MUL_RID", [REAL_MUL_RID])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`const1`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [2] []))))));
1401    ((((use_arg_then2 ("REAL_LE_MUL2", [REAL_LE_MUL2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("const1_ge0", [const1_ge0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1402    ((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("lmfun", [lmfun]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))));
1403    ((((fun arg_tac -> (use_arg_then2 ("norm_v", [])) (fun fst_arg -> (use_arg_then2 ("fst_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1404 ];;
1405
1406 (* Lemma ye_lo *)
1407 let ye_lo = Sections.section_proof []
1408 `&2 <= ye_fan d`
1409 [
1410    (((((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pack_dist", [pack_dist]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1411 ];;
1412
1413 (* Let d_inV *)
1414 Sections.add_section_lemma "d_inV" (Sections.section_proof []
1415 `FST d IN V /\ SND d IN V`
1416 [
1417    ((((fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)) THEN (((use_arg_then2 ("pair_expand", [pair_expand]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (done_tac));
1418 ]);;
1419
1420 (* Lemma y1_lo *)
1421 let y1_lo = Sections.section_proof []
1422 `&2 <= y1_fan d`
1423 [
1424    (((((use_arg_then2 ("y1_fan", [y1_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1425 ];;
1426
1427 (* Lemma y2_lo *)
1428 let y2_lo = Sections.section_proof []
1429 `&2 <= y2_fan d`
1430 [
1431    (((((use_arg_then2 ("y2_fan", [y2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1432 ];;
1433
1434 (* Lemma y1_hi *)
1435 let y1_hi = Sections.section_proof []
1436 `y1_fan d <= #2.52`
1437 [
1438    (((((use_arg_then2 ("y1_fan", [y1_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1439 ];;
1440
1441 (* Lemma y2_hi *)
1442 let y2_hi = Sections.section_proof []
1443 `y2_fan d <= #2.52`
1444 [
1445    (((((use_arg_then2 ("y2_fan", [y2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1446 ];;
1447
1448 (* Lemma y6_lo *)
1449 let y6_lo = Sections.section_proof []
1450 `&2 <= y6_fan d`
1451 [
1452    (((((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pack_dist", [pack_dist]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1453 ];;
1454
1455 (* Finalization of the section Dart *)
1456 let edge_sym = Sections.finalize_theorem edge_sym;;
1457 let y1_def = Sections.finalize_theorem y1_def;;
1458 let y2_def = Sections.finalize_theorem y2_def;;
1459 let y3_def = Sections.finalize_theorem y3_def;;
1460 let y4_def = Sections.finalize_theorem y4_def;;
1461 let y5_def = Sections.finalize_theorem y5_def;;
1462 let y6_def = Sections.finalize_theorem y6_def;;
1463 let y8_def = Sections.finalize_theorem y8_def;;
1464 let y9_def = Sections.finalize_theorem y9_def;;
1465 let azim_lo = Sections.finalize_theorem azim_lo;;
1466 let azim_hi = Sections.finalize_theorem azim_hi;;
1467 let rhazim_lo = Sections.finalize_theorem rhazim_lo;;
1468 let rhazim_hi = Sections.finalize_theorem rhazim_hi;;
1469 let ye_lo = Sections.finalize_theorem ye_lo;;
1470 let y1_lo = Sections.finalize_theorem y1_lo;;
1471 let y2_lo = Sections.finalize_theorem y2_lo;;
1472 let y1_hi = Sections.finalize_theorem y1_hi;;
1473 let y2_hi = Sections.finalize_theorem y2_hi;;
1474 let y6_lo = Sections.finalize_theorem y6_lo;;
1475 Sections.end_section "Dart";;
1476
1477 (* Section Dart3 *)
1478 Sections.begin_section "Dart3";;
1479 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
1480 (Sections.add_section_hyp "d_in" (`d IN darts_k 3 (hypermap_of_fan (V,E))`));;
1481
1482 (* Let card_f *)
1483 Sections.add_section_lemma "card_f" (Sections.section_proof []
1484 `CARD (face (hypermap_of_fan (V,E)) d) = 3`
1485 [
1486    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1487 ]);;
1488
1489 (* Let d_in_dart *)
1490 Sections.add_section_lemma "d_in_dart" (Sections.section_proof []
1491 `d IN dart_of_fan (V,E)`
1492 [
1493    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1494 ]);;
1495
1496 (* Lemma y4'_eq_y4 *)
1497 let y4'_eq_y4 = Sections.section_proof []
1498 `y4'_fan (V,E) d = y4_fan (V,E) d`
1499 [
1500    (((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["card_f"]) THEN (move ["vw_in"]));
1501    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart1_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["vw_in1"])))) ((((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
1502    ((((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y4_fan", [y4_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1503    ((((fun arg_tac -> (use_arg_then2 ("f_fan_pair3", [f_fan_pair3])) (fun fst_arg -> (use_arg_then2 ("card_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1504    (((((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1505 ];;
1506
1507 (* Finalization of the section Dart3 *)
1508 let y4'_eq_y4 = Sections.finalize_theorem y4'_eq_y4;;
1509 Sections.end_section "Dart3";;
1510
1511 (* Let fd_in *)
1512 Sections.add_section_lemma "fd_in" (Sections.section_proof ["d"]
1513 `d IN dart_of_fan (V,E) ==> f_fan_pair_ext (V,E) d IN dart_of_fan (V,E)`
1514 [
1515    ((((((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (move ["d_in"])) THEN (((use_arg_then2 ("Hypermap.lemma_dart_invariant", [Hypermap.lemma_dart_invariant]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1516 ]);;
1517
1518 (* Let ifd_in *)
1519 Sections.add_section_lemma "ifd_in" (Sections.section_proof ["d"]
1520 `d IN dart_of_fan (V,E) ==> inverse (f_fan_pair_ext (V,E)) d IN dart_of_fan (V,E)`
1521 [
1522    ((((((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (move ["d_in"])) THEN (((use_arg_then2 ("Hypermap.lemma_dart_inveriant_under_inverse_maps", [Hypermap.lemma_dart_inveriant_under_inverse_maps]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1523 ]);;
1524
1525 (* Let in_dart_inV *)
1526 Sections.add_section_lemma "in_dart_inV" (Sections.section_proof ["d"]
1527 `d IN dart_of_fan (V,E) ==> FST d IN V /\ SND d IN V`
1528 [
1529    ((((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (DISCH_THEN (fun snd_th -> (fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (done_tac));
1530 ]);;
1531
1532 (* Section StdDart *)
1533 Sections.begin_section "StdDart";;
1534 (Sections.add_section_hyp "std" (`E = ESTD V`));;
1535
1536 (* Let in_std *)
1537 Sections.add_section_lemma "in_std" (Sections.section_proof ["d"]
1538 `d IN dart_of_fan (V,E) ==> dist d <= #2.52 /\ dist d <= &3`
1539 [
1540    ((((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"])) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("std", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_ESTD", [IN_ESTD]))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
1541 ]);;
1542
1543 (* Section Inner *)
1544 Sections.begin_section "Inner";;
1545 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
1546 (Sections.add_section_hyp "d_in" (`d IN dart_of_fan (V,E)`));;
1547
1548 (* Lemma ye_hi_std *)
1549 let ye_hi_std = Sections.section_proof []
1550 `ye_fan d <= &3`
1551 [
1552    (((((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1553 ];;
1554
1555 (* Lemma y4_hi_std *)
1556 let y4_hi_std = Sections.section_proof []
1557 `y4_fan (V,E) d <= &3`
1558 [
1559    (((((use_arg_then2 ("y4_fan", [y4_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1560 ];;
1561
1562 (* Lemma y5_hi_std *)
1563 let y5_hi_std = Sections.section_proof []
1564 `y5_fan (V,E) d <= &3`
1565 [
1566    (((((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1567 ];;
1568
1569 (* Lemma y6_hi_std *)
1570 let y6_hi_std = Sections.section_proof []
1571 `y6_fan d <= &3`
1572 [
1573    (((((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1574 ];;
1575
1576 (* Lemma y8_hi_std *)
1577 let y8_hi_std = Sections.section_proof []
1578 `y8_fan (V,E) d <= #2.52`
1579 [
1580    (((((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1581 ];;
1582
1583 (* Lemma y9_hi_std *)
1584 let y9_hi_std = Sections.section_proof []
1585 `y9_fan (V,E) d <= #2.52`
1586 [
1587    (((((use_arg_then2 ("y9_fan", [y9_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1588 ];;
1589
1590 (* Lemma ye_hi_std2 *)
1591 let ye_hi_std2 = Sections.section_proof []
1592 `ye_fan d <= &3`
1593 [
1594    (((((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1595 ];;
1596
1597 (* Lemma y4_hi_std2 *)
1598 let y4_hi_std2 = Sections.section_proof []
1599 `y4_fan (V,E) d <= #2.52`
1600 [
1601    (((((use_arg_then2 ("y4_fan", [y4_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1602 ];;
1603
1604 (* Lemma y5_hi_std2 *)
1605 let y5_hi_std2 = Sections.section_proof []
1606 `y5_fan (V,E) d <= #2.52`
1607 [
1608    (((((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1609 ];;
1610
1611 (* Lemma y6_hi_std2 *)
1612 let y6_hi_std2 = Sections.section_proof []
1613 `y6_fan d <= #2.52`
1614 [
1615    (((((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1616 ];;
1617
1618 (* Lemma yy10_std *)
1619 let yy10_std = Sections.section_proof []
1620 `ye_fan d <= #2.52`
1621 [
1622    (((((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_std", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1623 ];;
1624
1625 (* Finalization of the section Inner *)
1626 let ye_hi_std = Sections.finalize_theorem ye_hi_std;;
1627 let y4_hi_std = Sections.finalize_theorem y4_hi_std;;
1628 let y5_hi_std = Sections.finalize_theorem y5_hi_std;;
1629 let y6_hi_std = Sections.finalize_theorem y6_hi_std;;
1630 let y8_hi_std = Sections.finalize_theorem y8_hi_std;;
1631 let y9_hi_std = Sections.finalize_theorem y9_hi_std;;
1632 let ye_hi_std2 = Sections.finalize_theorem ye_hi_std2;;
1633 let y4_hi_std2 = Sections.finalize_theorem y4_hi_std2;;
1634 let y5_hi_std2 = Sections.finalize_theorem y5_hi_std2;;
1635 let y6_hi_std2 = Sections.finalize_theorem y6_hi_std2;;
1636 let yy10_std = Sections.finalize_theorem yy10_std;;
1637 Sections.end_section "Inner";;
1638
1639 (* Finalization of the section StdDart *)
1640 let ye_hi_std = Sections.finalize_theorem ye_hi_std;;
1641 let y4_hi_std = Sections.finalize_theorem y4_hi_std;;
1642 let y5_hi_std = Sections.finalize_theorem y5_hi_std;;
1643 let y6_hi_std = Sections.finalize_theorem y6_hi_std;;
1644 let y8_hi_std = Sections.finalize_theorem y8_hi_std;;
1645 let y9_hi_std = Sections.finalize_theorem y9_hi_std;;
1646 let ye_hi_std2 = Sections.finalize_theorem ye_hi_std2;;
1647 let y4_hi_std2 = Sections.finalize_theorem y4_hi_std2;;
1648 let y5_hi_std2 = Sections.finalize_theorem y5_hi_std2;;
1649 let y6_hi_std2 = Sections.finalize_theorem y6_hi_std2;;
1650 let yy10_std = Sections.finalize_theorem yy10_std;;
1651 Sections.end_section "StdDart";;
1652
1653 (* Section DartMore *)
1654 Sections.begin_section "DartMore";;
1655 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
1656 (Sections.add_section_hyp "d_in" (`d IN dart_of_fan (V,E)`));;
1657
1658 (* Lemma azim2_lo *)
1659 let azim2_lo = Sections.section_proof []
1660 `&0 <= azim2_fan (V,E) d`
1661 [
1662    (((((use_arg_then2 ("azim2_fan", [azim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1663 ];;
1664
1665 (* Lemma azim2_hi *)
1666 let azim2_hi = Sections.section_proof []
1667 `azim2_fan (V,E) d <= pi`
1668 [
1669    (((((use_arg_then2 ("azim2_fan", [azim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_hi", [azim_hi]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1670 ];;
1671
1672 (* Lemma azim3_lo *)
1673 let azim3_lo = Sections.section_proof []
1674 `&0 <= azim3_fan (V,E) d`
1675 [
1676    (((((use_arg_then2 ("azim3_fan", [azim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1677 ];;
1678
1679 (* Lemma azim3_hi *)
1680 let azim3_hi = Sections.section_proof []
1681 `azim3_fan (V,E) d <= pi`
1682 [
1683    (((((use_arg_then2 ("azim3_fan", [azim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_hi", [azim_hi]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1684 ];;
1685
1686 (* Lemma rhazim2_lo *)
1687 let rhazim2_lo = Sections.section_proof []
1688 `&0 <= rhazim2_fan (V,E) d`
1689 [
1690    (((((use_arg_then2 ("rhazim2_fan", [rhazim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rhazim_lo", [rhazim_lo]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1691 ];;
1692
1693 (* Lemma rhazim2_hi *)
1694 let rhazim2_hi = Sections.section_proof []
1695 `rhazim2_fan (V,E) d <= pi + sol0`
1696 [
1697    (((((use_arg_then2 ("rhazim2_fan", [rhazim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rhazim_hi", [rhazim_hi]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1698 ];;
1699
1700 (* Lemma rhazim3_lo *)
1701 let rhazim3_lo = Sections.section_proof []
1702 `&0 <= rhazim3_fan (V,E) d`
1703 [
1704    (((((use_arg_then2 ("rhazim3_fan", [rhazim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rhazim_lo", [rhazim_lo]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1705 ];;
1706
1707 (* Lemma rhazim3_hi *)
1708 let rhazim3_hi = Sections.section_proof []
1709 `rhazim3_fan (V,E) d <= pi + sol0`
1710 [
1711    (((((use_arg_then2 ("rhazim3_fan", [rhazim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rhazim_hi", [rhazim_hi]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1712 ];;
1713
1714 (* Lemma y3_lo *)
1715 let y3_lo = Sections.section_proof []
1716 `&2 <= y3_fan (V,E) d`
1717 [
1718    (((((use_arg_then2 ("y3_fan", [y3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1719 ];;
1720
1721 (* Lemma y3_hi *)
1722 let y3_hi = Sections.section_proof []
1723 `y3_fan (V,E) d <= #2.52`
1724 [
1725    (((((use_arg_then2 ("y3_fan", [y3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1726 ];;
1727
1728 (* Lemma y4_lo *)
1729 let y4_lo = Sections.section_proof []
1730 `&2 <= y4_fan (V,E) d`
1731 [
1732    (((((use_arg_then2 ("y4_fan", [y4_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pack_dist", [pack_dist]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1733 ];;
1734
1735 (* Lemma y5_lo *)
1736 let y5_lo = Sections.section_proof []
1737 `&2 <= y5_fan (V,E) d`
1738 [
1739    (((((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pack_dist", [pack_dist]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1740 ];;
1741
1742 (* Lemma y7_lo *)
1743 let y7_lo = Sections.section_proof []
1744 `&2 <= y7_fan (V,E) d`
1745 [
1746    ((((use_arg_then2 ("y7_fan", [y7_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("TWO", [TWO]))(thm_tac (new_rewrite [2] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] [])))));
1747    ((((fun arg_tac -> (use_arg_then2 ("in_dart_inV", [])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("ifd_in", [])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("ifd_in", [])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1748 ];;
1749
1750 (* Lemma y7_hi *)
1751 let y7_hi = Sections.section_proof []
1752 `y7_fan (V,E) d <= #2.52`
1753 [
1754    ((((use_arg_then2 ("y7_fan", [y7_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("TWO", [TWO]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("norm_v", []))(thm_tac (new_rewrite [] [])))));
1755    ((((fun arg_tac -> (use_arg_then2 ("in_dart_inV", [])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("ifd_in", [])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("ifd_in", [])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1756 ];;
1757
1758 (* Lemma y8_lo *)
1759 let y8_lo = Sections.section_proof []
1760 `&2 <= y8_fan (V,E) d`
1761 [
1762    (((((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pack_dist", [pack_dist]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ifd_in", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1763 ];;
1764
1765 (* Lemma y9_lo *)
1766 let y9_lo = Sections.section_proof []
1767 `&2 <= y9_fan (V,E) d`
1768 [
1769    (((((use_arg_then2 ("y9_fan", [y9_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pack_dist", [pack_dist]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1770 ];;
1771
1772 (* Lemma y4'_lo *)
1773 let y4'_lo = Sections.section_proof []
1774 `&2 <= y4'_fan (V,E) d`
1775 [
1776    (((use_arg_then2 ("packV", [])) (disch_tac [])) THEN (clear_assumption "packV") THEN BETA_TAC);
1777    (((((use_arg_then2 ("Ckqowsa.packing", [Ckqowsa.packing]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
1778    ((((fun arg_tac -> (use_arg_then2 ("in_dart_inV", [])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("in_dart_inV", [])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("ifd_in", [])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1779    (((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]));
1780    ((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1781    ((((use_arg_then2 ("sigma_fan_not_fixed", [sigma_fan_not_fixed]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (done_tac));
1782 ];;
1783
1784 (* Lemma azim2c *)
1785 let azim2c = Sections.section_proof []
1786 `azim2_fan (V,E) d = azim_dart (V,E) (f_fan_pair_ext (V,E) d)`
1787 [
1788    ((((use_arg_then2 ("azim2_fan", [azim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1789 ];;
1790
1791 (* Lemma azim3c *)
1792 let azim3c = Sections.section_proof []
1793 `azim3_fan (V,E) d = azim_dart (V,E) (inverse (f_fan_pair_ext (V,E)) d)`
1794 [
1795    ((((use_arg_then2 ("azim3_fan", [azim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1796 ];;
1797
1798 (* Lemma rhazim2c *)
1799 let rhazim2c = Sections.section_proof []
1800 `rhazim2_fan (V,E) d = rhazim_fan (V,E) (f_fan_pair_ext (V,E) d)`
1801 [
1802    ((((use_arg_then2 ("rhazim2_fan", [rhazim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1803 ];;
1804
1805 (* Lemma rhazim3c *)
1806 let rhazim3c = Sections.section_proof []
1807 `rhazim3_fan (V,E) d = rhazim_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d)`
1808 [
1809    ((((use_arg_then2 ("rhazim3_fan", [rhazim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1810 ];;
1811
1812 (* Lemma RHA *)
1813 let RHA = Sections.section_proof []
1814 `rhazim_fan (V,E) d >= azim_dart (V,E) d`
1815 [
1816    ((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_fan", [rho_fan]))(gsym_then (thm_tac (new_rewrite [] []))))));
1817    ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("REAL_MUL_LID", [REAL_MUL_LID])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`azim_dart _ d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("REAL_LE_RMUL", [REAL_LE_RMUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))));
1818    (((((use_arg_then2 ("rho_lo", [rho_lo]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1819 ];;
1820
1821 (* Lemma RHB *)
1822 let RHB = Sections.section_proof []
1823 `rhazim_fan (V,E) d <= azim_dart (V,E) d * (&1 + sol0 / pi)`
1824 [
1825    ((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_fan", [rho_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_MUL_SYM", [REAL_MUL_SYM]))(thm_tac (new_rewrite [] [])))));
1826    (((((use_arg_then2 ("REAL_LE_LMUL", [REAL_LE_LMUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("rho_hi", [rho_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1827 ];;
1828
1829 (* Lemma RHBLO *)
1830 let RHBLO = Sections.section_proof []
1831 `yn_fan (FST d) <= #2.18 ==> rhazim_fan (V,E) d <= azim_dart (V,E) d * rho218`
1832 [
1833    ((BETA_TAC THEN (move ["ineq"])) THEN ((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_fan", [rho_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_MUL_SYM", [REAL_MUL_SYM]))(thm_tac (new_rewrite [] []))))));
1834    ((((use_arg_then2 ("REAL_LE_LMUL", [REAL_LE_LMUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rho_def", [rho_def]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
1835    ((((use_arg_then2 ("ln_def", [ln_def]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("rho218", [rho218]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Nonlinear_lemma.rho_alt", [Nonlinear_lemma.rho_alt]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sol0_over_pi_EQ_const1", [sol0_over_pi_EQ_const1]))(thm_tac (new_rewrite [] [])))));
1836    ((((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ADD_ASSOC", [REAL_ADD_ASSOC]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_LADD", [REAL_LE_LADD]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("real_sub", [real_sub]))(gsym_then (thm_tac (new_rewrite [] []))))));
1837    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`const1 - x / #0.52 * const1 <= const1 * y / #0.52 
1838                 <=> const1 * #0.52 <= const1 * (x + y)`))) (term_tac (have_gen_tac ["x"; "y"](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
1839    (((((use_arg_then2 ("REAL_LE_LMUL", [REAL_LE_LMUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("const1_ge0", [const1_ge0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ineq", [ineq])) (disch_tac [])) THEN (clear_assumption "ineq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1840 ];;
1841
1842 (* Lemma RHBHI *)
1843 let RHBHI = Sections.section_proof []
1844 `#2.18 <= yn_fan (FST d) ==> rhazim_fan (V,E) d >= azim_dart (V,E) d * rho218`
1845 [
1846    ((BETA_TAC THEN (move ["ineq"])) THEN ((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_fan", [rho_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_MUL_SYM", [REAL_MUL_SYM]))(thm_tac (new_rewrite [] []))))));
1847    ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_LMUL", [REAL_LE_LMUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_lo", [azim_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rho_def", [rho_def]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
1848    ((((use_arg_then2 ("ln_def", [ln_def]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("in_dart_inV", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("rho218", [rho218]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Nonlinear_lemma.rho_alt", [Nonlinear_lemma.rho_alt]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sol0_over_pi_EQ_const1", [sol0_over_pi_EQ_const1]))(thm_tac (new_rewrite [] [])))));
1849    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_ADD_ASSOC", [REAL_ADD_ASSOC]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_LADD", [REAL_LE_LADD]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(gsym_then (thm_tac (new_rewrite [] [])))))));
1850    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`const1 * y / #0.52 <= const1 - x / #0.52 * const1
1851                 <=> const1 * #0.52 >= const1 * (x + y)`))) (term_tac (have_gen_tac ["x"; "y"](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
1852    (((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_LMUL", [REAL_LE_LMUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("const1_ge0", [const1_ge0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ineq", [ineq])) (disch_tac [])) THEN (clear_assumption "ineq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1853 ];;
1854
1855 (* Finalization of the section DartMore *)
1856 let azim2_lo = Sections.finalize_theorem azim2_lo;;
1857 let azim2_hi = Sections.finalize_theorem azim2_hi;;
1858 let azim3_lo = Sections.finalize_theorem azim3_lo;;
1859 let azim3_hi = Sections.finalize_theorem azim3_hi;;
1860 let rhazim2_lo = Sections.finalize_theorem rhazim2_lo;;
1861 let rhazim2_hi = Sections.finalize_theorem rhazim2_hi;;
1862 let rhazim3_lo = Sections.finalize_theorem rhazim3_lo;;
1863 let rhazim3_hi = Sections.finalize_theorem rhazim3_hi;;
1864 let y3_lo = Sections.finalize_theorem y3_lo;;
1865 let y3_hi = Sections.finalize_theorem y3_hi;;
1866 let y4_lo = Sections.finalize_theorem y4_lo;;
1867 let y5_lo = Sections.finalize_theorem y5_lo;;
1868 let y7_lo = Sections.finalize_theorem y7_lo;;
1869 let y7_hi = Sections.finalize_theorem y7_hi;;
1870 let y8_lo = Sections.finalize_theorem y8_lo;;
1871 let y9_lo = Sections.finalize_theorem y9_lo;;
1872 let y4'_lo = Sections.finalize_theorem y4'_lo;;
1873 let azim2c = Sections.finalize_theorem azim2c;;
1874 let azim3c = Sections.finalize_theorem azim3c;;
1875 let rhazim2c = Sections.finalize_theorem rhazim2c;;
1876 let rhazim3c = Sections.finalize_theorem rhazim3c;;
1877 let RHA = Sections.finalize_theorem RHA;;
1878 let RHB = Sections.finalize_theorem RHB;;
1879 let RHBLO = Sections.finalize_theorem RHBLO;;
1880 let RHBHI = Sections.finalize_theorem RHBHI;;
1881 Sections.end_section "DartMore";;
1882
1883 (* Section Node *)
1884 Sections.begin_section "Node";;
1885 (Sections.add_section_var (mk_var ("n", (`:real^3#real^3->bool`))));;
1886 (Sections.add_section_hyp "n_in" (`n IN node_set (hypermap_of_fan (V,E))`));;
1887
1888 (* Let n_repr *)
1889 Sections.add_section_lemma "n_repr" (Sections.section_proof []
1890 `?v w. v,w IN dart_of_fan (V,E) /\ n = node (hypermap_of_fan (V,E)) (v,w)`
1891 [
1892    (((use_arg_then2 ("n_in", [])) (disch_tac [])) THEN (clear_assumption "n_in") THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("lemma_node_representation", [lemma_node_representation])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (case THEN (case THEN ((move ["v"]) THEN (move ["w"])))) THEN (move ["h"]));
1893    ((((use_arg_then2 ("v", [])) (term_tac exists_tac)) THEN ((use_arg_then2 ("w", [])) (term_tac exists_tac))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (done_tac));
1894 ]);;
1895
1896 (* Lemma azim_sum *)
1897 let azim_sum = Sections.section_proof []
1898 `sum n (azim_dart (V,E)) = &2 * pi`
1899 [
1900    (((use_arg_then2 ("n_repr", [])) (disch_tac [])) THEN (clear_assumption "n_repr") THEN BETA_TAC THEN (case THEN (move ["v"])) THEN (case THEN (move ["w"])) THEN (case THEN (move ["vw_in"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))));
1901    ((((use_arg_then2 ("SUM_AZIM_DART", [SUM_AZIM_DART]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1902 ];;
1903
1904 (* Lemma rhazim_sum *)
1905 let rhazim_sum = Sections.section_proof []
1906 `sum n (rhazim_fan (V,E)) = &2 * pi * rho_fan (FST (CHOICE n))`
1907 [
1908    ((((use_arg_then2 ("REAL_MUL_ASSOC", [REAL_MUL_ASSOC]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_sum", [azim_sum]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("SUM_RMUL", [SUM_RMUL]))(gsym_then (thm_tac (new_rewrite [] []))))));
1909    ((((use_arg_then2 ("SUM_EQ", [SUM_EQ])) (thm_tac apply_tac)) THEN (move ["d"]) THEN (move ["d_in"]) THEN (simp_tac)) THEN ((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_MUL_SYM", [REAL_MUL_SYM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_EQ_MUL_LCANCEL", [REAL_EQ_MUL_LCANCEL]))(thm_tac (new_rewrite [] []))))) THEN (DISJ2_TAC));
1910    (((((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_fan", [rho_fan]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (congr_tac (`rho_fan _`)));
1911    (((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("n_repr", [])) (disch_tac [])) THEN (clear_assumption "n_repr") THEN BETA_TAC THEN (case THEN (move ["v"])) THEN (case THEN (move ["w"])) THEN (case THEN (move ["vw_in"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (move ["d_in"]));
1912    ((((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("fst_node_hypermap_of_fan", [fst_node_hypermap_of_fan])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)));
1913    ((((fun arg_tac -> (use_arg_then2 ("lemma_node_identity", [lemma_node_identity])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("CHOICE_DEF", [CHOICE_DEF]))(thm_tac (new_rewrite [] [])))));
1914    ((((use_arg_then2 ("MEMBER_NOT_EMPTY", [MEMBER_NOT_EMPTY]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((use_arg_then2 ("d", [])) (term_tac exists_tac)) THEN (((use_arg_then2 ("node_refl", [node_refl]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1915 ];;
1916
1917 (* Finalization of the section Node *)
1918 let azim_sum = Sections.finalize_theorem azim_sum;;
1919 let rhazim_sum = Sections.finalize_theorem rhazim_sum;;
1920 Sections.end_section "Node";;
1921
1922 (* Section Face *)
1923 Sections.begin_section "Face";;
1924 (Sections.add_section_var (mk_var ("f", (`:real^3#real^3->bool`))));;
1925 (Sections.add_section_hyp "f_in" (`f IN face_set (hypermap_of_fan (V,E))`));;
1926
1927 (* Let f_repr *)
1928 Sections.add_section_lemma "f_repr" (Sections.section_proof []
1929 `?v w. v,w IN dart_of_fan (V,E) /\ f = face (hypermap_of_fan (V,E)) (v,w)`
1930 [
1931    (((use_arg_then2 ("f_in", [])) (disch_tac [])) THEN (clear_assumption "f_in") THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("lemma_face_representation", [lemma_face_representation])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (case THEN (case THEN ((move ["v"]) THEN (move ["w"])))) THEN (move ["h"]));
1932    ((((use_arg_then2 ("v", [])) (term_tac exists_tac)) THEN ((use_arg_then2 ("w", [])) (term_tac exists_tac))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (done_tac));
1933 ]);;
1934
1935 (* Let confV *)
1936 Sections.add_section_lemma "confV" (Sections.section_proof []
1937 `conforming_fan (vec 0,V,E)`
1938 [
1939    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fully_surrounded_imp_conforming", [fully_surrounded_imp_conforming])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1940 ]);;
1941
1942 (* Lemma sol_lo *)
1943 let sol_lo = Sections.section_proof []
1944 `&0 <= sol_fan (V,E) f`
1945 [
1946    (((((use_arg_then2 ("sol_fan", [sol_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ABS_POS", [REAL_ABS_POS]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1947 ];;
1948
1949 (* Lemma tau_lo *)
1950 let tau_lo = Sections.section_proof []
1951 `&0 <= tau_fan (V,E) f`
1952 [
1953    (((((use_arg_then2 ("tau_fan", [tau_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ABS_POS", [REAL_ABS_POS]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1954 ];;
1955
1956 (* Lemma sol_hi *)
1957 let sol_hi = Sections.section_proof []
1958 `sol_fan (V,E) f <= &4 * pi`
1959 [
1960    ((use_arg_then2 ("f_repr", [])) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["v"]) THEN (case THEN (move ["w"])) THEN (case THEN (move ["vw_in"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))));
1961    ((((use_arg_then2 ("sol_fan_eq", [sol_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1962    ((fun arg_tac -> (use_arg_then2 ("fan_hypermaps_iso_explicit2", [fan_hypermaps_iso_explicit2])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["iso"])));
1963    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartH"]) THEN (move ["_"])))));
1964    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart (hypermap_of_fan (V,E))`))) (term_tac (have_gen_tac [](move ["vw_in2"])))) ((((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
1965    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("iso_components", [iso_components])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["_"]) THEN (case THEN (move ["f_eq"])) THEN (move ["_"])))));
1966    ((((use_arg_then2 ("dart_leads_into_eq1", [dart_leads_into_eq1]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("f_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))));
1967    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Conforming.SUM_SOL_IN_FACE_SET_EQ_4PI", [Conforming.SUM_SOL_IN_FACE_SET_EQ_4PI])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("confV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1968    ((THENL_ROT (-1)) (((DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_EQ_IMP_LE", [REAL_EQ_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("SUM_POS_BOUND", [SUM_POS_BOUND])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (ANTS_TAC)));
1969    ((((use_arg_then2 ("f_eq", [])) (disch_tac [])) THEN (clear_assumption "f_eq") THEN BETA_TAC) THEN ((fun arg_tac -> arg_tac (Arg_term (`face _1 _2`))) (term_tac (set_tac "f1"))) THEN (BETA_TAC THEN (move ["f_eq"])));
1970    (((fun arg_tac ->  (conv_thm_tac DISCH_THEN)  (fun fst_arg -> (use_arg_then2 ("f1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac MP_TAC)) THEN BETA_TAC THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))));
1971    (((((use_arg_then2 ("f1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1972    ((((use_arg_then2 ("FINITE_HYPERMAP_ORBITS", [FINITE_HYPERMAP_ORBITS]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1973    (BETA_TAC THEN (move ["f1"]) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("lemma_face_representation", [lemma_face_representation])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (case THEN (move ["d"])) THEN (case THEN (move ["d_in"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))));
1974    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("ext_contracted", [ext_contracted])) (fun fst_arg -> (use_arg_then2 ("d", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((fun arg_tac -> (use_arg_then2 ("hypermap_of_fan_rep_alt", [hypermap_of_fan_rep_alt])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)));
1975    ((fun arg_tac -> arg_tac (Arg_term (`contracted_dart d IN dart (hypermap_of_fan (V,E))`))) (term_tac (have_gen_tac [](move ["cd_in"]))));
1976    ((((fun arg_tac -> (use_arg_then2 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("fan_hypermaps_iso_explicit", [fan_hypermaps_iso_explicit])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1977    ((((fun arg_tac -> (use_arg_then2 ("iso_components", [iso_components])) (fun fst_arg -> (use_arg_then2 ("iso", [iso])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1978    ((((fun arg_tac -> (use_arg_then2 ("pair_expand", [pair_expand])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`contracted_dart d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart_leads_into_eq1", [dart_leads_into_eq1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("pair_expand", [pair_expand]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)));
1979    (((((use_arg_then2 ("fan_sol_pos", [fan_sol_pos]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pair_expand", [pair_expand]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1980 ];;
1981
1982 (* Lemma sol_sum *)
1983 let sol_sum = Sections.section_proof []
1984 `sum f (azim_dart (V,E)) = sol_fan (V,E) f + &(CARD f - 2) * pi`
1985 [
1986    ((use_arg_then2 ("f_repr", [])) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["v"]) THEN (case THEN (move ["w"])) THEN (case THEN (move ["vw_in"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))));
1987    ((((use_arg_then2 ("sol_fan_eq", [sol_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("fully_surrounded_sol", [fully_surrounded_sol]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1988    ((((use_arg_then2 ("SUM_SUB", [SUM_SUB]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("FACE_FINITE", [FACE_FINITE]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("SUM_CONST", [SUM_CONST])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`pi`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("FACE_FINITE", [FACE_FINITE]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("ETA_AX", [ETA_AX])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`azim_dart (V,E)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
1989    ((THENL_LAST) (((use_arg_then2 ("REAL_OF_NUM_SUB", [REAL_OF_NUM_SUB]))(gsym_then (thm_tac (new_rewrite [] []))))) ((arith_tac) THEN (done_tac)));
1990    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("FULLY_SURROUNDED_IMP_CARD_FACE_GE_3", [FULLY_SURROUNDED_IMP_CARD_FACE_GE_3])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1991 ];;
1992
1993 (* Lemma sol_sum3 *)
1994 let sol_sum3 = Sections.section_proof []
1995 `CARD f = 3 ==> sum f (azim_dart (V,E)) = sol_fan (V,E) f + pi`
1996 [
1997    (((((use_arg_then2 ("sol_sum", [sol_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
1998 ];;
1999
2000 (* Lemma sol_sum4 *)
2001 let sol_sum4 = Sections.section_proof []
2002 `CARD f = 4 ==> sum f (azim_dart (V,E)) = sol_fan (V,E) f + &2 * pi`
2003 [
2004    (((((use_arg_then2 ("sol_sum", [sol_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2005 ];;
2006
2007 (* Lemma sol_sum5 *)
2008 let sol_sum5 = Sections.section_proof []
2009 `CARD f = 5 ==> sum f (azim_dart (V,E)) = sol_fan (V,E) f + &3 * pi`
2010 [
2011    (((((use_arg_then2 ("sol_sum", [sol_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2012 ];;
2013
2014 (* Lemma sol_sum6 *)
2015 let sol_sum6 = Sections.section_proof []
2016 `CARD f = 6 ==> sum f (azim_dart (V,E)) = sol_fan (V,E) f + &4 * pi`
2017 [
2018    (((((use_arg_then2 ("sol_sum", [sol_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2019 ];;
2020
2021 (* Finalization of the section Face *)
2022 let sol_lo = Sections.finalize_theorem sol_lo;;
2023 let tau_lo = Sections.finalize_theorem tau_lo;;
2024 let sol_hi = Sections.finalize_theorem sol_hi;;
2025 let sol_sum = Sections.finalize_theorem sol_sum;;
2026 let sol_sum3 = Sections.finalize_theorem sol_sum3;;
2027 let sol_sum4 = Sections.finalize_theorem sol_sum4;;
2028 let sol_sum5 = Sections.finalize_theorem sol_sum5;;
2029 let sol_sum6 = Sections.finalize_theorem sol_sum6;;
2030 Sections.end_section "Face";;
2031
2032 (* Section FaceTau *)
2033 Sections.begin_section "FaceTau";;
2034 (Sections.add_section_hyp "tau_h" (`lp_tau (V,E)`));;
2035
2036 (* Section Inner *)
2037 Sections.begin_section "Inner";;
2038 (Sections.add_section_var (mk_var ("f", (`:real^3#real^3->bool`))));;
2039 (Sections.add_section_hyp "f_in" (`f IN face_set (hypermap_of_fan (V,E))`));;
2040
2041 (* Lemma tau_sum *)
2042 let tau_sum = Sections.section_proof []
2043 `sum f (rhazim_fan (V,E)) = tau_fan (V,E) f + &(CARD f - 2) * (pi + sol0)`
2044 [
2045    ((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2046    ((((fun arg_tac -> (use_arg_then2 ("lemma_face_representation", [lemma_face_representation])) (fun fst_arg -> (use_arg_then2 ("f_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC THEN (case THEN (case THEN ((move ["v"]) THEN (move ["w"])))) THEN (case THEN ALL_TAC)) THEN ((((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] [])))) THEN (move ["vw_in"]) THEN (move ["f_eq"])));
2047    ((((use_arg_then2 ("f_eq", []))(thm_tac (new_rewrite [2] [])))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE tauVEF_alt3)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("f_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))));
2048    (((use_arg_then2 ("REAL_OF_NUM_SUB", [REAL_OF_NUM_SUB]))(gsym_then (thm_tac (new_rewrite [] [])))));
2049    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("FULLY_SURROUNDED_IMP_CARD_FACE_GE_3", [FULLY_SURROUNDED_IMP_CARD_FACE_GE_3])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2050    ((((use_arg_then2 ("f_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2051    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`FINITE f`))) (term_tac (have_gen_tac [](move ["fin_f"])))) (((((use_arg_then2 ("f_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("FACE_FINITE", [FACE_FINITE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
2052    ((repeat_tactic 1 9 (((use_arg_then2 ("SUM_SUB", [SUM_SUB]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("SUM_CONST", [SUM_CONST])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`pi`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("SUM_CONST", [SUM_CONST])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`sol0`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2053    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_ADD_ASSOC", [REAL_ADD_ASSOC]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("REAL_ADD_RID", [REAL_ADD_RID]))(gsym_then (thm_tac (new_rewrite [] []))))));
2054    ((THENL_LAST) (congr_tac (`_1 + _2:real`)) ((arith_tac) THEN (done_tac)));
2055    (((use_arg_then2 ("SUM_EQ", [SUM_EQ])) (thm_tac apply_tac)) THEN (move ["d"]) THEN (move ["d_in_f"]));
2056    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
2057    (((((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("IN_TRANS", [IN_TRANS])) (fun fst_arg -> (use_arg_then2 ("d_in_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("lemma_face_subset", [lemma_face_subset]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2058    ((((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("yn_fan", [yn_fan]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ln_fan", [ln_fan]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("rho_fan", [rho_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(gsym_then (thm_tac (new_rewrite [] [])))))));
2059    (((((use_arg_then2 ("rho_def", [rho_def]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((fun arg_tac -> (use_arg_then2 ("in_dart_inV", [])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
2060 ];;
2061
2062 (* Lemma tau_sum3 *)
2063 let tau_sum3 = Sections.section_proof []
2064 `CARD f = 3 ==>
2065         sum f (rhazim_fan (V,E)) = tau_fan (V,E) f + (pi + sol0)`
2066 [
2067    (((((use_arg_then2 ("tau_sum", [tau_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2068 ];;
2069
2070 (* Lemma tau_sum4 *)
2071 let tau_sum4 = Sections.section_proof []
2072 `CARD f = 4 ==>
2073         sum f (rhazim_fan (V,E)) = tau_fan (V,E) f + &2 * (pi + sol0)`
2074 [
2075    (((((use_arg_then2 ("tau_sum", [tau_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2076 ];;
2077
2078 (* Lemma tau_sum5 *)
2079 let tau_sum5 = Sections.section_proof []
2080 `CARD f = 5 ==>
2081         sum f (rhazim_fan (V,E)) = tau_fan (V,E) f + &3 * (pi + sol0)`
2082 [
2083    (((((use_arg_then2 ("tau_sum", [tau_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2084 ];;
2085
2086 (* Lemma tau_sum6 *)
2087 let tau_sum6 = Sections.section_proof []
2088 `CARD f = 6 ==>
2089         sum f (rhazim_fan (V,E)) = tau_fan (V,E) f + &4 * (pi + sol0)`
2090 [
2091    (((((use_arg_then2 ("tau_sum", [tau_sum]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2092 ];;
2093
2094 (* Finalization of the section Inner *)
2095 let tau_sum = Sections.finalize_theorem tau_sum;;
2096 let tau_sum3 = Sections.finalize_theorem tau_sum3;;
2097 let tau_sum4 = Sections.finalize_theorem tau_sum4;;
2098 let tau_sum5 = Sections.finalize_theorem tau_sum5;;
2099 let tau_sum6 = Sections.finalize_theorem tau_sum6;;
2100 Sections.end_section "Inner";;
2101 (Sections.add_section_hyp "contrV" (`contravening V`));;
2102
2103 (* Section Inner *)
2104 Sections.begin_section "Inner";;
2105 (Sections.add_section_var (mk_var ("f", (`:real^3#real^3->bool`))));;
2106 (Sections.add_section_hyp "f_in" (`f IN face_set (hypermap_of_fan (V,E))`));;
2107
2108 (* Let tgt_ineq *)
2109 Sections.add_section_lemma "tgt_ineq" (Sections.section_proof []
2110 `&4 * pi - &20 * sol0 <= tgt`
2111 [
2112    ((fun arg_tac -> arg_tac (Arg_theorem (create_interval `&4 * pi - &20 * sol0`))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2113    (((((use_arg_then2 ("interval_arith", [interval_arith]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("tgt", [tgt]))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2114 ]);;
2115
2116 (* Lemma tauVEF_hi *)
2117 let tauVEF_hi = Sections.section_proof []
2118 `tauVEF (V,E,f) <= tgt`
2119 [
2120    ((((use_arg_then2 ("REAL_LE_TRANS", [REAL_LE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LE_TRANS") THEN (DISCH_THEN apply_tac)) THEN ((fun arg_tac -> arg_tac (Arg_term (`&4 * pi - &20 * sol0`))) (term_tac exists_tac)) THEN ((((use_arg_then2 ("tgt_ineq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] []))))));
2121    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("sum_tauVEF_upper_bound", [sum_tauVEF_upper_bound])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC)) THEN (ANTS_TAC));
2122    ((((use_arg_then2 ("contrV", [])) (disch_tac [])) THEN (clear_assumption "contrV") THEN BETA_TAC) THEN (((((use_arg_then2 ("contravening", [contravening]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_LE", [REAL_LT_LE]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2123    ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("SUM_POS_BOUND", [SUM_POS_BOUND])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))));
2124    (((((use_arg_then2 ("f_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("FINITE_HYPERMAP_ORBITS", [FINITE_HYPERMAP_ORBITS]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)) THEN (move ["f2"]) THEN (move ["f2_in"]));
2125    ((((use_arg_then2 ("tau_h", [])) (disch_tac [])) THEN (clear_assumption "tau_h") THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_tau", [lp_tau]))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2126 ];;
2127
2128 (* Lemma tau_hi *)
2129 let tau_hi = Sections.section_proof []
2130 `tau_fan (V,E) f <= tgt`
2131 [
2132    (((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("tauVEF_hi", [tauVEF_hi]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2133 ];;
2134
2135 (* Finalization of the section Inner *)
2136 let tauVEF_hi = Sections.finalize_theorem tauVEF_hi;;
2137 let tau_hi = Sections.finalize_theorem tau_hi;;
2138 Sections.end_section "Inner";;
2139
2140 (* Finalization of the section FaceTau *)
2141 let tau_sum = Sections.finalize_theorem tau_sum;;
2142 let tau_sum3 = Sections.finalize_theorem tau_sum3;;
2143 let tau_sum4 = Sections.finalize_theorem tau_sum4;;
2144 let tau_sum5 = Sections.finalize_theorem tau_sum5;;
2145 let tau_sum6 = Sections.finalize_theorem tau_sum6;;
2146 let tauVEF_hi = Sections.finalize_theorem tauVEF_hi;;
2147 let tau_hi = Sections.finalize_theorem tau_hi;;
2148 Sections.end_section "FaceTau";;
2149
2150 (* Section Nonlinear *)
2151 Sections.begin_section "Nonlinear";;
2152
2153 (* Section V *)
2154 Sections.begin_section "V";;
2155 (Sections.add_section_var (mk_var ("v", (`:real^3`))));;
2156 (Sections.add_section_hyp "vV" (`v IN V`));;
2157
2158 (* Lemma ln_fan_ly *)
2159 let ln_fan_ly = Sections.section_proof []
2160 `ln_fan v = ly (norm v)`
2161 [
2162    ((((use_arg_then2 ("ln_fan", [ln_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] [])))));
2163    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v = FST (v,v)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((ALL_TAC) THEN (done_tac)));
2164    ((((use_arg_then2 ("h_dart", [h_dart]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ly_EQ_lmfun", [ly_EQ_lmfun]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2165    ((((fun arg_tac -> (use_arg_then2 ("norm_v", [])) (fun fst_arg -> (use_arg_then2 ("vV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac));
2166 ];;
2167
2168 (* Lemma rho_fan_eq_rho *)
2169 let rho_fan_eq_rho = Sections.section_proof []
2170 `rho_fan v = rho (norm v)`
2171 [
2172    ((((use_arg_then2 ("rho_fan", [rho_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Sphere.rho", [Sphere.rho]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ln_fan_ly", [ln_fan_ly]))(gsym_then (thm_tac (new_rewrite [] []))))));
2173    ((fun arg_tac -> arg_tac (Arg_term (`&1 + _`))) (term_tac (set_tac "x")));
2174    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`abs x = x`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((((use_arg_then2 ("x_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac)));
2175    (((((use_arg_then2 ("REAL_ABS_REFL", [REAL_ABS_REFL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("x_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_pos", [rho_pos]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2176 ];;
2177
2178 (* Finalization of the section V *)
2179 let ln_fan_ly = Sections.finalize_theorem ln_fan_ly;;
2180 let rho_fan_eq_rho = Sections.finalize_theorem rho_fan_eq_rho;;
2181 Sections.end_section "V";;
2182
2183 (* Section Y *)
2184 Sections.begin_section "Y";;
2185
2186 (* Lemma ys_eq *)
2187 let ys_eq = Sections.section_proof ["v";"w"]
2188 `v,w IN dart_of_fan (V,E)
2189         ==> y1_fan (v,w) = norm v
2190         /\ y2_fan (v,w) = norm w
2191         /\ y3_fan (V,E) (v,w) = norm (sigma_fan (vec 0) V E v w)
2192         /\ y4'_fan (V,E) (v,w) = dist (w, sigma_fan (vec 0) V E v w)
2193         /\ y5_fan (V,E) (v,w) = dist (v, sigma_fan (vec 0) V E v w)
2194         /\ y6_fan (v,w) = dist (v,w)`
2195 [
2196    (BETA_TAC THEN (move ["vw_in"]));
2197    ((((use_arg_then2 ("y1_fan", [y1_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y2_fan", [y2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y3_fan", [y3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2198    (((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("DIST_SYM", [DIST_SYM]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2199 ];;
2200
2201 (* Lemma inverse_f_fan_pair_ext_power2 *)
2202 let inverse_f_fan_pair_ext_power2 = Sections.section_proof ["v";"w"]
2203 `v,w IN dart_of_fan (V,E)
2204         ==> let w' = sigma_fan (vec 0) V E v w in
2205             let u = sigma_fan (vec 0) V E w' v in
2206         (inverse (f_fan_pair_ext (V,E)) POWER 2) (v,w) = u,w'`
2207 [
2208    ((BETA_TAC THEN (move ["vw_in"])) THEN (repeat_tactic 1 9 ((CONV_TAC let_CONV))));
2209    ((((use_arg_then2 ("TWO", [TWO]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2210    (((repeat_tactic 1 9 (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("dart_switch", [dart_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("sigma_in_dart1", [sigma_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2211 ];;
2212
2213 (* Lemma y78_eq *)
2214 let y78_eq = Sections.section_proof ["v";"w"]
2215 `v,w IN dart_of_fan (V,E)
2216         ==> let w' = sigma_fan (vec 0) V E v w in
2217             let u = sigma_fan (vec 0) V E w' v in
2218         y8_fan (V,E) (v,w) = dist (w',u) /\
2219         y7_fan (V,E) (v,w) = norm u`
2220 [
2221    ((BETA_TAC THEN (move ["vw_in"])) THEN (repeat_tactic 1 9 ((CONV_TAC let_CONV))));
2222    ((((use_arg_then2 ("DIST_SYM", [DIST_SYM]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE inverse_f_fan_pair_ext_power2)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2223    ((((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("TWO", [TWO]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2224    (((((use_arg_then2 ("y7_fan", [y7_fan]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE inverse_f_fan_pair_ext_power2)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2225 ];;
2226
2227 (* Lemma y9_eq *)
2228 let y9_eq = Sections.section_proof ["v";"w"]
2229 `v,w IN dart_of_fan (V,E) /\ CARD (face (hypermap_of_fan (V,E)) (v,w)) = 4
2230         ==> let w' = sigma_fan (vec 0) V E v w in
2231             let u = sigma_fan (vec 0) V E w' v in
2232         y9_fan (V,E) (v,w) = dist (w,u)`
2233 [
2234    ((BETA_TAC THEN (case THEN ((move ["vw_in"]) THEN (move ["card_f"])))) THEN (repeat_tactic 1 9 ((CONV_TAC let_CONV))));
2235    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w1")));
2236    ((((use_arg_then2 ("y9_fan", [y9_fan]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE face4_eq)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("w1_def", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2237    (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2238 ];;
2239
2240 (* Lemma ys_eq_alt *)
2241 let ys_eq_alt = Sections.section_proof ["d"]
2242 `d IN dart_of_fan (V,E)
2243         ==> y1_fan d = norm (FST d)
2244         /\ y2_fan d = norm (SND d)
2245         /\ y3_fan (V,E) d = norm (sigma_fan (vec 0) V E (FST d) (SND d))
2246         /\ y4'_fan (V,E) d = dist (SND d, sigma_fan (vec 0) V E (FST d) (SND d))
2247         /\ y5_fan (V,E) d = dist (FST d, sigma_fan (vec 0) V E (FST d) (SND d))
2248         /\ y6_fan d = dist d`
2249 [
2250    ((((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (simp_tac) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("ys_eq", [ys_eq])) (thm_tac (match_mp_then snd_th MP_TAC))))) THEN (done_tac));
2251 ];;
2252
2253 (* Finalization of the section Y *)
2254 let ys_eq = Sections.finalize_theorem ys_eq;;
2255 let inverse_f_fan_pair_ext_power2 = Sections.finalize_theorem inverse_f_fan_pair_ext_power2;;
2256 let y78_eq = Sections.finalize_theorem y78_eq;;
2257 let y9_eq = Sections.finalize_theorem y9_eq;;
2258 let ys_eq_alt = Sections.finalize_theorem ys_eq_alt;;
2259 Sections.end_section "Y";;
2260
2261 (* Section Dart *)
2262 Sections.begin_section "Dart";;
2263 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
2264 (Sections.add_section_hyp "d_in" (`d IN dart_of_fan (V,E)`));;
2265
2266 (* Lemma azim_fan_eq_dih_y *)
2267 let azim_fan_eq_dih_y = Sections.section_proof []
2268 `azim_dart (V,E) d
2269    = dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4'_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2270 [
2271    (((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]));
2272    (((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE fully_surrounded_azim_eq_dih_y)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ys_eq", [ys_eq]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2273 ];;
2274
2275 (* Lemma rhazim_fan_eq_rhazim *)
2276 let rhazim_fan_eq_rhazim = Sections.section_proof []
2277 `rhazim_fan (V,E) d
2278    = rhazim (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4'_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2279 [
2280    ((((use_arg_then2 ("Sphere.rhazim", [Sphere.rhazim]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rhazim_fan", [rhazim_fan]))(thm_tac (new_rewrite [] [])))));
2281    (((((use_arg_then2 ("h_dart", [h_dart]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("yn_fan", [yn_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("ln_fan", [ln_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("rho_fan", [rho_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y1_fan", [y1_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rho_fan_eq_rho", [rho_fan_eq_rho]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("in_dart_inV", [])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2282 ];;
2283
2284 (* Lemma delta_y_not_neg *)
2285 let delta_y_not_neg = Sections.section_proof []
2286 `~(delta_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4'_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)
2287                 < &0)`
2288 [
2289    (((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]));
2290    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE delta_y_pos))) (fun fst_arg -> (use_arg_then2 ("v", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("w", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E v w`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2291    (((((use_arg_then2 ("REAL_NOT_LT", [REAL_NOT_LT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ys_eq", [ys_eq]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2292 ];;
2293
2294 (* Finalization of the section Dart *)
2295 let azim_fan_eq_dih_y = Sections.finalize_theorem azim_fan_eq_dih_y;;
2296 let rhazim_fan_eq_rhazim = Sections.finalize_theorem rhazim_fan_eq_rhazim;;
2297 let delta_y_not_neg = Sections.finalize_theorem delta_y_not_neg;;
2298 Sections.end_section "Dart";;
2299
2300 (* Section Dart3 *)
2301 Sections.begin_section "Dart3";;
2302 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
2303 (Sections.add_section_hyp "d_in" (`d IN darts_k 3 (hypermap_of_fan (V,E))`));;
2304
2305 (* Let card_f *)
2306 Sections.add_section_lemma "card_f" (Sections.section_proof []
2307 `CARD (face (hypermap_of_fan (V,E)) d) = 3`
2308 [
2309    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2310 ]);;
2311
2312 (* Let d_in_dart *)
2313 Sections.add_section_lemma "d_in_dart" (Sections.section_proof []
2314 `d IN dart_of_fan (V,E)`
2315 [
2316    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2317 ]);;
2318
2319 (* Lemma dart3_yf_eq *)
2320 let dart3_yf_eq = Sections.section_proof []
2321 `y1_fan (f_fan_pair_ext (V,E) d) = y2_fan d
2322         /\ y2_fan (f_fan_pair_ext (V,E) d) = y3_fan (V,E) d
2323         /\ y3_fan (V,E) (f_fan_pair_ext (V,E) d) = y1_fan d
2324         /\ y4_fan (V,E) (f_fan_pair_ext (V,E) d) = y5_fan (V,E) d
2325         /\ y5_fan (V,E) (f_fan_pair_ext (V,E) d) = y6_fan d
2326         /\ y6_fan (f_fan_pair_ext (V,E) d) = y4_fan (V,E) d`
2327 [
2328    ((repeat_tactic 12 0 (((fun arg_tac ->(use_arg_then2 ("y1_fan", [y1_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y2_fan", [y2_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y3_fan", [y3_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y4_fan", [y4_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y5_fan", [y5_fan]))(fun tmp_arg1 -> (use_arg_then2 ("y6_fan", [y6_fan]))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
2329    ((((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2330    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2331    ((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2332    ((((use_arg_then2 ("vw_in", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["vw_in1"])));
2333    ((repeat_tactic 1 9 (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2334    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("f_fan_pair3", [f_fan_pair3])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["eq"])));
2335    (((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2336 ];;
2337
2338 (* Lemma dart3_y_invf_eq *)
2339 let dart3_y_invf_eq = Sections.section_proof []
2340 `y1_fan (inverse (f_fan_pair_ext (V,E)) d) = y3_fan (V,E) d
2341         /\ y2_fan (inverse (f_fan_pair_ext (V,E)) d) = y1_fan d
2342         /\ y3_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y2_fan d
2343         /\ y4_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y6_fan d
2344         /\ y5_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y4_fan (V,E) d
2345         /\ y6_fan (inverse (f_fan_pair_ext (V,E)) d) = y5_fan (V,E) d`
2346 [
2347    ((repeat_tactic 12 0 (((fun arg_tac ->(use_arg_then2 ("y1_fan", [y1_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y2_fan", [y2_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y3_fan", [y3_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y4_fan", [y4_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y5_fan", [y5_fan]))(fun tmp_arg1 -> (use_arg_then2 ("y6_fan", [y6_fan]))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
2348    ((((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2349    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2350    ((((use_arg_then2 ("vw_in", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["vw_in1"])));
2351    ((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE inverse_f_fan_pair_ext_power2))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2352    (((((use_arg_then2 ("TWO", [TWO]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER", [POWER]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))));
2353    ((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE TRIANGULAR_FACE)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2354    ((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2355    (((((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("f_fan_pair3", [f_fan_pair3])) (fun fst_arg -> (use_arg_then2 ("card_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2356 ];;
2357
2358 (* Lemma dart3_azim_fan_eq_dih_y *)
2359 let dart3_azim_fan_eq_dih_y = Sections.section_proof []
2360 `azim_dart (V,E) d
2361    = dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2362 [
2363    (((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y4'_eq_y4", [y4'_eq_y4]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2364 ];;
2365
2366 (* Lemma dart3_rhazim_fan_eq_rhazim *)
2367 let dart3_rhazim_fan_eq_rhazim = Sections.section_proof []
2368 `rhazim_fan (V,E) d
2369    = rhazim (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2370 [
2371    (((((use_arg_then2 ("rhazim_fan_eq_rhazim", [rhazim_fan_eq_rhazim]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y4'_eq_y4", [y4'_eq_y4]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2372 ];;
2373
2374 (* Lemma dart3_sol_fan_eq_sol *)
2375 let dart3_sol_fan_eq_sol = Sections.section_proof []
2376 `sol_fan (V,E) (face (hypermap_of_fan (V,E)) d)
2377    = sol_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2378 [
2379    ((((use_arg_then2 ("y4'_eq_y4", [y4'_eq_y4]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2380    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2381    (((((use_arg_then2 ("sol_fan_eq", [sol_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE fully_surrounded_sol_eq_sol_y)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ys_eq", [ys_eq]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2382 ];;
2383
2384 (* Finalization of the section Dart3 *)
2385 let dart3_yf_eq = Sections.finalize_theorem dart3_yf_eq;;
2386 let dart3_y_invf_eq = Sections.finalize_theorem dart3_y_invf_eq;;
2387 let dart3_azim_fan_eq_dih_y = Sections.finalize_theorem dart3_azim_fan_eq_dih_y;;
2388 let dart3_rhazim_fan_eq_rhazim = Sections.finalize_theorem dart3_rhazim_fan_eq_rhazim;;
2389 let dart3_sol_fan_eq_sol = Sections.finalize_theorem dart3_sol_fan_eq_sol;;
2390 Sections.end_section "Dart3";;
2391
2392 (* Section Dart3_more *)
2393 Sections.begin_section "Dart3_more";;
2394 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
2395 (Sections.add_section_hyp "d_in" (`d IN darts_k 3 (hypermap_of_fan (V,E))`));;
2396
2397 (* Lemma dart3_azim2_fan_eq_dih2_y *)
2398 let dart3_azim2_fan_eq_dih2_y = Sections.section_proof []
2399 `azim2_fan (V,E) d
2400    = dih2_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2401 [
2402    ((((use_arg_then2 ("dih2_y", [dih2_y]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim2_fan", [azim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart3_azim_fan_eq_dih_y", [dart3_azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2403    (((repeat_tactic 1 9 (((use_arg_then2 ("dart3_yf_eq", [dart3_yf_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2404 ];;
2405
2406 (* Lemma dart3_azim3_fan_eq_dih3_y *)
2407 let dart3_azim3_fan_eq_dih3_y = Sections.section_proof []
2408 `azim3_fan (V,E) d
2409    = dih3_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2410 [
2411    ((((use_arg_then2 ("dih3_y", [dih3_y]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim3_fan", [azim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart3_azim_fan_eq_dih_y", [dart3_azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2412    ((repeat_tactic 1 9 (((use_arg_then2 ("dart3_y_invf_eq", [dart3_y_invf_eq]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2413 ];;
2414
2415 (* Lemma dart3_rhazim2_fan_eq_rhazim2 *)
2416 let dart3_rhazim2_fan_eq_rhazim2 = Sections.section_proof []
2417 `rhazim2_fan (V,E) d
2418    = rhazim2 (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2419 [
2420    ((((use_arg_then2 ("rhazim2", [rhazim2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rhazim2_fan", [rhazim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart3_rhazim_fan_eq_rhazim", [dart3_rhazim_fan_eq_rhazim]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2421    (((((use_arg_then2 ("node2_y", [node2_y]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("dart3_yf_eq", [dart3_yf_eq]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2422 ];;
2423
2424 (* Lemma dart3_rhazim3_fan_eq_rhazim3 *)
2425 let dart3_rhazim3_fan_eq_rhazim3 = Sections.section_proof []
2426 `rhazim3_fan (V,E) d
2427    = rhazim3 (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2428 [
2429    ((((use_arg_then2 ("rhazim3", [rhazim3]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("rhazim3_fan", [rhazim3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart3_rhazim_fan_eq_rhazim", [dart3_rhazim_fan_eq_rhazim]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2430    (((((use_arg_then2 ("node3_y", [node3_y]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("dart3_y_invf_eq", [dart3_y_invf_eq]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2431 ];;
2432
2433 (* Finalization of the section Dart3_more *)
2434 let dart3_azim2_fan_eq_dih2_y = Sections.finalize_theorem dart3_azim2_fan_eq_dih2_y;;
2435 let dart3_azim3_fan_eq_dih3_y = Sections.finalize_theorem dart3_azim3_fan_eq_dih3_y;;
2436 let dart3_rhazim2_fan_eq_rhazim2 = Sections.finalize_theorem dart3_rhazim2_fan_eq_rhazim2;;
2437 let dart3_rhazim3_fan_eq_rhazim3 = Sections.finalize_theorem dart3_rhazim3_fan_eq_rhazim3;;
2438 Sections.end_section "Dart3_more";;
2439
2440 (* Lemma dart4_f_fan_pair_ext_power2 *)
2441 let dart4_f_fan_pair_ext_power2 = Sections.section_proof ["d"]
2442 `d IN dart_of_fan (V,E) /\
2443         CARD (face (hypermap_of_fan (V,E)) d) = 4
2444         ==> (f_fan_pair_ext (V,E) POWER 2) d = (inverse (f_fan_pair_ext (V,E)) POWER 2) d`
2445 [
2446    (BETA_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["card_f"]))));
2447    ((((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))));
2448    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`2 = 4 - 2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [2] []))))))) ((arith_tac) THEN (done_tac)));
2449    (((use_arg_then2 ("FINITE_ORBIT_MAP_INVERSE", [FINITE_ORBIT_MAP_INVERSE])) (thm_tac apply_tac)) THEN ((fun arg_tac -> arg_tac (Arg_term (`dart (hypermap_of_fan (V,E))`))) (term_tac exists_tac)));
2450    (((repeat_tactic 1 9 (((use_arg_then2 ("face_map_and_darts", [face_map_and_darts]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("face", [face]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
2451 ];;
2452
2453 (* Section Dart4 *)
2454 Sections.begin_section "Dart4";;
2455 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
2456 (Sections.add_section_hyp "d_in" (`d IN darts_k 4 (hypermap_of_fan (V,E))`));;
2457
2458 (* Let card_f *)
2459 Sections.add_section_lemma "card_f" (Sections.section_proof []
2460 `CARD (face (hypermap_of_fan (V,E)) d) = 4`
2461 [
2462    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2463 ]);;
2464
2465 (* Let d_in_dart *)
2466 Sections.add_section_lemma "d_in_dart" (Sections.section_proof []
2467 `d IN dart_of_fan (V,E)`
2468 [
2469    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2470 ]);;
2471
2472 (* Lemma dart4_yf_eq *)
2473 let dart4_yf_eq = Sections.section_proof []
2474 `y1_fan (f_fan_pair_ext (V,E) d) = y2_fan d
2475         /\ y2_fan (f_fan_pair_ext (V,E) d) = y7_fan (V,E) d
2476         /\ y3_fan (V,E) (f_fan_pair_ext (V,E) d) = y1_fan d
2477         /\ y5_fan (V,E) (f_fan_pair_ext (V,E) d) = y6_fan d
2478         /\ y6_fan (f_fan_pair_ext (V,E) d) = y9_fan (V,E) d
2479         /\ y7_fan (V,E) (f_fan_pair_ext (V,E) d) = y3_fan (V,E) d
2480         /\ y8_fan (V,E) (f_fan_pair_ext (V,E) d) = y5_fan (V,E) d
2481         /\ y9_fan (V,E) (f_fan_pair_ext (V,E) d) = y8_fan (V,E) d`
2482 [
2483    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2484    ((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["inv_f_f"])));
2485    ((repeat_tactic 1 9 (((fun arg_tac ->(use_arg_then2 ("y1_fan", [y1_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y3_fan", [y3_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y5_fan", [y5_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y6_fan", [y6_fan]))(fun tmp_arg1 -> (use_arg_then2 ("y9_fan", [y9_fan]))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y2_def", [y2_def]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("fd_in", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("inv_f_f", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("yn_fan", [yn_fan]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
2486    ((repeat_tactic 1 9 (((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y7_fan", [y7_fan]))(thm_tac (new_rewrite [] []))))));
2487    ((((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext (V,E)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(gsym_then (thm_tac (new_rewrite [] []))))));
2488    (((((use_arg_then2 ("dart4_f_fan_pair_ext_power2", [dart4_f_fan_pair_ext_power2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("inv_f_f", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2489 ];;
2490
2491 (* Lemma dart4_y_invf_eq *)
2492 let dart4_y_invf_eq = Sections.section_proof []
2493 `y1_fan (inverse (f_fan_pair_ext (V,E)) d) = y3_fan (V,E) d
2494         /\ y2_fan (inverse (f_fan_pair_ext (V,E)) d) = y1_fan d
2495         /\ y3_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y7_fan (V,E) d
2496         /\ y5_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y8_fan (V,E) d
2497         /\ y6_fan (inverse (f_fan_pair_ext (V,E)) d) = y5_fan (V,E) d
2498         /\ y7_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y2_fan d
2499         /\ y8_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y9_fan (V,E) d
2500         /\ y9_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d) = y6_fan d`
2501 [
2502    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2503    ((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["inv_f_f"])));
2504    ((repeat_tactic 1 9 (((use_arg_then2 ("y1_fan", [y1_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y2_fan", [y2_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y3_fan", [y3_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y7_fan", [y7_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y9_fan", [y9_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("inv_f_f", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2505    ((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [1] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2506    ((((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`inverse _`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac));
2507    ((fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext _`))) (term_tac (set_tac "f")));
2508    ((fun arg_tac -> arg_tac (Arg_term (`(inverse f POWER 2) (inverse f x) = inverse f ((inverse f POWER 2) x)`))) (term_tac (have_gen_tac ["x"](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
2509    (((((use_arg_then2 ("COM_POWER_FUNCTION", [COM_POWER_FUNCTION]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`inverse f POWER 2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER", [POWER]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2510    ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_f_fan_pair_ext_power2", [dart4_f_fan_pair_ext_power2]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("f_def", []))(thm_tac (new_rewrite [] [])))));
2511    ((((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("inv_f_f", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2512    (((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2513 ];;
2514
2515 (* Lemma dart4_cross_eq_y4' *)
2516 let dart4_cross_eq_y4' = Sections.section_proof []
2517 `y4'_fan (V,E) (f_fan_pair_ext (V,E) d)
2518                         = y4'_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d)`
2519 [
2520    ((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["inv_f_f"])));
2521    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2522    (((repeat_tactic 1 9 (((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("inv_f_f", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("DIST_SYM", [DIST_SYM]))(thm_tac (new_rewrite [] []))))) THEN (congr_tac (`dist _`)) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] [])))) THEN (split_tac));
2523    (((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2524    ((((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`inverse _`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_f_fan_pair_ext_power2", [dart4_f_fan_pair_ext_power2]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2525    ((((fun arg_tac -> (use_arg_then2 ("POWER_1", [POWER_1])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext (V,E)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("f_fan_pair_power", [f_fan_pair_power]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)));
2526    (((((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2527 ];;
2528
2529 (* Lemma dart4_cross_eq_enclosed *)
2530 let dart4_cross_eq_enclosed = Sections.section_proof []
2531 `y4'_fan (V,E) (f_fan_pair_ext (V,E) d)
2532     = enclosed (y1_fan d) (y5_fan (V,E) d) (y6_fan d) (y4'_fan (V,E) d)
2533         (y2_fan d) (y3_fan (V,E) d) (y7_fan (V,E) d) (y8_fan (V,E) d) (y9_fan (V,E) d)`
2534 [
2535    (((use_arg_then2 ("dart4_cross_eq_y4'", [dart4_cross_eq_y4']))(thm_tac (new_rewrite [] []))));
2536    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2537    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE fully_surrounded_enclosed))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2538    ((repeat_tactic 1 9 (((use_arg_then2 ("ys_eq", [ys_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE y78_eq)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE y9_eq)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2539    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
2540    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w' v`))) (term_tac (set_tac "u")));
2541    (BETA_TAC THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] []))))));
2542    ((((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`inverse _`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [(`FST _`)]))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(gsym_then (thm_tac (new_rewrite [] []))))));
2543    ((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE inverse_f_fan_pair_ext_power2)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("u_def", []))(thm_tac (new_rewrite [] [])))));
2544    (((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2545 ];;
2546
2547 (* Finalization of the section Dart4 *)
2548 let dart4_yf_eq = Sections.finalize_theorem dart4_yf_eq;;
2549 let dart4_y_invf_eq = Sections.finalize_theorem dart4_y_invf_eq;;
2550 let dart4_cross_eq_y4' = Sections.finalize_theorem dart4_cross_eq_y4';;
2551 let dart4_cross_eq_enclosed = Sections.finalize_theorem dart4_cross_eq_enclosed;;
2552 Sections.end_section "Dart4";;
2553
2554 (* Section Tau *)
2555 Sections.begin_section "Tau";;
2556
2557 (* Lemma dart3_tauVEF_eq_taum *)
2558 let dart3_tauVEF_eq_taum = Sections.section_proof ["d"]
2559 `d IN darts_k 3 (hypermap_of_fan (V,E))
2560    ==> tauVEF (V,E,face (hypermap_of_fan (V,E)) d)
2561     = taum (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2562 [
2563    ((BETA_TAC THEN (move ["d_in3"])) THEN ((((use_arg_then2 ("y4'_eq_y4", [y4'_eq_y4]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))));
2564    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac []ALL_TAC)));
2565    ((((use_arg_then2 ("d_in3", [])) (disch_tac [])) THEN (clear_assumption "d_in3") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2566    (((use_arg_then2 ("d_in3", [])) (disch_tac [])) THEN (clear_assumption "d_in3") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in3"]) THEN (move ["vw_in"]));
2567    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE fully_surrounded_tau_eq_taum))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("subV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC)) THEN (ANTS_TAC));
2568    ((((use_arg_then2 ("vw_in3", [])) (disch_tac [])) THEN (clear_assumption "vw_in3") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2569    ((repeat_tactic 1 9 (((use_arg_then2 ("ys_eq", [ys_eq]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2570 ];;
2571
2572 (* Lemma dart4_tauVEF_eq_tauq *)
2573 let dart4_tauVEF_eq_tauq = Sections.section_proof ["d"]
2574 `d IN darts_k 4 (hypermap_of_fan (V,E))
2575    ==> tauVEF (V,E,face (hypermap_of_fan (V,E)) d)
2576     = tauq (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4'_fan (V,E) d)
2577         (y5_fan (V,E) d) (y6_fan d) (y7_fan (V,E) d) (y8_fan (V,E) d) (y9_fan (V,E) d)`
2578 [
2579    (BETA_TAC THEN (move ["d_in4"]));
2580    ((((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))));
2581    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (case THEN (move ["vw_in"])) THEN (move ["card_f"]));
2582    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE fully_surrounded_tau_eq_tauq))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("subV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2583    (((repeat_tactic 1 9 (((use_arg_then2 ("ys_eq", [ys_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE y78_eq)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE y9_eq)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2584 ];;
2585 (Sections.add_section_hyp "tau_h" (`lp_tau (V,E)`));;
2586
2587 (* Lemma dart3_tau_fan_eq_taum *)
2588 let dart3_tau_fan_eq_taum = Sections.section_proof ["d"]
2589 `d IN darts_k 3 (hypermap_of_fan (V,E))
2590    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d)
2591     = taum (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
2592 [
2593    ((BETA_TAC THEN (move ["d_in3"])) THEN (((use_arg_then2 ("d_in3", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["card_f"])));
2594    (((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart3_tauVEF_eq_taum", [dart3_tauVEF_eq_taum]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2595 ];;
2596
2597 (* Lemma dart4_tau_fan_eq_tauq *)
2598 let dart4_tau_fan_eq_tauq = Sections.section_proof ["d"]
2599 `d IN darts_k 4 (hypermap_of_fan (V,E))
2600    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d)
2601     = tauq (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4'_fan (V,E) d)
2602         (y5_fan (V,E) d) (y6_fan d) (y7_fan (V,E) d) (y8_fan (V,E) d) (y9_fan (V,E) d)`
2603 [
2604    ((BETA_TAC THEN (move ["d_in4"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["card_f"])));
2605    (((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_tauVEF_eq_tauq", [dart4_tauVEF_eq_tauq]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2606 ];;
2607
2608 (* Finalization of the section Tau *)
2609 let dart3_tauVEF_eq_taum = Sections.finalize_theorem dart3_tauVEF_eq_taum;;
2610 let dart4_tauVEF_eq_tauq = Sections.finalize_theorem dart4_tauVEF_eq_tauq;;
2611 let dart3_tau_fan_eq_taum = Sections.finalize_theorem dart3_tau_fan_eq_taum;;
2612 let dart4_tau_fan_eq_tauq = Sections.finalize_theorem dart4_tau_fan_eq_tauq;;
2613 Sections.end_section "Tau";;
2614
2615 (* Finalization of the section Nonlinear *)
2616 let ln_fan_ly = Sections.finalize_theorem ln_fan_ly;;
2617 let rho_fan_eq_rho = Sections.finalize_theorem rho_fan_eq_rho;;
2618 let ys_eq = Sections.finalize_theorem ys_eq;;
2619 let inverse_f_fan_pair_ext_power2 = Sections.finalize_theorem inverse_f_fan_pair_ext_power2;;
2620 let y78_eq = Sections.finalize_theorem y78_eq;;
2621 let y9_eq = Sections.finalize_theorem y9_eq;;
2622 let ys_eq_alt = Sections.finalize_theorem ys_eq_alt;;
2623 let azim_fan_eq_dih_y = Sections.finalize_theorem azim_fan_eq_dih_y;;
2624 let rhazim_fan_eq_rhazim = Sections.finalize_theorem rhazim_fan_eq_rhazim;;
2625 let delta_y_not_neg = Sections.finalize_theorem delta_y_not_neg;;
2626 let dart3_yf_eq = Sections.finalize_theorem dart3_yf_eq;;
2627 let dart3_y_invf_eq = Sections.finalize_theorem dart3_y_invf_eq;;
2628 let dart3_azim_fan_eq_dih_y = Sections.finalize_theorem dart3_azim_fan_eq_dih_y;;
2629 let dart3_rhazim_fan_eq_rhazim = Sections.finalize_theorem dart3_rhazim_fan_eq_rhazim;;
2630 let dart3_sol_fan_eq_sol = Sections.finalize_theorem dart3_sol_fan_eq_sol;;
2631 let dart3_azim2_fan_eq_dih2_y = Sections.finalize_theorem dart3_azim2_fan_eq_dih2_y;;
2632 let dart3_azim3_fan_eq_dih3_y = Sections.finalize_theorem dart3_azim3_fan_eq_dih3_y;;
2633 let dart3_rhazim2_fan_eq_rhazim2 = Sections.finalize_theorem dart3_rhazim2_fan_eq_rhazim2;;
2634 let dart3_rhazim3_fan_eq_rhazim3 = Sections.finalize_theorem dart3_rhazim3_fan_eq_rhazim3;;
2635 let dart4_f_fan_pair_ext_power2 = Sections.finalize_theorem dart4_f_fan_pair_ext_power2;;
2636 let dart4_yf_eq = Sections.finalize_theorem dart4_yf_eq;;
2637 let dart4_y_invf_eq = Sections.finalize_theorem dart4_y_invf_eq;;
2638 let dart4_cross_eq_y4' = Sections.finalize_theorem dart4_cross_eq_y4';;
2639 let dart4_cross_eq_enclosed = Sections.finalize_theorem dart4_cross_eq_enclosed;;
2640 let dart3_tauVEF_eq_taum = Sections.finalize_theorem dart3_tauVEF_eq_taum;;
2641 let dart4_tauVEF_eq_tauq = Sections.finalize_theorem dart4_tauVEF_eq_tauq;;
2642 let dart3_tau_fan_eq_taum = Sections.finalize_theorem dart3_tau_fan_eq_taum;;
2643 let dart4_tau_fan_eq_tauq = Sections.finalize_theorem dart4_tau_fan_eq_tauq;;
2644 Sections.end_section "Nonlinear";;
2645
2646 (* Finalization of the section Fan *)
2647 let fan_sol_pos = Sections.finalize_theorem fan_sol_pos;;
2648 let sol_fan_eq = Sections.finalize_theorem sol_fan_eq;;
2649 let rho_pos = Sections.finalize_theorem rho_pos;;
2650 let ln_def = Sections.finalize_theorem ln_def;;
2651 let rho_def = Sections.finalize_theorem rho_def;;
2652 let ln_lo = Sections.finalize_theorem ln_lo;;
2653 let ln_hi = Sections.finalize_theorem ln_hi;;
2654 let yn_lo = Sections.finalize_theorem yn_lo;;
2655 let yn_hi = Sections.finalize_theorem yn_hi;;
2656 let rho_lo = Sections.finalize_theorem rho_lo;;
2657 let rho_hi = Sections.finalize_theorem rho_hi;;
2658 let edge_sym = Sections.finalize_theorem edge_sym;;
2659 let y1_def = Sections.finalize_theorem y1_def;;
2660 let y2_def = Sections.finalize_theorem y2_def;;
2661 let y3_def = Sections.finalize_theorem y3_def;;
2662 let y4_def = Sections.finalize_theorem y4_def;;
2663 let y5_def = Sections.finalize_theorem y5_def;;
2664 let y6_def = Sections.finalize_theorem y6_def;;
2665 let y8_def = Sections.finalize_theorem y8_def;;
2666 let y9_def = Sections.finalize_theorem y9_def;;
2667 let azim_lo = Sections.finalize_theorem azim_lo;;
2668 let azim_hi = Sections.finalize_theorem azim_hi;;
2669 let rhazim_lo = Sections.finalize_theorem rhazim_lo;;
2670 let rhazim_hi = Sections.finalize_theorem rhazim_hi;;
2671 let ye_lo = Sections.finalize_theorem ye_lo;;
2672 let y1_lo = Sections.finalize_theorem y1_lo;;
2673 let y2_lo = Sections.finalize_theorem y2_lo;;
2674 let y1_hi = Sections.finalize_theorem y1_hi;;
2675 let y2_hi = Sections.finalize_theorem y2_hi;;
2676 let y6_lo = Sections.finalize_theorem y6_lo;;
2677 let y4'_eq_y4 = Sections.finalize_theorem y4'_eq_y4;;
2678 let ye_hi_std = Sections.finalize_theorem ye_hi_std;;
2679 let y4_hi_std = Sections.finalize_theorem y4_hi_std;;
2680 let y5_hi_std = Sections.finalize_theorem y5_hi_std;;
2681 let y6_hi_std = Sections.finalize_theorem y6_hi_std;;
2682 let y8_hi_std = Sections.finalize_theorem y8_hi_std;;
2683 let y9_hi_std = Sections.finalize_theorem y9_hi_std;;
2684 let ye_hi_std2 = Sections.finalize_theorem ye_hi_std2;;
2685 let y4_hi_std2 = Sections.finalize_theorem y4_hi_std2;;
2686 let y5_hi_std2 = Sections.finalize_theorem y5_hi_std2;;
2687 let y6_hi_std2 = Sections.finalize_theorem y6_hi_std2;;
2688 let yy10_std = Sections.finalize_theorem yy10_std;;
2689 let azim2_lo = Sections.finalize_theorem azim2_lo;;
2690 let azim2_hi = Sections.finalize_theorem azim2_hi;;
2691 let azim3_lo = Sections.finalize_theorem azim3_lo;;
2692 let azim3_hi = Sections.finalize_theorem azim3_hi;;
2693 let rhazim2_lo = Sections.finalize_theorem rhazim2_lo;;
2694 let rhazim2_hi = Sections.finalize_theorem rhazim2_hi;;
2695 let rhazim3_lo = Sections.finalize_theorem rhazim3_lo;;
2696 let rhazim3_hi = Sections.finalize_theorem rhazim3_hi;;
2697 let y3_lo = Sections.finalize_theorem y3_lo;;
2698 let y3_hi = Sections.finalize_theorem y3_hi;;
2699 let y4_lo = Sections.finalize_theorem y4_lo;;
2700 let y5_lo = Sections.finalize_theorem y5_lo;;
2701 let y7_lo = Sections.finalize_theorem y7_lo;;
2702 let y7_hi = Sections.finalize_theorem y7_hi;;
2703 let y8_lo = Sections.finalize_theorem y8_lo;;
2704 let y9_lo = Sections.finalize_theorem y9_lo;;
2705 let y4'_lo = Sections.finalize_theorem y4'_lo;;
2706 let azim2c = Sections.finalize_theorem azim2c;;
2707 let azim3c = Sections.finalize_theorem azim3c;;
2708 let rhazim2c = Sections.finalize_theorem rhazim2c;;
2709 let rhazim3c = Sections.finalize_theorem rhazim3c;;
2710 let RHA = Sections.finalize_theorem RHA;;
2711 let RHB = Sections.finalize_theorem RHB;;
2712 let RHBLO = Sections.finalize_theorem RHBLO;;
2713 let RHBHI = Sections.finalize_theorem RHBHI;;
2714 let azim_sum = Sections.finalize_theorem azim_sum;;
2715 let rhazim_sum = Sections.finalize_theorem rhazim_sum;;
2716 let sol_lo = Sections.finalize_theorem sol_lo;;
2717 let tau_lo = Sections.finalize_theorem tau_lo;;
2718 let sol_hi = Sections.finalize_theorem sol_hi;;
2719 let sol_sum = Sections.finalize_theorem sol_sum;;
2720 let sol_sum3 = Sections.finalize_theorem sol_sum3;;
2721 let sol_sum4 = Sections.finalize_theorem sol_sum4;;
2722 let sol_sum5 = Sections.finalize_theorem sol_sum5;;
2723 let sol_sum6 = Sections.finalize_theorem sol_sum6;;
2724 let tau_sum = Sections.finalize_theorem tau_sum;;
2725 let tau_sum3 = Sections.finalize_theorem tau_sum3;;
2726 let tau_sum4 = Sections.finalize_theorem tau_sum4;;
2727 let tau_sum5 = Sections.finalize_theorem tau_sum5;;
2728 let tau_sum6 = Sections.finalize_theorem tau_sum6;;
2729 let tauVEF_hi = Sections.finalize_theorem tauVEF_hi;;
2730 let tau_hi = Sections.finalize_theorem tau_hi;;
2731 let ln_fan_ly = Sections.finalize_theorem ln_fan_ly;;
2732 let rho_fan_eq_rho = Sections.finalize_theorem rho_fan_eq_rho;;
2733 let ys_eq = Sections.finalize_theorem ys_eq;;
2734 let inverse_f_fan_pair_ext_power2 = Sections.finalize_theorem inverse_f_fan_pair_ext_power2;;
2735 let y78_eq = Sections.finalize_theorem y78_eq;;
2736 let y9_eq = Sections.finalize_theorem y9_eq;;
2737 let ys_eq_alt = Sections.finalize_theorem ys_eq_alt;;
2738 let azim_fan_eq_dih_y = Sections.finalize_theorem azim_fan_eq_dih_y;;
2739 let rhazim_fan_eq_rhazim = Sections.finalize_theorem rhazim_fan_eq_rhazim;;
2740 let delta_y_not_neg = Sections.finalize_theorem delta_y_not_neg;;
2741 let dart3_yf_eq = Sections.finalize_theorem dart3_yf_eq;;
2742 let dart3_y_invf_eq = Sections.finalize_theorem dart3_y_invf_eq;;
2743 let dart3_azim_fan_eq_dih_y = Sections.finalize_theorem dart3_azim_fan_eq_dih_y;;
2744 let dart3_rhazim_fan_eq_rhazim = Sections.finalize_theorem dart3_rhazim_fan_eq_rhazim;;
2745 let dart3_sol_fan_eq_sol = Sections.finalize_theorem dart3_sol_fan_eq_sol;;
2746 let dart3_azim2_fan_eq_dih2_y = Sections.finalize_theorem dart3_azim2_fan_eq_dih2_y;;
2747 let dart3_azim3_fan_eq_dih3_y = Sections.finalize_theorem dart3_azim3_fan_eq_dih3_y;;
2748 let dart3_rhazim2_fan_eq_rhazim2 = Sections.finalize_theorem dart3_rhazim2_fan_eq_rhazim2;;
2749 let dart3_rhazim3_fan_eq_rhazim3 = Sections.finalize_theorem dart3_rhazim3_fan_eq_rhazim3;;
2750 let dart4_f_fan_pair_ext_power2 = Sections.finalize_theorem dart4_f_fan_pair_ext_power2;;
2751 let dart4_yf_eq = Sections.finalize_theorem dart4_yf_eq;;
2752 let dart4_y_invf_eq = Sections.finalize_theorem dart4_y_invf_eq;;
2753 let dart4_cross_eq_y4' = Sections.finalize_theorem dart4_cross_eq_y4';;
2754 let dart4_cross_eq_enclosed = Sections.finalize_theorem dart4_cross_eq_enclosed;;
2755 let dart3_tauVEF_eq_taum = Sections.finalize_theorem dart3_tauVEF_eq_taum;;
2756 let dart4_tauVEF_eq_tauq = Sections.finalize_theorem dart4_tauVEF_eq_tauq;;
2757 let dart3_tau_fan_eq_taum = Sections.finalize_theorem dart3_tau_fan_eq_taum;;
2758 let dart4_tau_fan_eq_tauq = Sections.finalize_theorem dart4_tau_fan_eq_tauq;;
2759 Sections.end_section "Fan";;
2760
2761 (* Section Sym *)
2762 Sections.begin_section "Sym";;
2763 (Sections.add_section_var (mk_var ("y1", (`:real`))); Sections.add_section_var (mk_var ("y2", (`:real`))); Sections.add_section_var (mk_var ("y3", (`:real`))); Sections.add_section_var (mk_var ("y4", (`:real`))); Sections.add_section_var (mk_var ("y5", (`:real`))); Sections.add_section_var (mk_var ("y6", (`:real`))));;
2764
2765 (* Lemma sol_y_sym_reflect *)
2766 let sol_y_sym_reflect = Sections.section_proof []
2767 `sol_y y1 y2 y3 y4 y5 y6 = sol_y y1 y3 y2 y4 y6 y5`
2768 [
2769    ((repeat_tactic 1 9 (((use_arg_then2 ("sol_y", [sol_y]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))));
2770    ((((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_EQ_ADD_LCANCEL", [REAL_EQ_ADD_LCANCEL]))(thm_tac (new_rewrite [] [])))));
2771    ((repeat_tactic 1 9 (((use_arg_then2 ("REAL_ADD_ASSOC", [REAL_ADD_ASSOC]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_EQ_ADD_RCANCEL", [REAL_EQ_ADD_RCANCEL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ADD_SYM", [REAL_ADD_SYM]))(thm_tac (new_rewrite [] [])))));
2772    ((((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_EQ_ADD_LCANCEL", [REAL_EQ_ADD_LCANCEL]))(thm_tac (new_rewrite [] [])))));
2773    ((((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
2774 ];;
2775
2776 (* Lemma taum_sym_reflect *)
2777 let taum_sym_reflect = Sections.section_proof []
2778 `taum y1 y2 y3 y4 y5 y6 = taum y1 y3 y2 y4 y6 y5`
2779 [
2780    ((repeat_tactic 1 9 (((use_arg_then2 ("taum", [taum]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("sol_y_sym_reflect", [sol_y_sym_reflect]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_EQ_ADD_LCANCEL", [REAL_EQ_ADD_LCANCEL]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("lnazim", [lnazim]))(thm_tac (new_rewrite [] []))))));
2781    (((repeat_tactic 1 9 (((use_arg_then2 ("REAL_MUL_LNEG", [REAL_MUL_LNEG]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("REAL_EQ_MUL_LCANCEL", [REAL_EQ_MUL_LCANCEL]))(thm_tac (new_rewrite [] []))))) THEN (DISJ2_TAC));
2782    ((((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_EQ_ADD_LCANCEL", [REAL_EQ_ADD_LCANCEL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ADD_SYM", [REAL_ADD_SYM]))(thm_tac (new_rewrite [] [])))));
2783    ((((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_EQ_ADD_LCANCEL", [REAL_EQ_ADD_LCANCEL]))(thm_tac (new_rewrite [] [])))));
2784    ((((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
2785 ];;
2786
2787 (* Finalization of the section Sym *)
2788 let sol_y_sym_reflect = Sections.finalize_theorem sol_y_sym_reflect;;
2789 let taum_sym_reflect = Sections.finalize_theorem taum_sym_reflect;;
2790 Sections.end_section "Sym";;
2791
2792 (* Section NonlinearSplit *)
2793 Sections.begin_section "NonlinearSplit";;
2794 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
2795 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
2796 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
2797 (Sections.add_section_hyp "f_surr" (`fully_surrounded (V,E)`));;
2798 (Sections.add_section_hyp "packV" (`packing V`));;
2799 (Sections.add_section_hyp "subV" (`V SUBSET ball_annulus`));;
2800
2801 (* Let dart1_eq *)
2802 Sections.add_section_lemma "dart1_eq" (Sections.section_proof []
2803 `dart1_of_fan (V,E) = dart_of_fan (V,E)`
2804 [
2805    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
2806 ]);;
2807
2808 (* Let dartH *)
2809 Sections.add_section_lemma "dartH" (Sections.section_proof []
2810 `dart (hypermap_of_fan (V,E)) = dart_of_fan (V,E)`
2811 [
2812    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
2813 ]);;
2814
2815 (* Let fH *)
2816 Sections.add_section_lemma "fH" (Sections.section_proof []
2817 `face_map (hypermap_of_fan (V,E)) = f_fan_pair_ext (V,E)`
2818 [
2819    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
2820 ]);;
2821
2822 (* Let nH *)
2823 Sections.add_section_lemma "nH" (Sections.section_proof []
2824 `node_map (hypermap_of_fan (V,E)) = n_fan_pair_ext (V,E)`
2825 [
2826    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
2827 ]);;
2828
2829 (* Section Dart *)
2830 Sections.begin_section "Dart";;
2831 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
2832 (Sections.add_section_hyp "d_in" (`d IN dart_of_fan (V,E)`));;
2833
2834 (* Let split_eq *)
2835 Sections.add_section_lemma "split_eq" (Sections.section_proof []
2836 `split_fan_face (V,E) d = V, add_diag (V,E) d`
2837 [
2838    (((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]));
2839    (((((use_arg_then2 ("split_fan_face", [split_fan_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2840 ]);;
2841
2842 (* Lemma add_diag_sigma_eq *)
2843 let add_diag_sigma_eq = Sections.section_proof ["v";"w"]
2844 `v,w IN dart_of_fan (V,E)
2845         /\ ~(v = SND d) /\ ~(v = sigma_fan (vec 0) V E (FST d) (SND d))
2846         ==> sigma_fan (vec 0) V (add_diag (V,E) d) v w = sigma_fan (vec 0) V E v w`
2847 [
2848    (((use_arg_then2 ("split_eq", [])) (disch_tac [])) THEN (clear_assumption "split_eq") THEN ((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["a"]) THEN (move ["b"]) THEN (move ["ab_in"]) THEN (move ["split_eq"]) THEN (simp_tac) THEN (case THEN ((move ["vw_in"]) THEN (move ["neq"]))));
2849    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("n_split_fan_face_eq1", [n_split_fan_face_eq1])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("ab_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`v,w`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC)) THEN (ANTS_TAC));
2850    (((((fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("ab_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("neq", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2851    (((((use_arg_then2 ("split_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("n_fan_pair", [n_fan_pair]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2852 ];;
2853
2854 (* Lemma inverse_f_ext_d_split_eq *)
2855 let inverse_f_ext_d_split_eq = Sections.section_proof []
2856 `inverse (f_fan_pair_ext (V,add_diag (V,E) d)) d
2857         = inverse (f_fan_pair_ext (V,E)) d`
2858 [
2859    (((use_arg_then2 ("add_diag_sigma_eq", [add_diag_sigma_eq])) (disch_tac [])) THEN (clear_assumption "add_diag_sigma_eq") THEN ((use_arg_then2 ("split_eq", [])) (disch_tac [])) THEN (clear_assumption "split_eq") THEN ((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (simp_tac) THEN (move ["vw_in"]) THEN (move ["split_eq"]) THEN (move ["sigma_eq"]));
2860    ((((use_arg_then2 ("vw_in", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["vw_in1"])));
2861    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["fan2"]) THEN (case THEN (move ["dart2_eq"])) THEN (move ["f_surr2"])))));
2862    (in_tac ["fan2"; "f_surr2"; "dart2_eq"] false (((use_arg_then2 ("split_eq", []))(thm_tac (new_rewrite [] [])))));
2863    (((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSE_EQ", [PERMUTES_INVERSE_EQ])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))));
2864    ((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2865    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("sigma_in_dart1", [sigma_in_dart1])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["vw'_in1"])));
2866    ((((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart_switch", [dart_switch]))(thm_tac (new_rewrite [] [])))));
2867    ((((use_arg_then2 ("dart2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw'_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("sigma_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))));
2868    (((((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ", [PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2869    ((((fun arg_tac -> (use_arg_then2 ("f_fan_pair_last", [f_fan_pair_last])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2870    (((((use_arg_then2 ("dart2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2871 ];;
2872
2873 (* Lemma ys_split_eq *)
2874 let ys_split_eq = Sections.section_proof []
2875 `y3_fan (V,add_diag (V,E) d) d = y3_fan (V,E) d
2876         /\ y4'_fan (V,add_diag (V,E) d) d = y4'_fan (V,E) d
2877         /\ y5_fan (V,add_diag (V,E) d) d = y5_fan (V,E) d`
2878 [
2879    (((repeat_tactic 1 9 (((fun arg_tac ->(use_arg_then2 ("y3_fan", [y3_fan]))(fun tmp_arg1 -> (fun arg_tac ->(use_arg_then2 ("y4'_fan", [y4'_fan]))(fun tmp_arg1 -> (use_arg_then2 ("y5_fan", [y5_fan]))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(fun tmp_arg2 -> arg_tac (Arg_theorem (CONJ (get_arg_thm tmp_arg1) (get_arg_thm tmp_arg2))))))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("inverse_f_ext_d_split_eq", [inverse_f_ext_d_split_eq]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2880 ];;
2881
2882 (* Lemma ys_split_eq2 *)
2883 let ys_split_eq2 = Sections.section_proof ["v";"w"]
2884 `let f = face (hypermap_of_fan (V,E)) (v,w) in
2885          let w' = sigma_fan (vec 0) V E v w in
2886                 v,w IN dart_of_fan (V,E) /\ 3 < CARD f
2887                 ==> y1_fan (w',w) = y3_fan (V,E) (v,w)
2888                 /\ y2_fan (w',w) = y2_fan (v,w)
2889                 /\ y3_fan (V, add_diag (V,E) (v,w)) (w',w) = y7_fan (V,E) (v,w)
2890                 /\ y5_fan (V, add_diag (V,E) (v,w)) (w',w) = y8_fan (V,E) (v,w)
2891                 /\ y6_fan (w',w) = y4'_fan (V,E) (v,w)
2892                 /\ y9_fan (V, add_diag (V,E) (v,w)) (w',w) = y9_fan (V,E) (v,w)`
2893 [
2894    (repeat_tactic 1 9 ((CONV_TAC let_CONV)));
2895    (BETA_TAC THEN (case THEN ((move ["vw_in"]) THEN (move ["card_f"]))));
2896    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
2897    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_eq", [ys_eq])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y1_fan", [y1_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y2_fan", [y2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("DIST_SYM", [DIST_SYM])) (fun fst_arg -> (use_arg_then2 ("w'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2898    ((((use_arg_then2 ("y3_fan", [y3_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))));
2899    ((((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE inverse_f_fan_pair_ext_add_diag)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2900    ((((use_arg_then2 ("y7_fan", [y7_fan]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("o_THM", [o_THM]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2901    ((repeat_tactic 1 9 (((use_arg_then2 ("y9_fan", [y9_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE f_fan_pair_ext_power_add_diag)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2902    (((((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_surr", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("leqnn", [leqnn]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
2903 ];;
2904
2905 (* Finalization of the section Dart *)
2906 let add_diag_sigma_eq = Sections.finalize_theorem add_diag_sigma_eq;;
2907 let inverse_f_ext_d_split_eq = Sections.finalize_theorem inverse_f_ext_d_split_eq;;
2908 let ys_split_eq = Sections.finalize_theorem ys_split_eq;;
2909 let ys_split_eq2 = Sections.finalize_theorem ys_split_eq2;;
2910 Sections.end_section "Dart";;
2911
2912 (* Section Split4 *)
2913 Sections.begin_section "Split4";;
2914 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
2915 (Sections.add_section_hyp "d_in" (`d IN darts_k 4 (hypermap_of_fan (V,E))`));;
2916
2917 (* Let card_f *)
2918 Sections.add_section_lemma "card_f" (Sections.section_proof []
2919 `CARD (face (hypermap_of_fan (V,E)) d) = 4`
2920 [
2921    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2922 ]);;
2923
2924 (* Let d_in_dart *)
2925 Sections.add_section_lemma "d_in_dart" (Sections.section_proof []
2926 `d IN dart_of_fan (V,E)`
2927 [
2928    ((((use_arg_then2 ("d_in", [])) (disch_tac [])) THEN (clear_assumption "d_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2929 ]);;
2930
2931 (* Lemma dart4_azim2_eq_sum *)
2932 let dart4_azim2_eq_sum = Sections.section_proof []
2933 `azim2_fan (V,E) d
2934         = dih_y (y2_fan d) (y3_fan (V,E) d) (y1_fan d)
2935                 (y5_fan (V,E) d) (y6_fan d) (y4'_fan (V,E) d) +
2936           dih_y (y2_fan d) (y7_fan (V,E) d) (y3_fan (V,E) d)
2937                 (y8_fan (V,E) d) (y4'_fan (V,E) d) (y9_fan (V,E) d)`
2938 [
2939    (((use_arg_then2 ("card_f", [])) (disch_tac [])) THEN (clear_assumption "card_f") THEN ((use_arg_then2 ("d_in_dart", [])) (disch_tac [])) THEN (clear_assumption "d_in_dart") THEN ((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]) THEN (move ["card_f"]));
2940    ((((use_arg_then2 ("azim2_fan", [azim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
2941    ((fun arg_tac -> arg_tac (Arg_term (`3 < CARD (face (hypermap_of_fan (V,E)) (v,w))`))) (term_tac (have_gen_tac [](move ["card_gt3"]))));
2942    ((((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac));
2943    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE azim_split_fan_face_add))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_gt3", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))));
2944    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_split_fan_face", [fan_split_fan_face])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2945    ((fun arg_tac -> arg_tac (Arg_term (`split_fan_face (V,E) (v,w) = V, add_diag (V,E) (v,w)`))) (term_tac (have_gen_tac [](move ["split_eq"]))));
2946    (((((use_arg_then2 ("split_fan_face", [split_fan_face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("add_diag", [add_diag]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2947    ((((use_arg_then2 ("split_eq", []))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["fan2"])) THEN (case THEN (move ["dart2"])) THEN (move ["f_surr2"]));
2948    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
2949    ((fun arg_tac -> arg_tac (Arg_term (`w,w' IN dart_of_fan (V,add_diag (V,E) (v,w))`))) (term_tac (have_gen_tac [](move ["ww'_in"]))));
2950    (((((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SING", [IN_SING]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2951    (congr_tac (`_1 + _2:real`));
2952    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2953    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_eq", [ys_eq])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_eq", [ys_eq])) (fun fst_arg -> (use_arg_then2 ("ww'_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2954    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V (add_diag (V,E) (v,w))  w w' = v`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("DIST_SYM", [DIST_SYM])) (fun fst_arg -> (use_arg_then2 ("v", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
2955    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE n_split_fan_face))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_gt3", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2956    ((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])));
2957    ((((((use_arg_then2 ("split_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("n_fan_pair", [n_fan_pair]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((case THEN (move ["_"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) THEN (done_tac));
2958    ((fun arg_tac -> arg_tac (Arg_term (`f_fan_pair (V,E) (v,w)`))) (term_tac (set_tac "d2")));
2959    ((fun arg_tac -> arg_tac (Arg_term (`d2 IN dart_of_fan (V,add_diag (V,E) (v,w))`))) (term_tac (have_gen_tac [](move ["d2_in"]))));
2960    ((((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("POWER_1", [POWER_1])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`f_fan_pair (V,E)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))));
2961    (((((use_arg_then2 ("f_fan_pair_power", [f_fan_pair_power]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2962    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq])) (fun fst_arg -> (use_arg_then2 ("f_surr2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["dart2_1"])));
2963    ((fun arg_tac -> arg_tac (Arg_term (`d2 = f_fan_pair_ext (V,add_diag (V,E) (v,w)) (w',w)`))) (term_tac (have_gen_tac [](move ["d2_eq"]))));
2964    ((((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE f_split_fan_face))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("split_eq", []))(thm_tac (new_rewrite [] [])))));
2965    (((((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart2_1", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart_switch", [dart_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ww'_in", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2966    ((fun arg_tac -> arg_tac (Arg_term (`w', w IN dart_of_fan (V,add_diag (V,E) (v,w))`))) (term_tac (have_gen_tac [](move ["w'w_in"]))));
2967    (((((use_arg_then2 ("dart2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_INSERT", [IN_INSERT]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2968    ((fun arg_tac -> arg_tac (Arg_term (`w',w IN darts_k 3 (hypermap_of_fan (V,add_diag (V,E) (v,w)))`))) (term_tac (have_gen_tac [](move ["w'w_in3"]))));
2969    ((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'w_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))));
2970    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE face_split_fan_face_explicit))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_gt3", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2971    ((((use_arg_then2 ("split_eq", []))(thm_tac (new_rewrite [] [])))) THEN ((fun arg_tac -> arg_tac (Arg_term (`hypermap_of_fan _`))) (term_tac (set_tac "H2"))));
2972    (((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["_"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac));
2973    ((fun arg_tac -> arg_tac (Arg_term (`d2 IN darts_k 3 (hypermap_of_fan (V,add_diag (V,E) (v,w)))`))) (term_tac (have_gen_tac [](move ["d2_in3"]))));
2974    (((((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
2975    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
2976    ((((use_arg_then2 ("y4'_eq_y4", [y4'_eq_y4]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("dart3_yf_eq", [dart3_yf_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y4'_eq_y4", [y4'_eq_y4]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2977    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_eq", [ys_eq])) (fun fst_arg -> (use_arg_then2 ("w'w_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_eq", [ys_eq])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2978    ((repeat_tactic 1 9 (((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE y78_eq))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE y9_eq)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))));
2979    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w' v`))) (term_tac (set_tac "u")));
2980    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V (add_diag (V,E) (v,w)) w' w = u`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("DIST_SYM", [DIST_SYM])) (fun fst_arg -> (use_arg_then2 ("w", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
2981    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE n_split_fan_face))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_gt3", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
2982    ((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["eq"])) THEN (move ["_"]));
2983    ((((use_arg_then2 ("eq", [])) (disch_tac [])) THEN (clear_assumption "eq") THEN BETA_TAC) THEN (((((use_arg_then2 ("split_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("n_fan_pair", [n_fan_pair]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("u_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["_"]))) THEN (done_tac));
2984 ];;
2985
2986 (* Lemma tauq_cross_split *)
2987 let tauq_cross_split = Sections.section_proof []
2988 `tauq (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (y4'_fan (V,E) d)
2989         (y5_fan (V,E) d) (y6_fan d) (y7_fan (V,E) d) (y8_fan (V,E) d) (y9_fan (V,E) d)
2990       = taum (y1_fan d) (y3_fan (V,E) d) (y7_fan (V,E) d)
2991                  (y8_fan (V,E) d) (y4'_fan (V,E) (f_fan_pair_ext (V,E) d)) (y5_fan (V,E) d)
2992         + taum (y1_fan d) (y2_fan d) (y7_fan (V,E) d)
2993                 (y9_fan (V,E) d) (y4'_fan (V,E) (f_fan_pair_ext (V,E) d)) (y6_fan d)`
2994 [
2995    ((((use_arg_then2 ("dart4_tauVEF_eq_tauq", [dart4_tauVEF_eq_tauq]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2996    (((fun arg_tac -> (use_arg_then2 ("lemma_face_identity", [lemma_face_identity])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [])))));
2997    ((((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("face", [face]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("POWER_1", [POWER_1]))(gsym_then (thm_tac (new_rewrite [2] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("lemma_orbit_power", [lemma_orbit_power])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`dart_of_fan (V,E)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("orbit_reflect", [orbit_reflect]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
2998    (((((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("face_map_and_darts", [face_map_and_darts]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
2999    ((((use_arg_then2 ("dart4_tauVEF_eq_tauq", [dart4_tauVEF_eq_tauq]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
3000    (((repeat_tactic 1 9 (((use_arg_then2 ("dart4_yf_eq", [dart4_yf_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("tauq", [tauq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ADD_SYM", [REAL_ADD_SYM]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("taum_sym", [taum_sym]))(thm_tac (new_rewrite [] []))))) THEN (congr_tac (`_1 + _2:real`)));
3001    ((((use_arg_then2 ("taum_sym_reflect", [taum_sym_reflect]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3002    (((((use_arg_then2 ("taum_sym", [taum_sym]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("taum_sym_reflect", [taum_sym_reflect]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3003 ];;
3004
3005 (* Finalization of the section Split4 *)
3006 let dart4_azim2_eq_sum = Sections.finalize_theorem dart4_azim2_eq_sum;;
3007 let tauq_cross_split = Sections.finalize_theorem tauq_cross_split;;
3008 Sections.end_section "Split4";;
3009
3010 (* Section MoreSplit4 *)
3011 Sections.begin_section "MoreSplit4";;
3012 (Sections.add_section_var (mk_var ("d", (`:real^3#real^3`))));;
3013 (Sections.add_section_hyp "d_in" (`d IN darts_k 4 (hypermap_of_fan (V,E))`));;
3014
3015 (* Lemma dart4_azim_cross_split *)
3016 let dart4_azim_cross_split = Sections.section_proof []
3017 `azim_dart (V,E) d
3018       = dih_y (y1_fan d) (y3_fan (V,E) d) (y7_fan (V,E) d)
3019                  (y8_fan (V,E) d) (y4'_fan (V,E) (f_fan_pair_ext (V,E) d)) (y5_fan (V,E) d)
3020         + dih_y (y1_fan d) (y2_fan d) (y7_fan (V,E) d)
3021                 (y9_fan (V,E) d) (y4'_fan (V,E) (f_fan_pair_ext (V,E) d)) (y6_fan d)`
3022 [
3023    ((fun arg_tac -> arg_tac (Arg_term (`azim_dart (V,E) d = azim2_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
3024    (((((use_arg_then2 ("azim2_fan", [azim2_fan]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3025    ((((use_arg_then2 ("dart4_azim2_eq_sum", [dart4_azim2_eq_sum]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
3026    (((repeat_tactic 1 9 (((use_arg_then2 ("dart4_y_invf_eq", [dart4_y_invf_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_cross_eq_y4'", [dart4_cross_eq_y4']))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("Nonlinear_lemma.dih_y_sym", [Nonlinear_lemma.dih_y_sym]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3027 ];;
3028
3029 (* Finalization of the section MoreSplit4 *)
3030 let dart4_azim_cross_split = Sections.finalize_theorem dart4_azim_cross_split;;
3031 Sections.end_section "MoreSplit4";;
3032
3033 (* Finalization of the section NonlinearSplit *)
3034 let add_diag_sigma_eq = Sections.finalize_theorem add_diag_sigma_eq;;
3035 let inverse_f_ext_d_split_eq = Sections.finalize_theorem inverse_f_ext_d_split_eq;;
3036 let ys_split_eq = Sections.finalize_theorem ys_split_eq;;
3037 let ys_split_eq2 = Sections.finalize_theorem ys_split_eq2;;
3038 let dart4_azim2_eq_sum = Sections.finalize_theorem dart4_azim2_eq_sum;;
3039 let tauq_cross_split = Sections.finalize_theorem tauq_cross_split;;
3040 let dart4_azim_cross_split = Sections.finalize_theorem dart4_azim_cross_split;;
3041 Sections.end_section "NonlinearSplit";;
3042
3043 (* Section QuadIneqs *)
3044 Sections.begin_section "QuadIneqs";;
3045 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
3046 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
3047 (Sections.add_section_hyp "h_fan" (`lp_fan (V,E)`));;
3048
3049 (* Lemma y4'_lo_2h0 *)
3050 let y4'_lo_2h0 = Sections.section_proof ["k";"d"]
3051 `3 < k /\ d IN darts_k k (hypermap_of_fan (V,E))
3052         ==> #2.52 <= y4'_fan (V,E) d`
3053 [
3054    ((((use_arg_then2 ("h_fan", [])) (disch_tac [])) THEN (clear_assumption "h_fan") THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["fanV"])) THEN (case THEN (move ["f_surr"])) THEN (case THEN (move ["diag_dist"])) THEN (move ["_"])));
3055    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]));
3056    (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["k_gt"])) THEN (case THEN (move ["vw_in"])) THEN (move ["card_f"]));
3057    ((((use_arg_then2 ("vw_in", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (move ["vw_in1"])));
3058    ((((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("diag_dist", []))(thm_tac (new_rewrite [] [])))));
3059    ((((fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("sigma_fan_inV", [sigma_fan_inV]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("sigma_fan_not_fixed", [sigma_fan_not_fixed]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
3060    ((((use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((simp_tac THEN TRY done_tac)));
3061    ((((use_arg_then2 ("fully_surrounded_diag_not_in_dart", [fully_surrounded_diag_not_in_dart]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3062 ];;
3063
3064 (* Lemma dart4_y4'_lo *)
3065 let dart4_y4'_lo = Sections.section_proof ["d"]
3066 `d IN darts_k 4 (hypermap_of_fan (V,E))
3067         ==> #2.52 <= y4'_fan (V,E) d`
3068 [
3069    (((DISCH_THEN (fun snd_th -> (use_arg_then2 ("y4'_lo_2h0", [y4'_lo_2h0])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (DISCH_THEN apply_tac)) THEN (arith_tac) THEN (done_tac));
3070 ];;
3071
3072 (* Lemma y4'_hi *)
3073 let y4'_hi = Sections.section_proof ["d"]
3074 `d IN dart_of_fan (V,E)
3075         ==> y4'_fan (V,E) d <= &4 * h0`
3076 [
3077    (in_tac ["h_fan"] false ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] []))))));
3078    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]));
3079    ((((use_arg_then2 ("vw_in", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (move ["vw_in1"])));
3080    ((((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
3081    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
3082    (((use_arg_then2 ("DIST_TRIANGLE_LE", [DIST_TRIANGLE_LE])) (thm_tac apply_tac)) THEN ((fun arg_tac -> arg_tac (Arg_term (`vec 0`))) (term_tac exists_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("DIST_0", [DIST_0]))(thm_tac (new_rewrite [] []))))));
3083    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`&4 * h0 = &2 * h0 + &2 * h0`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
3084    ((((use_arg_then2 ("REAL_LE_ADD2", [REAL_LE_ADD2]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("iffLR", [iffLR])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("Fnjlbxs.in_ball_annulus", [Fnjlbxs.in_ball_annulus])) (fun fst_arg -> (use_arg_then2 ("w", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((fun arg_tac -> (use_arg_then2 ("iffLR", [iffLR])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("Fnjlbxs.in_ball_annulus", [Fnjlbxs.in_ball_annulus])) (fun fst_arg -> (use_arg_then2 ("w'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
3085    (((((use_arg_then2 ("h_fan", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3086    (((((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("h_fan", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sigma_fan_inV", [sigma_fan_inV]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3087 ];;
3088
3089 (* Section Y4_hi_bound *)
3090 Sections.begin_section "Y4_hi_bound";;
3091 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "3287695934")).ineq));;
3092
3093 (* Lemma dart4_y4'_hi *)
3094 let dart4_y4'_hi = Sections.section_proof ["d"]
3095 `d IN darts_k 4 (hypermap_of_fan (V,E))
3096         ==> y5_fan (V,E) d <= #2.52
3097         /\ y6_fan d <= #2.52
3098         /\ y8_fan (V,E) d <= #2.52
3099         /\ y9_fan (V,E) d <= #2.52
3100         ==> y4'_fan (V,E) d <= #4.37`
3101 [
3102    ((((use_arg_then2 ("h_fan", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["fanV"])) THEN (case THEN (move ["f_surr"])) THEN (move ["h_fan2"])));
3103    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartH"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["fH"])))));
3104    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in4"]));
3105    ((((use_arg_then2 ("vw_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["vw_in"])) THEN (move ["card_f"]) THEN (move ["bounds"])));
3106    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("REAL_LE_TOTAL", [REAL_LE_TOTAL])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`#4.37`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN case THEN ((TRY done_tac)) THEN (move ["y4_bound"]));
3107    (((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("ineq", [ineq])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y9_fan (V,E) (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y6_fan (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) (f_fan_pair_ext (V,E) (v,w))`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y5_fan (V,E) (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y8_fan (V,E) (v,w)`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC);
3108    (((((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (ANTS_TAC));
3109    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`&2 * h0 = #2.52`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac)));
3110    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#2.0 = &2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
3111    ((((use_arg_then2 ("y4_bound", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y4'_hi", [y4'_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3112    ((((fun arg_tac -> (use_arg_then2 ("y9_lo", [y9_lo])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y8_lo", [y8_lo])) (fun fst_arg -> (use_arg_then2 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3113    ((((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
3114    (((((use_arg_then2 ("y4'_hi", [y4'_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3115    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_eq", [ys_eq])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE y78_eq))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE y9_eq))) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3116    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
3117    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w' v`))) (term_tac (set_tac "u")));
3118    ((((use_arg_then2 ("dart4_cross_eq_y4'", [dart4_cross_eq_y4']))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3119    ((((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`inverse _`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] [(`FST _`)]))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(gsym_then (thm_tac (new_rewrite [] []))))));
3120    ((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE inverse_f_fan_pair_ext_power2)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("u_def", []))(thm_tac (new_rewrite [] [])))));
3121    ((((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))));
3122    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("vw_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
3123    ((((use_arg_then2 ("delta_y", [delta_y]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_POW_2", [REAL_POW_2]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("DELTA_EQ_DELTA_X", [DELTA_EQ_DELTA_X]))(gsym_then (thm_tac (new_rewrite [] []))))));
3124    (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("DIST_SYM", [DIST_SYM])) (fun fst_arg -> (use_arg_then2 ("v", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
3125    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Collect_geom.DELTA_POS_4POINTS", [Collect_geom.DELTA_POS_4POINTS])) (fun fst_arg -> (use_arg_then2 ("w", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("w'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("u", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("v", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
3126    ((arith_tac) THEN (done_tac));
3127 ];;
3128
3129 (* Section Std *)
3130 Sections.begin_section "Std";;
3131 (Sections.add_section_hyp "std" (`E = ESTD V`));;
3132
3133 (* Lemma dart4_y4'_hi_std *)
3134 let dart4_y4'_hi_std = Sections.section_proof ["d"]
3135 `d IN darts_k 4 (hypermap_of_fan (V,E))
3136         ==> y4'_fan (V,E) d <= #4.37`
3137 [
3138    ((BETA_TAC THEN (move ["d_in4"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["_"])))));
3139    (((fun arg_tac -> (use_arg_then2 ("dart4_y4'_hi", [dart4_y4'_hi])) (fun fst_arg -> (use_arg_then2 ("d_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
3140    ((in_tac ["h_fan"] false (((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] []))))) THEN (in_tac ["d_in"] false ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)))));
3141    (((((use_arg_then2 ("y5_hi_std2", [y5_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_hi_std2", [y6_hi_std2])) (fun fst_arg -> (use_arg_then2 ("std", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_hi_std", [y8_hi_std]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_hi_std", [y9_hi_std]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3142 ];;
3143
3144 (* Finalization of the section Std *)
3145 let dart4_y4'_hi_std = Sections.finalize_theorem dart4_y4'_hi_std;;
3146 Sections.end_section "Std";;
3147
3148 (* Finalization of the section Y4_hi_bound *)
3149 let dart4_y4'_hi = Sections.finalize_theorem dart4_y4'_hi;;
3150 let dart4_y4'_hi_std = Sections.finalize_theorem dart4_y4'_hi_std;;
3151 Sections.end_section "Y4_hi_bound";;
3152
3153 (* Lemma dart4_delta_y_not_neg2 *)
3154 let dart4_delta_y_not_neg2 = Sections.section_proof ["d"]
3155 `d IN darts_k 4 (hypermap_of_fan (V,E))
3156         ==> ~(delta_y (y7_fan (V,E) d) (y2_fan d) (y3_fan (V,E) d)
3157                 (y4'_fan (V,E) d) (y8_fan (V,E) d) (y9_fan (V,E) d) < &0)`
3158 [
3159    ((((use_arg_then2 ("h_fan", [])) (disch_tac [])) THEN (clear_assumption "h_fan") THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["fanV"])) THEN (case THEN (move ["f_surr"])) THEN (case THEN (move ["_"])) THEN (case THEN ((move ["subV"]) THEN (move ["packV"]))) THEN (move ["d_in4"])));
3160    ((fun arg_tac -> (use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["dartH"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["fH"])))));
3161    ((((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["_"])))));
3162    ((fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext (V,E)`))) (term_tac (set_tac "f")));
3163    ((fun arg_tac -> arg_tac (Arg_term (`f (f d) IN dart_of_fan (V,E) /\ f d IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](case THEN ((move ["ffd_in"]) THEN (move ["fd_in"]))))));
3164    ((((fun arg_tac -> (use_arg_then2 ("o_THM", [o_THM])) (fun fst_arg -> (use_arg_then2 ("f", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("POWER_2", [POWER_2]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("lemma_dart_invariant_power_face", [lemma_dart_invariant_power_face]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3165    ((((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3166    ((fun arg_tac -> arg_tac (Arg_term (`f d IN darts_k 4 (hypermap_of_fan (V,E))`))) (term_tac (have_gen_tac [](move ["fd_in4"]))));
3167    (((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3168    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("delta_y_not_neg", [delta_y_not_neg])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("f_surr", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("packV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("subV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("ffd_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
3169    ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [1; 3; 5; 7; 9; 11] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("dart4_yf_eq", [dart4_yf_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_cross_eq_y4'", [dart4_cross_eq_y4']))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3170    ((((use_arg_then2 ("f_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("PERMUTES_INVERSES", [PERMUTES_INVERSES])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN", [F_FAN_PAIR_EXT_PERMUTES_DART_OF_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
3171    ((repeat_tactic 1 9 (((use_arg_then2 ("dart4_yf_eq", [dart4_yf_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
3172    ((((fun arg_tac -> arg_tac (Arg_theorem ((GEN_ALL o CONJUNCT2 o SPEC_ALL) Merge_ineq.delta_y_sym)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3173 ];;
3174
3175 (* Section Ineq119 *)
3176 Sections.begin_section "Ineq119";;
3177 (Sections.add_section_hyp "h_main" ((hd (Ineq.getexact "3862621143 revised")).ineq));;
3178 (Sections.add_section_hyp "h_reduced" ((hd (Ineq.getexact "3862621143 side")).ineq));;
3179 (Sections.add_section_hyp "h_front" ((hd (Ineq.getexact "3862621143 front")).ineq));;
3180 (Sections.add_section_hyp "h_back" ((hd (Ineq.getexact "3862621143 back")).ineq));;
3181 (Sections.add_section_hyp "h_back2" ((hd (Ineq.getexact "6988401556")).ineq));;
3182 (Sections.add_section_hyp "h_y4" ((hd (Ineq.getexact "3287695934")).ineq));;
3183
3184 (* Lemma ineq119_tauVEF *)
3185 let ineq119_tauVEF = Sections.section_proof ["d"]
3186 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3187         y5_fan (V,E) d <= #2.52
3188         /\ y6_fan d <= #2.52
3189         /\ y8_fan (V,E) d <= #2.52
3190         /\ y9_fan (V,E) d <= #2.52
3191    ==> tauVEF (V,E,face (hypermap_of_fan (V,E)) d) - #0.453 * azim_dart (V,E) d + #0.777 >= &0`
3192 [
3193    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("h_fan", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN (move ["h_fan2"])));
3194    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
3195    ((((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN (clear_assumption "d_in4") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3196    ((((use_arg_then2 ("dart4_tauVEF_eq_tauq", [dart4_tauVEF_eq_tauq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))));
3197    ((fun arg_tac -> arg_tac (Arg_term (`#2.0 = &2 /\ &2 * h0 = #2.52 /\ #0.0 = &0 /\ tame_table_d 2 1 = #0.103`))) (term_tac (have_gen_tac [](move ["eqs"]))));
3198    (((((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("tame_table_d", [tame_table_d]))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
3199    (in_tac ["h_main"; "h_reduced"; "h_front"; "h_back"; "h_back2"] false ((((use_arg_then2 ("Ineq.dart_std4", [Ineq.dart_std4]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Ineq.apex_flat", [Ineq.apex_flat]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] [])))))));
3200    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("h_main", [])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y1_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y2_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y3_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y5_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y6_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y7_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y8_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y9_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (ANTS_TAC));
3201    ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3202    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3203    ((((fun arg_tac -> (use_arg_then2 ("y7_lo", [y7_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y8_lo", [y8_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y9_lo", [y9_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3204    ((((fun arg_tac -> (use_arg_then2 ("dart4_y4'_hi", [dart4_y4'_hi])) (fun fst_arg -> (use_arg_then2 ("h_y4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3205    ((THENL_FIRST) case (((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC) THEN (done_tac)));
3206    ((((use_arg_then2 ("delta_y_not_neg", [delta_y_not_neg]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_delta_y_not_neg2", [dart4_delta_y_not_neg2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("orFb", [orFb]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("orbF", [orbF]))(thm_tac (new_rewrite [] [])))));
3207    case;
3208    (((((use_arg_then2 ("dart4_cross_eq_enclosed", [dart4_cross_eq_enclosed]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (move ["cross_le"]));
3209    ((((use_arg_then2 ("tauq_cross_split", [tauq_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_azim_cross_split", [dart4_azim_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3210    ((fun arg_tac -> arg_tac (Arg_term (`y4'_fan _1 _2`))) (term_tac (set_tac "c_diag")));
3211    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t1")));
3212    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t2")));
3213    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a1")));
3214    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a2")));
3215    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&0 < t1 - #0.453 * a1 + #0.777 / &2 /\ &0 < t2 - #0.453 * a2 + #0.777 / &2`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
3216    ((((use_arg_then2 ("t1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("t2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))));
3217    ((split_tac) THEN (((use_arg_then2 ("h_reduced", [])) (disch_tac [])) THEN (clear_assumption "h_reduced") THEN (DISCH_THEN apply_tac)) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("cross_le", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
3218    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_lo", [y8_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3219    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3220    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3221    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_lo", [y9_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3222    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3223    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3224    ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (move ["diag_le"]));
3225    (((use_arg_then2 ("h_y4", [])) (disch_tac [])) THEN (clear_assumption "h_y4") THEN ((use_arg_then2 ("h_main", [])) (disch_tac [])) THEN (clear_assumption "h_main") THEN ((use_arg_then2 ("h_reduced", [])) (disch_tac [])) THEN (clear_assumption "h_reduced") THEN BETA_TAC THEN (move ["_"]) THEN (move ["_"]) THEN (move ["_"]));
3226    ((((use_arg_then2 ("tauq", [tauq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3227    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t1")));
3228    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t2")));
3229    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a")));
3230    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&0 < t1 + #0.103 - #0.453 * a + #0.777 /\ #0.103 < t2`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
3231    (((((use_arg_then2 ("t1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("t2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a_def", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (split_tac));
3232    ((((use_arg_then2 ("h_front", [])) (disch_tac [])) THEN (clear_assumption "h_front") THEN (DISCH_THEN apply_tac)) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("diag_le", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
3233    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y3_lo", [y3_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y5_lo", [y5_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3234    (((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3235    (((fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) d <= sqrt8`))) (disch_eq_tac "y4'_ineq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac));
3236    ((((use_arg_then2 ("h_back2", [])) (disch_tac [])) THEN (clear_assumption "h_back2") THEN (DISCH_THEN apply_tac)) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y4'_ineq", []))(thm_tac (new_rewrite [] []))))));
3237    ((((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3238    (((((use_arg_then2 ("y3_lo", [y3_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y3_hi", [y3_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_lo", [y8_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_lo", [y9_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3239    ((((use_arg_then2 ("y4'_ineq", [])) (disch_tac [])) THEN (clear_assumption "y4'_ineq") THEN BETA_TAC) THEN ((((use_arg_then2 ("REAL_NOT_LE", [REAL_NOT_LE]))(thm_tac (new_rewrite [] [])))) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (move ["y4'_ineq"])));
3240    ((((use_arg_then2 ("h_back", [])) (disch_tac [])) THEN (clear_assumption "h_back") THEN (DISCH_THEN apply_tac)) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y4'_ineq", []))(thm_tac (new_rewrite [] []))))));
3241    ((((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3242    ((((use_arg_then2 ("y3_lo", [y3_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y3_hi", [y3_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_lo", [y8_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_lo", [y9_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3243    ((((use_arg_then2 ("diag_le", [])) (disch_tac [])) THEN (clear_assumption "diag_le") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
3244 ];;
3245 (Sections.add_section_hyp "h_tau" (`lp_tau (V,E)`));;
3246
3247 (* Section Inner *)
3248 Sections.begin_section "Inner";;
3249
3250 (* Lemma ineq119 *)
3251 let ineq119 = Sections.section_proof ["d"]
3252 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3253         y5_fan (V,E) d <= #2.52
3254         /\ y6_fan d <= #2.52
3255         /\ y8_fan (V,E) d <= #2.52
3256         /\ y9_fan (V,E) d <= #2.52
3257    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.453 * azim_dart (V,E) d + #0.777 >= &0`
3258 [
3259    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
3260    (((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ineq119_tauVEF", [ineq119_tauVEF]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3261 ];;
3262
3263 (* Section Std *)
3264 Sections.begin_section "Std";;
3265 (Sections.add_section_hyp "std" (`E = ESTD V`));;
3266
3267 (* Lemma ineq119_std *)
3268 let ineq119_std = Sections.section_proof ["d"]
3269 `d IN darts_k 4 (hypermap_of_fan (V,E))
3270    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.453 * azim_dart (V,E) d + #0.777 >= &0`
3271 [
3272    ((BETA_TAC THEN (move ["d_in4"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["_"])))));
3273    (((fun arg_tac -> (use_arg_then2 ("ineq119", [ineq119])) (fun fst_arg -> (use_arg_then2 ("d_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
3274    ((in_tac ["h_fan"] false (((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] []))))) THEN (in_tac ["d_in"] false ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)))));
3275    (((((use_arg_then2 ("y5_hi_std2", [y5_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_hi_std2", [y6_hi_std2])) (fun fst_arg -> (use_arg_then2 ("std", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_hi_std", [y8_hi_std]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_hi_std", [y9_hi_std]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3276 ];;
3277
3278 (* Finalization of the section Std *)
3279 let ineq119_std = Sections.finalize_theorem ineq119_std;;
3280 Sections.end_section "Std";;
3281
3282 (* Finalization of the section Inner *)
3283 let ineq119 = Sections.finalize_theorem ineq119;;
3284 let ineq119_std = Sections.finalize_theorem ineq119_std;;
3285 Sections.end_section "Inner";;
3286
3287 (* Finalization of the section Ineq119 *)
3288 let ineq119_tauVEF = Sections.finalize_theorem ineq119_tauVEF;;
3289 let ineq119 = Sections.finalize_theorem ineq119;;
3290 let ineq119_std = Sections.finalize_theorem ineq119_std;;
3291 Sections.end_section "Ineq119";;
3292
3293 (* Section Ineq120 *)
3294 Sections.begin_section "Ineq120";;
3295 (Sections.add_section_hyp "h_120" ((hd (Ineq.getexact "4240815464 a")).ineq));;
3296 (Sections.add_section_hyp "h_120r" ((hd (Ineq.getexact "4240815464 a reduced")).ineq));;
3297 (Sections.add_section_hyp "h_y4" ((hd (Ineq.getexact "3287695934")).ineq));;
3298
3299 (* Lemma ineq120_tauVEF *)
3300 let ineq120_tauVEF = Sections.section_proof ["d"]
3301 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3302         y5_fan (V,E) d <= #2.52
3303         /\ y6_fan d <= #2.52
3304         /\ y8_fan (V,E) d <= #2.52
3305         /\ y9_fan (V,E) d <= #2.52
3306   ==> tauVEF (V,E,face (hypermap_of_fan (V,E)) d) + #0.7573 * azim_dart (V,E) d - #1.433 >= &0`
3307 [
3308    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("h_fan", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN (move ["h_fan2"])));
3309    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
3310    ((((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN (clear_assumption "d_in4") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3311    ((((use_arg_then2 ("dart4_tauVEF_eq_tauq", [dart4_tauVEF_eq_tauq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))));
3312    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#2.0 = &2 /\ &2 * h0 = #2.52 /\ #0.0 = &0`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac)));
3313    (in_tac ["h_120"; "h_120r"] false ((((use_arg_then2 ("Ineq.dart_std4", [Ineq.dart_std4]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] [])))))));
3314    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("h_120", [])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y1_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y2_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y3_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y5_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y6_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y7_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y8_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y9_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (ANTS_TAC));
3315    ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3316    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3317    ((((fun arg_tac -> (use_arg_then2 ("y7_lo", [y7_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y8_lo", [y8_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y9_lo", [y9_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3318    ((((fun arg_tac -> (use_arg_then2 ("dart4_y4'_hi", [dart4_y4'_hi])) (fun fst_arg -> (use_arg_then2 ("h_y4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3319    ((THENL_FIRST) case (((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC) THEN (done_tac)));
3320    ((((use_arg_then2 ("delta_y_not_neg", [delta_y_not_neg]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_delta_y_not_neg2", [dart4_delta_y_not_neg2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("orbF", [orbF]))(thm_tac (new_rewrite [] []))))));
3321    (((((use_arg_then2 ("dart4_cross_eq_enclosed", [dart4_cross_eq_enclosed]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (move ["cross_le"]));
3322    ((((use_arg_then2 ("tauq_cross_split", [tauq_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_azim_cross_split", [dart4_azim_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3323    ((fun arg_tac -> arg_tac (Arg_term (`y4'_fan _1 _2`))) (term_tac (set_tac "c_diag")));
3324    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t1")));
3325    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t2")));
3326    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a1")));
3327    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a2")));
3328    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&0 < t1 + #0.7573 * a1 - #1.433 / &2 /\ &0 < t2 + #0.7573 * a2 - #1.433 / &2`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
3329    ((((use_arg_then2 ("t1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("t2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))));
3330    ((split_tac) THEN (((use_arg_then2 ("h_120r", [])) (disch_tac [])) THEN (clear_assumption "h_120r") THEN (DISCH_THEN apply_tac)) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("cross_le", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
3331    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_lo", [y8_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3332    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3333    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3334    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_lo", [y9_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3335    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3336    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3337 ];;
3338 (Sections.add_section_hyp "h_tau" (`lp_tau (V,E)`));;
3339
3340 (* Section Inner *)
3341 Sections.begin_section "Inner";;
3342
3343 (* Lemma ineq120 *)
3344 let ineq120 = Sections.section_proof ["d"]
3345 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3346         y5_fan (V,E) d <= #2.52
3347         /\ y6_fan d <= #2.52
3348         /\ y8_fan (V,E) d <= #2.52
3349         /\ y9_fan (V,E) d <= #2.52
3350   ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) + #0.7573 * azim_dart (V,E) d - #1.433 >= &0`
3351 [
3352    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
3353    (((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ineq120_tauVEF", [ineq120_tauVEF]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3354 ];;
3355
3356 (* Section Std *)
3357 Sections.begin_section "Std";;
3358 (Sections.add_section_hyp "std" (`E = ESTD V`));;
3359
3360 (* Lemma ineq120_std *)
3361 let ineq120_std = Sections.section_proof ["d"]
3362 `d IN darts_k 4 (hypermap_of_fan (V,E))
3363    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) + #0.7573 * azim_dart (V,E) d - #1.433 >= &0`
3364 [
3365    ((BETA_TAC THEN (move ["d_in4"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["_"])))));
3366    (((fun arg_tac -> (use_arg_then2 ("ineq120", [ineq120])) (fun fst_arg -> (use_arg_then2 ("d_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
3367    ((in_tac ["h_fan"] false (((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] []))))) THEN (in_tac ["d_in"] false ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)))));
3368    (((((use_arg_then2 ("y5_hi_std2", [y5_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_hi_std2", [y6_hi_std2])) (fun fst_arg -> (use_arg_then2 ("std", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_hi_std", [y8_hi_std]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_hi_std", [y9_hi_std]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3369 ];;
3370
3371 (* Finalization of the section Std *)
3372 let ineq120_std = Sections.finalize_theorem ineq120_std;;
3373 Sections.end_section "Std";;
3374
3375 (* Finalization of the section Inner *)
3376 let ineq120 = Sections.finalize_theorem ineq120;;
3377 let ineq120_std = Sections.finalize_theorem ineq120_std;;
3378 Sections.end_section "Inner";;
3379
3380 (* Finalization of the section Ineq120 *)
3381 let ineq120_tauVEF = Sections.finalize_theorem ineq120_tauVEF;;
3382 let ineq120 = Sections.finalize_theorem ineq120;;
3383 let ineq120_std = Sections.finalize_theorem ineq120_std;;
3384 Sections.end_section "Ineq120";;
3385
3386 (* Section Ineq121 *)
3387 Sections.begin_section "Ineq121";;
3388 (Sections.add_section_hyp "h_121" ((hd (Ineq.getexact "6944699408 a")).ineq));;
3389 (Sections.add_section_hyp "h_121r" ((hd (Ineq.getexact "6944699408 a reduced")).ineq));;
3390 (Sections.add_section_hyp "h_y4" ((hd (Ineq.getexact "3287695934")).ineq));;
3391
3392 (* Lemma ineq121_tauVEF *)
3393 let ineq121_tauVEF = Sections.section_proof ["d"]
3394 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3395         y5_fan (V,E) d <= #2.52
3396         /\ y6_fan d <= #2.52
3397         /\ y8_fan (V,E) d <= #2.52
3398         /\ y9_fan (V,E) d <= #2.52
3399    ==> tauVEF (V,E,face (hypermap_of_fan (V,E)) d) + #0.972 * azim_dart (V,E) d - #1.707 >= &0`
3400 [
3401    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("h_fan", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN (move ["h_fan2"])));
3402    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
3403    ((((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN (clear_assumption "d_in4") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3404    ((((use_arg_then2 ("dart4_tauVEF_eq_tauq", [dart4_tauVEF_eq_tauq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))));
3405    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#2.0 = &2 /\ &2 * h0 = #2.52 /\ #0.0 = &0`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac)));
3406    (in_tac ["h_121"; "h_121r"] false ((((use_arg_then2 ("Ineq.dart_std4", [Ineq.dart_std4]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] [])))))));
3407    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("h_121", [])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y1_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y2_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y3_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y5_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y6_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y7_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y8_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y9_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (ANTS_TAC));
3408    ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3409    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3410    ((((fun arg_tac -> (use_arg_then2 ("y7_lo", [y7_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y8_lo", [y8_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y9_lo", [y9_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3411    ((((fun arg_tac -> (use_arg_then2 ("dart4_y4'_hi", [dart4_y4'_hi])) (fun fst_arg -> (use_arg_then2 ("h_y4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3412    ((THENL_FIRST) case (((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC) THEN (done_tac)));
3413    (((((use_arg_then2 ("dart4_cross_eq_enclosed", [dart4_cross_eq_enclosed]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (move ["cross_le"]));
3414    ((((use_arg_then2 ("tauq_cross_split", [tauq_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_azim_cross_split", [dart4_azim_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3415    ((fun arg_tac -> arg_tac (Arg_term (`y4'_fan _1 _2`))) (term_tac (set_tac "c_diag")));
3416    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t1")));
3417    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t2")));
3418    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a1")));
3419    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a2")));
3420    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&0 < t1 + #0.972 * a1 - #1.707 / &2 /\ &0 < t2 + #0.972 * a2 - #1.707 / &2`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
3421    ((((use_arg_then2 ("t1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("t2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))));
3422    ((split_tac) THEN (((use_arg_then2 ("h_121r", [])) (disch_tac [])) THEN (clear_assumption "h_121r") THEN (DISCH_THEN apply_tac)) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("cross_le", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
3423    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_lo", [y8_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3424    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3425    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3426    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_lo", [y9_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3427    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3428    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3429 ];;
3430 (Sections.add_section_hyp "h_tau" (`lp_tau (V,E)`));;
3431
3432 (* Section Inner *)
3433 Sections.begin_section "Inner";;
3434
3435 (* Lemma ineq121 *)
3436 let ineq121 = Sections.section_proof ["d"]
3437 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3438         y5_fan (V,E) d <= #2.52
3439         /\ y6_fan d <= #2.52
3440         /\ y8_fan (V,E) d <= #2.52
3441         /\ y9_fan (V,E) d <= #2.52
3442    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) + #0.972 * azim_dart (V,E) d - #1.707 >= &0`
3443 [
3444    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
3445    (((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ineq121_tauVEF", [ineq121_tauVEF]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3446 ];;
3447
3448 (* Section Std *)
3449 Sections.begin_section "Std";;
3450 (Sections.add_section_hyp "std" (`E = ESTD V`));;
3451
3452 (* Lemma ineq121_std *)
3453 let ineq121_std = Sections.section_proof ["d"]
3454 `d IN darts_k 4 (hypermap_of_fan (V,E))
3455    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) + #0.972 * azim_dart (V,E) d - #1.707 >= &0`
3456 [
3457    ((BETA_TAC THEN (move ["d_in4"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["_"])))));
3458    (((fun arg_tac -> (use_arg_then2 ("ineq121", [ineq121])) (fun fst_arg -> (use_arg_then2 ("d_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
3459    ((in_tac ["h_fan"] false (((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] []))))) THEN (in_tac ["d_in"] false ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)))));
3460    (((((use_arg_then2 ("y5_hi_std2", [y5_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_hi_std2", [y6_hi_std2])) (fun fst_arg -> (use_arg_then2 ("std", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_hi_std", [y8_hi_std]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_hi_std", [y9_hi_std]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3461 ];;
3462
3463 (* Finalization of the section Std *)
3464 let ineq121_std = Sections.finalize_theorem ineq121_std;;
3465 Sections.end_section "Std";;
3466
3467 (* Finalization of the section Inner *)
3468 let ineq121 = Sections.finalize_theorem ineq121;;
3469 let ineq121_std = Sections.finalize_theorem ineq121_std;;
3470 Sections.end_section "Inner";;
3471
3472 (* Finalization of the section Ineq121 *)
3473 let ineq121_tauVEF = Sections.finalize_theorem ineq121_tauVEF;;
3474 let ineq121 = Sections.finalize_theorem ineq121;;
3475 let ineq121_std = Sections.finalize_theorem ineq121_std;;
3476 Sections.end_section "Ineq121";;
3477
3478 (* Section Ineq122 *)
3479 Sections.begin_section "Ineq122";;
3480 (Sections.add_section_hyp "h_main" ((hd (Ineq.getexact "7043724150 a")).ineq));;
3481 (Sections.add_section_hyp "h_reduced" ((hd (Ineq.getexact "7043724150 a reduced v2")).ineq));;
3482 (Sections.add_section_hyp "h_y4" ((hd (Ineq.getexact "3287695934")).ineq));;
3483
3484 (* Lemma ineq122_tauVEF *)
3485 let ineq122_tauVEF = Sections.section_proof ["d"]
3486 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3487         y5_fan (V,E) d <= #2.52
3488         /\ y6_fan d <= #2.52
3489         /\ y8_fan (V,E) d <= #2.52
3490         /\ y9_fan (V,E) d <= #2.52
3491    ==> tauVEF (V,E,face (hypermap_of_fan (V,E)) d) + #4.72 * azim_dart (V,E) d - #6.248 >= &0`
3492 [
3493    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("h_fan", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] [])))) THEN (move ["h_fan2"])));
3494    ((fun arg_tac -> arg_tac (Arg_term (`d IN dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["d_in"]))));
3495    ((((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN (clear_assumption "d_in4") THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3496    ((((use_arg_then2 ("dart4_tauVEF_eq_tauq", [dart4_tauVEF_eq_tauq]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))));
3497    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#2.0 = &2 /\ &2 * h0 = #2.52 /\ #0.0 = &0`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac)));
3498    (in_tac ["h_main"; "h_reduced"] false ((((use_arg_then2 ("Ineq.dart_std4", [Ineq.dart_std4]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] [])))))));
3499    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("h_main", [])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y1_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y2_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y3_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y4'_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y5_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y6_fan d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y7_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y8_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y9_fan (V,E) d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (ANTS_TAC));
3500    ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3501    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3502    ((((fun arg_tac -> (use_arg_then2 ("y7_lo", [y7_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y8_lo", [y8_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y9_lo", [y9_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3503    ((((fun arg_tac -> (use_arg_then2 ("dart4_y4'_hi", [dart4_y4'_hi])) (fun fst_arg -> (use_arg_then2 ("h_y4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3504    ((THENL_FIRST) case (((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN ((DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC) THEN (done_tac)));
3505    (((((use_arg_then2 ("dart4_cross_eq_enclosed", [dart4_cross_eq_enclosed]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (DISCH_THEN (fun snd_th -> (use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE])) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (move ["cross_le"]));
3506    ((((use_arg_then2 ("tauq_cross_split", [tauq_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("dart4_azim_cross_split", [dart4_azim_cross_split]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3507    ((fun arg_tac -> arg_tac (Arg_term (`y4'_fan _1 _2`))) (term_tac (set_tac "c_diag")));
3508    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t1")));
3509    ((fun arg_tac -> arg_tac (Arg_term (`taum _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "t2")));
3510    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a1")));
3511    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "a2")));
3512    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&0 < t1 + #4.72 * a1 - #6.248 / &2 /\ &0 < t2 + #4.72 * a2 - #6.248 / &2`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
3513    ((((use_arg_then2 ("t1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a1_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("t2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))));
3514    ((split_tac) THEN (((use_arg_then2 ("h_reduced", [])) (disch_tac [])) THEN (clear_assumption "h_reduced") THEN (DISCH_THEN apply_tac)) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("ALL", [ALL]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("cross_le", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
3515    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_lo", [y3_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y5_lo", [y5_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_lo", [y8_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3516    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y3_hi", [y3_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3517    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3518    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_lo", [y7_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y7_hi", [y7_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_lo", [y9_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3519    ((((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y2_hi", [y2_hi])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("c_diag_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart4_y4'_lo", [dart4_y4'_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
3520    ((((use_arg_then2 ("f_fan_pair_ext_in_darts_k", [f_fan_pair_ext_in_darts_k]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
3521 ];;
3522 (Sections.add_section_hyp "h_tau" (`lp_tau (V,E)`));;
3523
3524 (* Section Inner *)
3525 Sections.begin_section "Inner";;
3526
3527 (* Lemma ineq122 *)
3528 let ineq122 = Sections.section_proof ["d"]
3529 `d IN darts_k 4 (hypermap_of_fan (V,E)) ==>
3530         y5_fan (V,E) d <= #2.52
3531         /\ y6_fan d <= #2.52
3532         /\ y8_fan (V,E) d <= #2.52
3533         /\ y9_fan (V,E) d <= #2.52
3534    ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) + #4.72 * azim_dart (V,E) d - #6.248 >= &0`
3535 [
3536    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
3537    (((((use_arg_then2 ("tau_fan_eq_tauVEF", [tau_fan_eq_tauVEF]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_in_face_set", [lemma_in_face_set]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ineq122_tauVEF", [ineq122_tauVEF]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3538 ];;
3539
3540 (* Section Std *)
3541 Sections.begin_section "Std";;
3542 (Sections.add_section_hyp "std" (`E = ESTD V`));;
3543
3544 (* Lemma ineq122_std *)
3545 let ineq122_std = Sections.section_proof ["d"]
3546 `d IN darts_k 4 (hypermap_of_fan (V,E))
3547   ==> tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) + #4.72 * azim_dart (V,E) d - #6.248 >= &0`
3548 [
3549    ((BETA_TAC THEN (move ["d_in4"])) THEN (((use_arg_then2 ("d_in4", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("darts_k", [darts_k]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN ((move ["d_in"]) THEN (move ["_"])))));
3550    (((fun arg_tac -> (use_arg_then2 ("ineq122", [ineq122])) (fun fst_arg -> (use_arg_then2 ("d_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
3551    ((in_tac ["h_fan"] false (((use_arg_then2 ("lp_fan", [lp_fan]))(thm_tac (new_rewrite [] []))))) THEN (in_tac ["d_in"] false ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)))));
3552    (((((use_arg_then2 ("y5_hi_std2", [y5_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y6_hi_std2", [y6_hi_std2])) (fun fst_arg -> (use_arg_then2 ("std", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_hi_std", [y8_hi_std]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y9_hi_std", [y9_hi_std]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
3553 ];;
3554
3555 (* Finalization of the section Std *)
3556 let ineq122_std = Sections.finalize_theorem ineq122_std;;
3557 Sections.end_section "Std";;
3558
3559 (* Finalization of the section Inner *)
3560 let ineq122 = Sections.finalize_theorem ineq122;;
3561 let ineq122_std = Sections.finalize_theorem ineq122_std;;
3562 Sections.end_section "Inner";;
3563
3564 (* Finalization of the section Ineq122 *)
3565 let ineq122_tauVEF = Sections.finalize_theorem ineq122_tauVEF;;
3566 let ineq122 = Sections.finalize_theorem ineq122;;
3567 let ineq122_std = Sections.finalize_theorem ineq122_std;;
3568 Sections.end_section "Ineq122";;
3569
3570 (* Finalization of the section QuadIneqs *)
3571 let y4'_lo_2h0 = Sections.finalize_theorem y4'_lo_2h0;;
3572 let dart4_y4'_lo = Sections.finalize_theorem dart4_y4'_lo;;
3573 let y4'_hi = Sections.finalize_theorem y4'_hi;;
3574 let dart4_y4'_hi = Sections.finalize_theorem dart4_y4'_hi;;
3575 let dart4_y4'_hi_std = Sections.finalize_theorem dart4_y4'_hi_std;;
3576 let dart4_delta_y_not_neg2 = Sections.finalize_theorem dart4_delta_y_not_neg2;;
3577 let ineq119_tauVEF = Sections.finalize_theorem ineq119_tauVEF;;
3578 let ineq119 = Sections.finalize_theorem ineq119;;
3579 let ineq119_std = Sections.finalize_theorem ineq119_std;;
3580 let ineq120_tauVEF = Sections.finalize_theorem ineq120_tauVEF;;
3581 let ineq120 = Sections.finalize_theorem ineq120;;
3582 let ineq120_std = Sections.finalize_theorem ineq120_std;;
3583 let ineq121_tauVEF = Sections.finalize_theorem ineq121_tauVEF;;
3584 let ineq121 = Sections.finalize_theorem ineq121;;
3585 let ineq121_std = Sections.finalize_theorem ineq121_std;;
3586 let ineq122_tauVEF = Sections.finalize_theorem ineq122_tauVEF;;
3587 let ineq122 = Sections.finalize_theorem ineq122;;
3588 let ineq122_std = Sections.finalize_theorem ineq122_std;;
3589 Sections.end_section "QuadIneqs";;
3590
3591 (* Close the module *)
3592 end;;