Update from HH
[Flyspeck/.git] / formal_lp / hypermap / ineqs / lp_ineqs_proofs2-compiled.hl
1 needs "local/lp_details.hl";;
2 needs "../formal_lp/hypermap/ineqs/lp_ineqs_proofs-compiled.hl";;
3 needs "../formal_lp/ineqs/delta_ineq.hl";;
4
5 (* Module Lp_ineqs_proofs2*)
6 module Lp_ineqs_proofs2 = struct
7
8 open Ssrbool;;
9 open Ssrnat;;
10 open Sphere;;
11 open Fan_defs;;
12 open Hypermap;;
13 open Lp_ineqs_proofs;;
14 open Hypermap_and_fan;;
15 open Tame_general;;
16 open Lp_ineqs_def;;
17 open Add_triangle;;
18 open Hypermap_iso;;
19 open List_hypermap;;
20
21 (* Section Misc *)
22 Sections.begin_section "Misc";;
23
24 (* Lemma azim_dart_eq_azim *)
25 let azim_dart_eq_azim = Sections.section_proof ["V";"E";"v";"w"]
26 `FAN (vec 0,V,E)
27         /\ v,w IN dart1_of_fan (V,E) /\ CARD (set_of_edge v V E) > 1
28         ==> azim_dart (V,E) (v,w) = azim (vec 0) v w (sigma_fan (vec 0) V E v w)`
29 [
30    (BETA_TAC THEN (case THEN (move ["fanV"])) THEN (case THEN (move ["vw_in1"])) THEN (move ["card_gt1"]));
31    (((((use_arg_then2 ("azim_dart_eq_azim_fan", [azim_dart_eq_azim_fan]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("dart_of_fan_eq", [dart_of_fan_eq]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("azim_fan", [azim_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
32 ];;
33
34 (* Lemma sigma_fan_same *)
35 let sigma_fan_same = Sections.section_proof ["V";"E";"V2";"E2";"v"]
36 `set_of_edge v V E = set_of_edge v V2 E2
37         ==> sigma_fan (vec 0) V E v = sigma_fan (vec 0) V2 E2 v`
38 [
39    ((BETA_TAC THEN (move ["eq"])) THEN ((((use_arg_then2 ("FUN_EQ_THM", [FUN_EQ_THM]))(thm_tac (new_rewrite [] [])))) THEN (move ["w"])) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("sigma_fan", [sigma_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
40 ];;
41
42 (* Lemma sigma_fan_delete_eq *)
43 let sigma_fan_delete_eq = Sections.section_proof ["V";"E";"v";"w";"x"]
44 `~(x = v) /\ ~(x = w)
45         ==> sigma_fan (vec 0) V (E DELETE {v,w}) x = sigma_fan (vec 0) V E x`
46 [
47    ((BETA_TAC THEN (move ["x_neq"])) THEN ((use_arg_then2 ("sigma_fan_same", [sigma_fan_same])) (thm_tac apply_tac)));
48    (((((use_arg_then2 ("EXTENSION", [EXTENSION]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("set_of_edge", [set_of_edge]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (move ["y"]));
49    ((THENL) (split_tac) [((case THEN ALL_TAC) THEN (case THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (move ["_"]) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))); ((case THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (simp_tac))]);
50    (((((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL Geomdetail.PAIR_EQ_EXPAND)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("x_neq", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
51 ];;
52
53 (* Lemma atn2_acs_lemma *)
54 let atn2_acs_lemma = Sections.section_proof ["a";"b"]
55 `~(a = &0) /\ b * b <= a
56         ==> pi / &2 + atn2 (sqrt (a - b * b), --b) = acs (b / sqrt (a))`
57 [
58    (BETA_TAC THEN (move ["ineqs"]));
59    ((THENL_ROT (-1)) (((fun arg_tac -> arg_tac (Arg_term (`b * b = a`))) (disch_eq_tac "eq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)));
60    ((((use_arg_then2 ("Tame_inequalities.ATN2_ACS_LEMMA", [Tame_inequalities.ATN2_ACS_LEMMA]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
61    ((((use_arg_then2 ("ineqs", [])) (disch_tac [])) THEN (clear_assumption "ineqs") THEN ((use_arg_then2 ("eq", [])) (disch_tac [])) THEN (clear_assumption "eq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
62    ((((use_arg_then2 ("eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_SUB_REFL", [REAL_SUB_REFL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SQRT_0", [SQRT_0]))(thm_tac (new_rewrite [] [])))));
63    ((fun arg_tac -> (use_arg_then2 ("Merge_ineq.atn2_0", [Merge_ineq.atn2_0])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`--b`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["eq1"]) THEN (case THEN (move ["eq2"])) THEN (move ["_"])))));
64    (((fun arg_tac -> arg_tac (Arg_term (`b < &0`))) (disch_eq_tac "b_ineq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac));
65    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`&0 < --b /\ ~(b = &0)`))) (term_tac (have_gen_tac [](move ["b_ineq2"])))) ((((use_arg_then2 ("b_ineq", [])) (disch_tac [])) THEN (clear_assumption "b_ineq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
66    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`b * b = (--b) * (--b)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
67    ((((use_arg_then2 ("Nonlinear_lemma.sqrtxx", [Nonlinear_lemma.sqrtxx]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
68    ((((fun arg_tac -> (use_arg_then2 ("real_div", [real_div])) (fun fst_arg -> (use_arg_then2 ("b", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_INV_NEG", [REAL_INV_NEG]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_MUL_RNEG", [REAL_MUL_RNEG]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_MUL_RINV", [REAL_MUL_RINV]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
69    (((((use_arg_then2 ("ACS_NEG_1", [ACS_NEG_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq1", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
70    ((fun arg_tac -> arg_tac (Arg_term (`--b < &0 /\ ~(b = &0) /\ &0 <= b`))) (term_tac (have_gen_tac [](move ["b_ineq2"]))));
71    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`~(b = &0)`))) (term_tac (have_gen_tac []ALL_TAC)))) ((((use_arg_then2 ("b_ineq", [])) (disch_tac [])) THEN (clear_assumption "b_ineq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
72    (((((use_arg_then2 ("implybF", [implybF]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["eq0"])) THEN (((use_arg_then2 ("ineqs", [])) (disch_tac [])) THEN (clear_assumption "ineqs") THEN ((use_arg_then2 ("eq", [])) (disch_tac [])) THEN (clear_assumption "eq") THEN BETA_TAC) THEN (((((use_arg_then2 ("eq0", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_MUL_LZERO", [REAL_MUL_LZERO]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
73    ((((use_arg_then2 ("Nonlinear_lemma.sqrtxx", [Nonlinear_lemma.sqrtxx]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
74    (((((use_arg_then2 ("REAL_DIV_REFL", [REAL_DIV_REFL]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ACS_1", [ACS_1]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq2", []))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("REAL_ADD_RINV", [REAL_ADD_RINV]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
75 ];;
76
77 (* Lemma dih_x_eq *)
78 let dih_x_eq = Sections.section_proof ["x1";"x2";"x3";"x4";"x5";"x6"]
79 `let v1 = ups_x x1 x2 x6 in
80          let v2 = ups_x x1 x3 x5 in
81          let d4 = delta_x4 x1 x2 x3 x4 x5 x6 in
82         &0 < v1 /\ &0 < v2 /\ &0 <= delta_x x1 x2 x3 x4 x5 x6 /\ &0 <= x1
83         ==> dih_x x1 x2 x3 x4 x5 x6 = acs (d4 / sqrt (v1 * v2))`
84 [
85    ((repeat_tactic 1 9 ((CONV_TAC let_CONV))) THEN (BETA_TAC THEN (move ["ineqs"])));
86    ((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE Sphere.dih_x)))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE Tame_inequalities.DELTA_X_AND_DELTA_X4)))(thm_tac (new_rewrite [] [])))));
87    (((((use_arg_then2 ("atn2_acs_lemma", [atn2_acs_lemma]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (split_tac));
88    ((((use_arg_then2 ("REAL_ENTIRE", [REAL_ENTIRE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ineqs", [])) (disch_tac [])) THEN (clear_assumption "ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
89    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`a <= b <=> &0 <= b - a`))) (term_tac (have_gen_tac ["a"; "b"](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
90    (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE Tame_inequalities.DELTA_X_AND_DELTA_X4)))(gsym_then (thm_tac (new_rewrite [] [])))));
91    (((repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_MUL", [REAL_LE_MUL]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
92 ];;
93
94 (* Lemma dih_x_mono_le4 *)
95 let dih_x_mono_le4 = Sections.section_proof ["x1";"x2";"x3";"x5";"x6";"a";"b"]
96 `a <= b /\ &0 <= x1
97         /\ &0 < ups_x x1 x2 x6 /\ &0 < ups_x x1 x3 x5
98         /\ &0 <= delta_x x1 x2 x3 a x5 x6
99         /\ &0 <= delta_x x1 x2 x3 b x5 x6
100         ==> dih_x x1 x2 x3 a x5 x6 <= dih_x x1 x2 x3 b x5 x6`
101 [
102    (BETA_TAC THEN (case THEN (move ["a_le_b"])) THEN (case THEN (move ["x1_ge0"])) THEN (case THEN (move ["ups1"])) THEN (case THEN (move ["ups2"])) THEN (case THEN (move ["delta_a"])) THEN (move ["delta_b"]));
103    ((THENL_ROT (-1)) ((repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE dih_x_eq)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ACS_MONO_LE_EQ", [ACS_MONO_LE_EQ]))(thm_tac (new_rewrite [] []))))));
104    ((repeat_tactic 1 9 (((use_arg_then2 ("real_div", [real_div]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_RMUL", [REAL_LE_RMUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_INV", [REAL_LE_INV]))(thm_tac (new_rewrite [] [])))));
105    (((((use_arg_then2 ("SQRT_POS_LE", [SQRT_POS_LE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_MUL", [REAL_LE_MUL]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
106    ((THENL_FIRST) (((fun arg_tac -> arg_tac (Arg_term (`a = b`))) (disch_eq_tac "eq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)) (((((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
107    (((((use_arg_then2 ("Tame_inequalities.DELTA_X4_MONO_LE_4", [Tame_inequalities.DELTA_X4_MONO_LE_4]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("x1_ge0", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("a_le_b", [])) (disch_tac [])) THEN (clear_assumption "a_le_b") THEN ((use_arg_then2 ("eq", [])) (disch_tac [])) THEN (clear_assumption "eq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
108    ((fun arg_tac -> arg_tac (Arg_term (`&0 < x /\ &0 < y ==> (abs (z / sqrt (x * y)) <= &1 <=> &0 <= x * y - z * z)`))) (term_tac (have_gen_tac ["x"; "y"; "z"](move ["aux"]))));
109    ((BETA_TAC THEN (move ["ineqs"])) THEN ((((use_arg_then2 ("real_div", [real_div]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ABS_MUL", [REAL_ABS_MUL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ABS_INV", [REAL_ABS_INV]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("real_div", [real_div]))(gsym_then (thm_tac (new_rewrite [] [])))))));
110    ((fun arg_tac -> arg_tac (Arg_term (`&0 < x * y /\ &0 <= x * y`))) (term_tac (have_gen_tac [](move ["xy_ineqs"]))));
111    (((((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_MUL", [REAL_LT_MUL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
112    (((use_arg_then2 ("Packing3.REAL_DIV_LE_1", [Packing3.REAL_DIV_LE_1]))(thm_tac (new_rewrite [] []))));
113    (((((use_arg_then2 ("REAL_ABS_NZ", [REAL_ABS_NZ]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("SQRT_EQ_0", [SQRT_EQ_0]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (((use_arg_then2 ("xy_ineqs", [])) (disch_tac [])) THEN (clear_assumption "xy_ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
114    (((((use_arg_then2 ("REAL_LE_SQUARE_ABS", [REAL_LE_SQUARE_ABS]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_POW_2", [REAL_POW_2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("SQRT_POW_2", [SQRT_POW_2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
115    ((repeat_tactic 1 9 (((use_arg_then2 ("aux", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE Tame_inequalities.DELTA_X_AND_DELTA_X4)))(gsym_then (thm_tac (new_rewrite [] [])))))));
116    (((repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_MUL", [REAL_LE_MUL]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
117 ];;
118
119 (* Lemma dih_y_mono_le4 *)
120 let dih_y_mono_le4 = Sections.section_proof ["y1";"y2";"y3";"y5";"y6";"a";"b"]
121 `&0 <= a /\ a <= b
122         /\ &0 < ups_x (y1 * y1) (y2 * y2) (y6 * y6)
123         /\ &0 < ups_x (y1 * y1) (y3 * y3) (y5 * y5)
124         /\ &0 <= delta_y y1 y2 y3 a y5 y6
125         /\ &0 <= delta_y y1 y2 y3 b y5 y6
126         ==> dih_y y1 y2 y3 a y5 y6 <= dih_y y1 y2 y3 b y5 y6`
127 [
128    (((repeat_tactic 1 9 (((use_arg_then2 ("delta_y", [delta_y]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE dih_y)))(thm_tac (new_rewrite [] [])))))) THEN (move ["ineqs"]));
129    ((((use_arg_then2 ("dih_x_mono_le4", [dih_x_mono_le4]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_SQUARE", [REAL_LE_SQUARE]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ineqs", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
130    (((repeat_tactic 1 9 (((use_arg_then2 ("REAL_POW_2", [REAL_POW_2]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("REAL_LE_SQUARE_ABS", [REAL_LE_SQUARE_ABS]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("ineqs", [])) (disch_tac [])) THEN (clear_assumption "ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
131 ];;
132
133 (* Finalization of the section Misc *)
134 let azim_dart_eq_azim = Sections.finalize_theorem azim_dart_eq_azim;;
135 let sigma_fan_same = Sections.finalize_theorem sigma_fan_same;;
136 let sigma_fan_delete_eq = Sections.finalize_theorem sigma_fan_delete_eq;;
137 let atn2_acs_lemma = Sections.finalize_theorem atn2_acs_lemma;;
138 let dih_x_eq = Sections.finalize_theorem dih_x_eq;;
139 let dih_x_mono_le4 = Sections.finalize_theorem dih_x_mono_le4;;
140 let dih_y_mono_le4 = Sections.finalize_theorem dih_y_mono_le4;;
141 Sections.end_section "Misc";;
142
143 (* Section Fan *)
144 Sections.begin_section "Fan";;
145 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
146 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
147 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
148
149 (* Lemma ys_fan_eq *)
150 let ys_fan_eq = Sections.section_proof ["v";"w"]
151 `v,w IN dart1_of_fan (V,E)
152         ==> y1_fan (v,w) = norm v
153         /\ y2_fan (v,w) = norm w
154         /\ y3_fan (V,E) (v,w) = norm (sigma_fan (vec 0) V E v w)
155         /\ y4'_fan (V,E) (v,w) = dist (w, sigma_fan (vec 0) V E v w)
156         /\ y5_fan (V,E) (v,w) = dist (v, sigma_fan (vec 0) V E v w)
157         /\ y6_fan (v,w) = dist (v,w)`
158 [
159    (BETA_TAC THEN (move ["vw_in1"]));
160    ((((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));
161    (((((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 ("DIST_SYM", [DIST_SYM]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
162 ];;
163
164 (* Lemma fan_delta_y_pos *)
165 let fan_delta_y_pos = Sections.section_proof ["d"]
166 `d IN dart1_of_fan (V,E)
167         ==> &0 <= delta_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d)
168                         (y4'_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)`
169 [
170    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in"]));
171    (((repeat_tactic 1 9 (((use_arg_then2 ("ys_fan_eq", [ys_fan_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE Tame_lemmas.delta_y_pos)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
172 ];;
173
174 (* Lemma fan_delta_y_pos2 *)
175 let fan_delta_y_pos2 = Sections.section_proof ["d"]
176 `d IN darts_k 4 (hypermap_of_fan (V,E))
177         ==> &0 <= delta_y (y4'_fan (V,E) d) (y9_fan (V,E) d) (y6_fan d)
178                 (y4'_fan (V,E) (f_fan_pair_ext (V,E) d)) (y5_fan (V,E) d) (y8_fan (V,E) d)`
179 [
180    ((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"])));
181    ((((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"])) THEN (BETA_TAC THEN (move ["vw_in4"])));
182    ((((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"])));
183    ((fun arg_tac -> arg_tac (Arg_term (`v,w IN dart1_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["vw_in1"]))));
184    (((((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));
185    ((repeat_tactic 1 9 (((use_arg_then2 ("ys_fan_eq", [ys_fan_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y4'_fan", [y4'_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 (simp_tac));
186    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE face4_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_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (case THEN ((move ["f_eq"]) THEN (case THEN (move ["darts_in"])) THEN (move ["_"])))));
187    ((((use_arg_then2 ("y8_fan", [y8_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y9_fan", [y9_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(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)));
188    ((repeat_tactic 1 9 (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("darts_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("f_eq", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
189    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
190    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w' v`))) (term_tac (set_tac "u")));
191    ((((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 [] []))))) THEN (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 [] []))))));
192    ((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));
193    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("DIST_SYM", [DIST_SYM])) (fun fst_arg -> (use_arg_then2 ("u", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
194 ];;
195
196 (* Lemma fan_ups_x_pos *)
197 let fan_ups_x_pos = Sections.section_proof ["d"]
198 `d IN dart1_of_fan (V,E)
199         ==> &0 < ups_x (y1_fan d * y1_fan d) (y2_fan d * y2_fan d) (y6_fan d * y6_fan d)
200         /\ &0 < ups_x (y1_fan d * y1_fan d) (y3_fan (V,E) d * y3_fan (V,E) d)
201                         (y5_fan (V,E) d * y5_fan (V,E) d)`
202 [
203    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in1"]));
204    ((repeat_tactic 1 9 (((use_arg_then2 ("REAL_POW_2", [REAL_POW_2]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ys_fan_eq", [ys_fan_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("Trigonometry1.DIST_L_ZERO", [Trigonometry1.DIST_L_ZERO]))(gsym_then (thm_tac (new_rewrite [] [])))))));
205    (repeat_tactic 1 9 (((use_arg_then2 ("Collect_geom2.NOT_COL_EQ_UPS_X_POS", [Collect_geom2.NOT_COL_EQ_UPS_X_POS]))(gsym_then (thm_tac (new_rewrite [] []))))));
206    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("DART1_NOT_COLLINEAR_2", [DART1_NOT_COLLINEAR_2])) (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))) (disch_tac [])) THEN (exact_tac));
207 ];;
208
209 (* Lemma dih_y_le_azim_dart *)
210 let dih_y_le_azim_dart = Sections.section_proof ["d"]
211 `d IN dart1_of_fan (V,E)
212         ==> dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) 
213                 (y4'_fan (V,E) d) (y5_fan (V,E) d) (y6_fan d)
214                 <= azim_dart (V,E) d`
215 [
216    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in1"]));
217    ((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)));
218    ((repeat_tactic 1 9 (((use_arg_then2 ("ys_fan_eq", [ys_fan_eq]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("Trigonometry1.DIST_L_ZERO", [Trigonometry1.DIST_L_ZERO]))(gsym_then (thm_tac (new_rewrite [] [])))))));
219    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E v w`))) (term_tac (set_tac "w'")));
220    ((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE DIHV_EQ_DIH_Y)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("w'_def", []))(gsym_then (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 ((TRY done_tac)) THEN (repeat_tactic 0 10 (((use_arg_then2 ("sigma_in_dart1", [sigma_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
221    ((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("azim_dart_eq_azim_fan", [azim_dart_eq_azim_fan]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("azim_fan", [azim_fan]))(thm_tac (new_rewrite [] [])))));
222    ((THENL_ROT (-1)) (((fun arg_tac -> arg_tac (Arg_term (`_ > 1`))) (disch_eq_tac "card_gt" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)));
223    ((((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 (`pi`))) (term_tac exists_tac)) THEN (((use_arg_then2 ("DIHV_RANGE", [DIHV_RANGE]))(thm_tac (new_rewrite [] [])))));
224    ((((use_arg_then2 ("PI_POS", [PI_POS])) (disch_tac [])) THEN (clear_assumption "PI_POS") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
225    ((((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 ((TRY done_tac)) THEN (repeat_tactic 0 10 (((use_arg_then2 ("sigma_in_dart1", [sigma_in_dart1]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))));
226    ((THENL_FIRST) (((fun arg_tac -> arg_tac (Arg_term (`_ < pi`))) (disch_eq_tac "ineq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)) ((((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
227    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("DIHV_RANGE", [DIHV_RANGE])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`vec 0`))) (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))) (fun fst_arg -> (use_arg_then2 ("w'", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
228 ];;
229
230 (* Lemma azim_sum_sigma_fan *)
231 let azim_sum_sigma_fan = Sections.section_proof ["v";"w"]
232 `v,w IN dart1_of_fan (V,E)
233         ==> let w' = sigma_fan (vec 0) V E w v in
234         (!x. x IN set_of_edge w V E /\ ~(x = v)
235                 ==> azim (vec 0) w v x = azim (vec 0) w v w' + azim (vec 0) w w' x)`
236 [
237    ((BETA_TAC THEN (move ["vw_in1"])) THEN (CONV_TAC let_CONV) THEN (BETA_TAC THEN (move ["x"]) THEN (case THEN ((move ["x_in"]) THEN (move ["x_neq_v"])))));
238    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w v`))) (term_tac (set_tac "w'")));
239    (((fun arg_tac -> arg_tac (Arg_term (`w' = x`))) (disch_eq_tac "w'_eq_x" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac));
240    (((((use_arg_then2 ("w'_eq_x", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("AZIM_REFL", [AZIM_REFL]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_ADD_RID", [REAL_ADD_RID]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
241    ((((use_arg_then2 ("Fan.sum5_azim_fan", [Fan.sum5_azim_fan]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [2] []))))));
242    ((((use_arg_then2 ("vw_in1", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (move ["wv_in1"])));
243    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("DART1_NOT_COLLINEAR_2", [DART1_NOT_COLLINEAR_2])) (fun fst_arg -> (use_arg_then2 ("wv_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((simp_tac THEN TRY done_tac)) THEN (((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 (simp_tac));
244    ((((use_arg_then2 ("x_in", [])) (disch_tac [])) THEN (clear_assumption "x_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("set_of_edge", [set_of_edge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
245    ((THENL_FIRST) (((fun arg_tac -> arg_tac (Arg_term (`w' = v`))) (disch_eq_tac "eq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)) (((((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
246    ((THENL_ROT (-1)) ((((use_arg_then2 ("Counting_spheres.AZIM_COMP_LE", [Counting_spheres.AZIM_COMP_LE]))(thm_tac (new_rewrite [] [])))) THEN (split_tac)));
247    ((((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("Topology.MONO_AZIM_SIGMA_FAN", [Topology.MONO_AZIM_SIGMA_FAN]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'_eq_x", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
248    ((((use_arg_then2 ("x_in", [])) (disch_tac [])) THEN (clear_assumption "x_in") THEN ((use_arg_then2 ("vw_in1", [])) (disch_tac [])) THEN (clear_assumption "vw_in1") THEN BETA_TAC) THEN ((((use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge", [set_of_edge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))));
249    (((((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL Collect_geom.PER_SET2)))(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
250    (((use_arg_then2 ("x_neq_v", [])) (disch_tac [])) THEN (clear_assumption "x_neq_v") THEN ((use_arg_then2 ("contraR", [contraR])) (disch_tac [])) THEN (clear_assumption "contraR") THEN (DISCH_THEN apply_tac) THEN (move ["ineq"]));
251    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.UNIQUE_AZIM_0_POINT_FAN", [Fan.UNIQUE_AZIM_0_POINT_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 ("w", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
252    ((((use_arg_then2 ("x_in", [])) (disch_tac [])) THEN (clear_assumption "x_in") THEN ((use_arg_then2 ("vw_in1", [])) (disch_tac [])) THEN (clear_assumption "vw_in1") THEN BETA_TAC) THEN (((((use_arg_then2 ("dart1_switch", [dart1_switch]))(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 ("set_of_edge", [set_of_edge]))(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 (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
253    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Counting_spheres.AZIM_NN", [Counting_spheres.AZIM_NN])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`vec 0`))) (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 ("x", [])) (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))) (disch_tac [])) THEN ((use_arg_then2 ("ineq", [ineq])) (disch_tac [])) THEN (clear_assumption "ineq") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
254 ];;
255
256 (* Lemma fan_delete_edge *)
257 let fan_delete_edge = Sections.section_proof ["e"]
258 `FAN (vec 0, V, E DELETE e)`
259 [
260    (((((use_arg_then2 ("Topology.CTVTAQA", [Topology.CTVTAQA]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("DELETE_SUBSET", [DELETE_SUBSET]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
261 ];;
262
263 (* Lemma set_of_edge_delete_eq *)
264 let set_of_edge_delete_eq = Sections.section_proof ["v";"w"]
265 `set_of_edge v V (E DELETE {v,w}) = set_of_edge v V E DELETE w`
266 [
267    ((((use_arg_then2 ("EXTENSION", [EXTENSION]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("set_of_edge", [set_of_edge]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL Geomdetail.PAIR_EQ_EXPAND)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
268    (((((use_arg_then2 ("negb_or", [negb_or]))(thm_tac (new_rewrite [] [])))) THEN (move ["x"])) THEN ((THENL) (split_tac) [((case 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 (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))); ((case THEN ALL_TAC) THEN (case THEN (move ["vxE"])) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN (simp_tac))]));
269    ((((use_arg_then2 ("vxE", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("vxE", []))(thm_tac (new_rewrite [2] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN (fun snd_th -> (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 (match_mp_then snd_th MP_TAC)))) THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
270 ];;
271
272 (* Lemma set_of_edge_delete_eq2 *)
273 let set_of_edge_delete_eq2 = Sections.section_proof ["v";"w"]
274 `v,w IN dart1_of_fan (V,E)
275         ==> set_of_edge v V E = w INSERT (set_of_edge v V (E DELETE {v,w}))`
276 [
277    ((DISCH_THEN (fun snd_th -> (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))) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN BETA_TAC THEN (move ["h"]));
278    (((((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INSERT_DELETE", [INSERT_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
279 ];;
280
281 (* Lemma card_set_of_edge_delete *)
282 let card_set_of_edge_delete = Sections.section_proof ["v";"w"]
283 `v,w IN dart1_of_fan (V,E)
284         ==> CARD (set_of_edge v V E) = CARD (set_of_edge v V (E DELETE {v,w})) + 1`
285 [
286    (BETA_TAC THEN (move ["vw_in1"]));
287    ((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_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["h"])));
288    ((((fun arg_tac -> (use_arg_then2 ("set_of_edge_delete_eq2", [set_of_edge_delete_eq2])) (fun fst_arg -> (use_arg_then2 ("vw_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("CARD_CLAUSES", [CARD_CLAUSES]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("finite_set_of_edge", [finite_set_of_edge]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("fan_delete_edge", [fan_delete_edge]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
289    (((((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("addn1", [addn1]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
290 ];;
291
292 (* Lemma sigma_fan_delete1 *)
293 let sigma_fan_delete1 = Sections.section_proof ["v";"w"]
294 `v,w IN dart1_of_fan (V,E) /\ CARD (set_of_edge w V E) > 1
295         ==> let w' = sigma_fan (vec 0) V E w v in
296             let E2 = E DELETE {w,w'} in
297         sigma_fan (vec 0) V E2 w v = sigma_fan (vec 0) V E w w'
298         /\ (!x. x IN set_of_edge w V E2 /\ ~(x = v) 
299                 ==> sigma_fan (vec 0) V E2 w x = sigma_fan (vec 0) V E w x)`
300 [
301    ((BETA_TAC THEN (case THEN ((move ["vw_in1"]) THEN (move ["card_gt1"])))) THEN (repeat_tactic 1 9 ((CONV_TAC let_CONV))));
302    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w v`))) (term_tac (set_tac "w'")));
303    ((fun arg_tac -> (use_arg_then2 ("fan_delete_edge", [fan_delete_edge])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`{w,w'}`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["fan2"])));
304    ((fun arg_tac -> arg_tac (Arg_term (`E DELETE _`))) (term_tac (set_tac "E2")));
305    ((fun arg_tac -> arg_tac (Arg_term (`~(set_of_edge w V E = {x})`))) (term_tac (have_gen_tac ["x"](move ["neq_sing"]))));
306    ((((use_arg_then2 ("card_gt1", [])) (disch_tac [])) THEN (clear_assumption "card_gt1") THEN ((use_arg_then2 ("contraL", [contraL])) (disch_tac [])) THEN (clear_assumption "contraL") THEN (DISCH_THEN apply_tac) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("CARD_SINGLETON", [CARD_SINGLETON]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac));
307    ((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 ("vw_in1", [])) (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 (case THEN ((move ["_"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["_"])) THEN (move ["v_in"])))));
308    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.SIGMA_FAN", [Fan.SIGMA_FAN])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("neq_sing", [])) (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 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("v_in", [])) (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 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["w'_in"])) THEN (case THEN (move ["w'_neq_v"])) THEN (move ["azim_le"]));
310    ((fun arg_tac -> arg_tac (Arg_term (`~(w' IN set_of_edge w V E2)`))) (term_tac (have_gen_tac [](move ["w'_not_in"]))));
311    (((((use_arg_then2 ("set_of_edge", [set_of_edge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("negb_and", [negb_and]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
312    (((fun arg_tac -> arg_tac (Arg_term (`set_of_edge w V E2 = {v}`))) (disch_eq_tac "eq" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac));
313    ((((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SING", [IN_SING]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andbN", [andbN]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("sigma_fan", [sigma_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))));
314    ((((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.UNIQUE_SIGMA_FAN", [Fan.UNIQUE_SIGMA_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 ("w'_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("v_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)) THEN ((((use_arg_then2 ("w'_neq_v", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("neq_sing", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
315    ((fun arg_tac -> arg_tac (Arg_term (`set_of_edge w V E = {w',v}`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
316    (((((use_arg_then2 ("eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INSERT_DELETE", [INSERT_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
317    ((BETA_TAC THEN (move ["u"])) 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 ALL_TAC) THEN ((THENL) case [(((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))); (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))]) THEN ((TRY done_tac))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
318    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`v IN set_of_edge w V E2`))) (term_tac (have_gen_tac [](move ["v_in2"])))) (((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
319    (split_tac);
320    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.UNIQUE_SIGMA_FAN", [Fan.UNIQUE_SIGMA_FAN])) (fun fst_arg -> (use_arg_then2 ("eq", [])) (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))) (disch_tac [])) THEN (DISCH_THEN apply_tac));
321    ((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("v_in", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'_neq_v", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac));
322    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.SIGMA_FAN", [Fan.SIGMA_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 ("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 -> (fun arg_tac -> (use_arg_then2 ("neq_sing", [])) (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))) (fun fst_arg -> (use_arg_then2 ("w'_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["h"])));
323    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w w'`))) (term_tac (set_tac "w2")));
324    ((fun arg_tac -> arg_tac (Arg_term (`~(w2 = v)`))) (term_tac (have_gen_tac [](move ["w2_neq_v"]))));
325    ((fun arg_tac -> arg_tac (Arg_term (`w2 = power_map_points sigma_fan (vec 0) V E w v 2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
326    (((((use_arg_then2 ("SIGMA_FAN_POWER", [SIGMA_FAN_POWER]))(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 (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w2_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
327    ((((use_arg_then2 ("Topology.key_lemma_cyclic_fan", [Topology.key_lemma_cyclic_fan]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
328    ((THENL_FIRST) (split_tac) ((arith_tac) THEN (done_tac)));
329    ((((use_arg_then2 ("w'_in", [])) (disch_tac [])) THEN (clear_assumption "w'_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("set_of_edge", [set_of_edge]))(thm_tac (new_rewrite [1] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["ww'_in1"])) THEN (move ["_"])));
330    ((((fun arg_tac -> (use_arg_then2 ("set_of_edge_delete_eq2", [set_of_edge_delete_eq2])) (fun fst_arg -> (use_arg_then2 ("ww'_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("CARD_CLAUSES", [CARD_CLAUSES]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("finite_set_of_edge", [finite_set_of_edge]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("E2_def", []))(thm_tac (new_rewrite [] [])))));
331    ((((use_arg_then2 ("w'_not_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("TWO", [TWO]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("LT_SUC", [LT_SUC]))(thm_tac (new_rewrite [] [])))));
332    ((((use_arg_then2 ("eq", [])) (disch_tac [])) THEN (clear_assumption "eq") THEN ((use_arg_then2 ("contraR", [contraR])) (disch_tac [])) THEN (clear_assumption "contraR") THEN (DISCH_THEN apply_tac)) THEN (((use_arg_then2 ("NOT_LT", [NOT_LT]))(thm_tac (new_rewrite [] [])))));
333    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`a <= 1 <=> a = 0 \/ a = 1`))) (term_tac (have_gen_tac ["a"](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
334    ((THENL_LAST) (((THENL) case [ALL_TAC; ((DISCH_THEN (fun snd_th -> (fun arg_tac -> (use_arg_then2 ("set_one_point", [set_one_point])) (fun fst_arg -> (use_arg_then2 ("v_in2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (thm_tac (match_mp_then snd_th MP_TAC)))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))]) THEN ((TRY done_tac))) ((((use_arg_then2 ("finite_set_of_edge", [finite_set_of_edge]))(thm_tac (new_rewrite [] [])))) THEN (done_tac)));
335    ((((((use_arg_then2 ("CARD_EQ_0", [CARD_EQ_0]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("finite_set_of_edge", [finite_set_of_edge]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (move ["eq"])) THEN (((use_arg_then2 ("v_in2", [])) (disch_tac [])) THEN (clear_assumption "v_in2") THEN BETA_TAC) THEN ((((use_arg_then2 ("eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("NOT_IN_EMPTY", [NOT_IN_EMPTY]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
336    (((repeat_tactic 1 9 (((use_arg_then2 ("h", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("w2_neq_v", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)) THEN (move ["u"]) THEN (case THEN ALL_TAC) THEN (case THEN (move ["u_in"])) THEN (move ["u_neq_w'"]) THEN (move ["u_neq_v"]));
337    ((((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE azim_sum_sigma_fan))) (fun fst_arg -> (use_arg_then2 ("u_neq_v", [])) (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 [] [])))));
338    (((((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE azim_sum_sigma_fan))) (fun fst_arg -> (use_arg_then2 ("w2_neq_v", [])) (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 ("REAL_LE_LADD", [REAL_LE_LADD]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("h", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
339    (BETA_TAC THEN (move ["x"]) THEN (case THEN (move ["x_in"])) THEN (move ["x_neq_v"]));
340    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.UNIQUE_SIGMA_FAN", [Fan.UNIQUE_SIGMA_FAN])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("x_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)) THEN (split_tac));
341    ((((use_arg_then2 ("x_neq_v", [])) (disch_tac [])) THEN (clear_assumption "x_neq_v") THEN ((use_arg_then2 ("contra", [contra])) (disch_tac [])) THEN (clear_assumption "contra") THEN (DISCH_THEN apply_tac) THEN (move ["eq2"])) THEN (((use_arg_then2 ("v_in2", [])) (disch_tac [])) THEN (clear_assumption "v_in2") THEN BETA_TAC) THEN (((((use_arg_then2 ("eq2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_SING", [IN_SING]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
342    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w x`))) (term_tac (set_tac "u")));
343    ((fun arg_tac -> arg_tac (Arg_term (`~(u = w')`))) (term_tac (have_gen_tac [](move ["u_neq_w'"]))));
344    (((((use_arg_then2 ("u_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("x_neq_v", [])) (disch_tac [])) THEN (clear_assumption "x_neq_v") THEN ((use_arg_then2 ("contra", [contra])) (disch_tac [])) THEN (clear_assumption "contra") THEN (DISCH_THEN apply_tac) THEN (DISCH_THEN (fun snd_th -> (fun arg_tac -> (use_arg_then2 ("Fan.MONO_SIGMA_FAN", [Fan.MONO_SIGMA_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 (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac))));
345    ((((use_arg_then2 ("x_in", [])) (disch_tac [])) THEN (clear_assumption "x_in") THEN ((use_arg_then2 ("vw_in1", [])) (disch_tac [])) THEN (clear_assumption "vw_in1") THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1]))(gsym_then (thm_tac (new_rewrite [] [])))))));
346    ((((((use_arg_then2 ("set_of_edge", [set_of_edge]))(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 (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
347    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.SIGMA_FAN", [Fan.SIGMA_FAN])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("neq_sing", [])) (fun fst_arg -> (use_arg_then2 ("x", [])) (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 ALL_TAC)) THEN (ANTS_TAC));
348    ((((use_arg_then2 ("x_in", [])) (disch_tac [])) THEN (clear_assumption "x_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
349    (((((use_arg_then2 ("u_def", []))(thm_tac (new_rewrite [] [])))) THEN (move ["h"])) THEN ((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("h", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("u_neq_w'", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac)));
350    ((BETA_TAC THEN (move ["w2"]) THEN (move ["w2_cond"])) THEN (((use_arg_then2 ("h", []))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
351 ];;
352
353 (* Lemma azim_dart_sum_delete *)
354 let azim_dart_sum_delete = Sections.section_proof ["v";"w"]
355 `v,w IN dart1_of_fan (V,E) /\ CARD (set_of_edge w V E) > 1
356         ==> azim_dart (V, E DELETE {w, sigma_fan (vec 0) V E w v}) (w,v)
357                 = azim_dart (V,E) (w,v) + azim_dart (V,E) (w, sigma_fan (vec 0) V E w v)`
358 [
359    (BETA_TAC THEN (case THEN ((move ["vw_in1"]) THEN (move ["card_gt1"]))));
360    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan _ V E w v`))) (term_tac (set_tac "w'")));
361    ((fun arg_tac -> (use_arg_then2 ("fan_delete_edge", [fan_delete_edge])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`{w,w'}`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["fan2"])));
362    ((fun arg_tac -> arg_tac (Arg_term (`E DELETE _`))) (term_tac (set_tac "E2")));
363    ((((use_arg_then2 ("vw_in1", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (move ["wv_in1"])));
364    (((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 ("wv_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC)) THEN ((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (move ["w'w_in1"])));
365    ((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 ("vw_in1", [])) (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 (case THEN ((move ["_"]) THEN (case THEN (move ["_"])) THEN (case THEN (move ["w_in"])) THEN (move ["v_in"])))));
366    ((fun arg_tac -> arg_tac (Arg_term (`~(set_of_edge w V E = {x})`))) (term_tac (have_gen_tac ["x"](move ["neq_sing"]))));
367    ((((use_arg_then2 ("card_gt1", [])) (disch_tac [])) THEN (clear_assumption "card_gt1") THEN ((use_arg_then2 ("contraL", [contraL])) (disch_tac [])) THEN (clear_assumption "contraL") THEN (DISCH_THEN apply_tac) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("CARD_SINGLETON", [CARD_SINGLETON]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac));
368    ((fun arg_tac -> (fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.SIGMA_FAN", [Fan.SIGMA_FAN])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("neq_sing", [])) (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 ("v_in", [])) (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));
369    ((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN ALL_TAC THEN (case THEN (move ["w'_in"])) THEN (case THEN (move ["w'_neq_v"])) THEN (move ["_"]));
370    ((fun arg_tac -> arg_tac (Arg_term (`CARD (set_of_edge w V E2) >= 1`))) (term_tac (have_gen_tac [](move ["card_ge1"]))));
371    ((((use_arg_then2 ("GE", [GE]))(thm_tac (new_rewrite [] [])))) THEN ((use_arg_then2 ("CARD_ATLEAST_1", [CARD_ATLEAST_1])) (thm_tac apply_tac)) THEN ((use_arg_then2 ("v", [])) (term_tac exists_tac)));
372    (((((use_arg_then2 ("finite_set_of_edge", [finite_set_of_edge]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
373    ((repeat_tactic 1 9 (((use_arg_then2 ("azim_dart_eq_azim_fan", [azim_dart_eq_azim_fan]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("dart_of_fan_eq", [dart_of_fan_eq]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("IN_UNION", [IN_UNION]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
374    (((((use_arg_then2 ("fan2", [fan2]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))) THEN (DISJ1_TAC));
375    ((((use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("wv_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
376    ((((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL Geomdetail.PAIR_EQ_EXPAND)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("w'_neq_v", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac));
377    (((((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 ("w'w_in1", [])) (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 ("PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ", [PAIR_IN_DART1_OF_FAN_IMP_NOT_EQ])) (fun fst_arg -> (use_arg_then2 ("vw_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
378    ((repeat_tactic 1 9 (((use_arg_then2 ("azim_fan", [azim_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("card_gt1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))));
379    ((THENL_ROT (-1)) (((fun arg_tac -> arg_tac (Arg_term (`CARD _ > 1`))) (disch_eq_tac "card_ineq2" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)));
380    (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E w w' = v`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))));
381    ((((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL Local_lemmas1.AZIM_POS_IMP_SUM_2PI)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
382    ((((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("azim_dart_eq_azim", [azim_dart_eq_azim]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("Hypermap_and_fan.AZIM_DART_POS", [Hypermap_and_fan.AZIM_DART_POS]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
383    (((((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));
384    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E w w' = power_map_points sigma_fan (vec 0) V E w v 2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
385    (((((use_arg_then2 ("SIGMA_FAN_POWER", [SIGMA_FAN_POWER]))(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 (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
386    ((((use_arg_then2 ("Topology.ORDER_POWER_SIGMA_FAN", [Topology.ORDER_POWER_SIGMA_FAN]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("wv_in1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
387    ((((fun arg_tac -> (use_arg_then2 ("card_set_of_edge_delete", [card_set_of_edge_delete])) (fun fst_arg -> (use_arg_then2 ("w'w_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("E2_def", []))(thm_tac (new_rewrite [] [])))));
388    ((((use_arg_then2 ("card_ge1", [])) (disch_tac [])) THEN (clear_assumption "card_ge1") THEN ((use_arg_then2 ("card_ineq2", [])) (disch_tac [])) THEN (clear_assumption "card_ineq2") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
389    ((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("w'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE sigma_fan_delete1)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
390    ((((fun arg_tac -> arg_tac (Arg_theorem (let_RULE azim_sum_sigma_fan)))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("vw_in1", []))(thm_tac (new_rewrite [] [])))));
391    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("Fan.SIGMA_FAN", [Fan.SIGMA_FAN])) (fun fst_arg -> (fun arg_tac -> (use_arg_then2 ("neq_sing", [])) (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))) (fun fst_arg -> (use_arg_then2 ("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 (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))));
392    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E w w' = power_map_points sigma_fan (vec 0) V E w v 2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
393    (((((use_arg_then2 ("SIGMA_FAN_POWER", [SIGMA_FAN_POWER]))(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 (((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
394    ((((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Topology.key_lemma_cyclic_fan", [Topology.key_lemma_cyclic_fan]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("fanV", []))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("wv_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
395    ((THENL_FIRST) (split_tac) ((arith_tac) THEN (done_tac)));
396    ((((use_arg_then2 ("w'_in", [])) (disch_tac [])) THEN (clear_assumption "w'_in") THEN BETA_TAC) THEN (((((use_arg_then2 ("set_of_edge", [set_of_edge]))(thm_tac (new_rewrite [1] [])))) THEN (((use_arg_then2 ("inE", [inE]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["ww'_in1"])) THEN (move ["_"])));
397    ((((fun arg_tac -> (use_arg_then2 ("set_of_edge_delete_eq2", [set_of_edge_delete_eq2])) (fun fst_arg -> (use_arg_then2 ("ww'_in1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("CARD_CLAUSES", [CARD_CLAUSES]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("finite_set_of_edge", [finite_set_of_edge]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("E2_def", []))(thm_tac (new_rewrite [] [])))));
398    ((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("set_of_edge_delete_eq", [set_of_edge_delete_eq]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
399    ((((use_arg_then2 ("card_ineq2", [])) (disch_tac [])) THEN (clear_assumption "card_ineq2") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
400 ];;
401
402 (* Finalization of the section Fan *)
403 let ys_fan_eq = Sections.finalize_theorem ys_fan_eq;;
404 let fan_delta_y_pos = Sections.finalize_theorem fan_delta_y_pos;;
405 let fan_delta_y_pos2 = Sections.finalize_theorem fan_delta_y_pos2;;
406 let fan_ups_x_pos = Sections.finalize_theorem fan_ups_x_pos;;
407 let dih_y_le_azim_dart = Sections.finalize_theorem dih_y_le_azim_dart;;
408 let azim_sum_sigma_fan = Sections.finalize_theorem azim_sum_sigma_fan;;
409 let fan_delete_edge = Sections.finalize_theorem fan_delete_edge;;
410 let set_of_edge_delete_eq = Sections.finalize_theorem set_of_edge_delete_eq;;
411 let set_of_edge_delete_eq2 = Sections.finalize_theorem set_of_edge_delete_eq2;;
412 let card_set_of_edge_delete = Sections.finalize_theorem card_set_of_edge_delete;;
413 let sigma_fan_delete1 = Sections.finalize_theorem sigma_fan_delete1;;
414 let azim_dart_sum_delete = Sections.finalize_theorem azim_dart_sum_delete;;
415 Sections.end_section "Fan";;
416
417 (* Section FullySurrounded *)
418 Sections.begin_section "FullySurrounded";;
419 (Sections.add_section_var (mk_var ("V", (`:real^3->bool`))));;
420 (Sections.add_section_var (mk_var ("E", (`:(real^3->bool)->bool`))));;
421 (Sections.add_section_hyp "fanV" (`FAN (vec 0,V,E)`));;
422 (Sections.add_section_hyp "f_surr" (`fully_surrounded (V,E)`));;
423
424 (* Let dartH *)
425 Sections.add_section_lemma "dartH" (Sections.section_proof []
426 `dart (hypermap_of_fan (V,E)) = dart_of_fan (V,E)`
427 [
428    ((((use_arg_then2 ("COMPONENTS_HYPERMAP_OF_FAN", [COMPONENTS_HYPERMAP_OF_FAN]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
429 ]);;
430
431 (* Let dart1_eq *)
432 Sections.add_section_lemma "dart1_eq" (Sections.section_proof []
433 `dart1_of_fan (V,E) = dart_of_fan (V,E)`
434 [
435    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
436 ]);;
437
438 (* Section Pack *)
439 Sections.begin_section "Pack";;
440 (Sections.add_section_hyp "subV" (`V SUBSET ball_annulus`));;
441 (Sections.add_section_hyp "packV" (`packing V`));;
442
443 (* Section PerimZ *)
444 Sections.begin_section "PerimZ";;
445 (Sections.add_section_hyp "h_fan" (`lp_fan (V,E)`));;
446 (Sections.add_section_hyp "ineq1" ((hd (Ineq.getexact "5584033259")).ineq));;
447 (Sections.add_section_hyp "ineq2" ((hd (Ineq.getexact "6170936724")).ineq));;
448 (Sections.add_section_hyp "ineq3" ((hd (Ineq.getexact "5691615370")).ineq));;
449
450 (* Lemma perimZ *)
451 let perimZ = Sections.section_proof ["d"]
452 `d IN darts_k 4 (hypermap_of_fan (V,E))
453         ==> &3 <= y4'_fan (V,E) d /\ &3 <= y4'_fan (V,E) (f_fan_pair_ext (V,E) d)
454         /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d <= #2.52
455         /\ y8_fan (V,E) d <= #2.52 /\ y9_fan (V,E) d <= #2.52
456         ==> #8.472 <= y5_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d)
457                         + y6_fan (inverse (f_fan_pair_ext (V,E)) d)
458                         + y5_fan (V,E) (f_fan_pair_ext (V,E) d)
459                         + y6_fan (f_fan_pair_ext (V,E) d)`
460 [
461    (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (move ["vw_in4"]) THEN (move ["bounds"]));
462    ((((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 ["_"])));
463    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("dart4_y_invf_eq", [dart4_y_invf_eq])) (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 ((TRY done_tac)) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("dart4_yf_eq", [dart4_yf_eq])) (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 ((TRY done_tac)));
464    ((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 ("Lp_details.LEMMA_5691615370", [Lp_details.LEMMA_5691615370])) (fun fst_arg -> (use_arg_then2 ("ineq1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("ineq2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("ineq3", [])) (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) (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))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
465    (((((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (ANTS_TAC));
466    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#3.0 = &3`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
467    ((repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y9_lo", [y9_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 ("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 ("y5_lo", [y5_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("y8_lo", [y8_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
468    (((repeat_tactic 1 9 (((use_arg_then2 ("y4'_hi", [y4'_hi]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("h_fan", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))) 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));
469    ((THENL_LAST) case ((arith_tac) THEN (done_tac)));
470    ((((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_delta_y_pos2", [fan_delta_y_pos2])) (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_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
471 ];;
472
473 (* Section Std *)
474 Sections.begin_section "Std";;
475 (Sections.add_section_hyp "std" (`E = ESTD V`));;
476
477 (* Lemma perimZ_std *)
478 let perimZ_std = Sections.section_proof ["d"]
479 `d IN darts_k 4 (hypermap_of_fan (V,E))
480         ==> &3 <= y4'_fan (V,E) d /\ &3 <= y4'_fan (V,E) (f_fan_pair_ext (V,E) d)
481         ==> #8.472 <= y5_fan (V,E) (inverse (f_fan_pair_ext (V,E)) d)
482                         + y6_fan (inverse (f_fan_pair_ext (V,E)) d)
483                         + y5_fan (V,E) (f_fan_pair_ext (V,E) d)
484                         + y6_fan (f_fan_pair_ext (V,E) d)`
485 [
486    ((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 (((use_arg_then2 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
487    (((((fun arg_tac -> (use_arg_then2 ("perimZ", [perimZ])) (fun fst_arg -> (use_arg_then2 ("d_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((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 ("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 ("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));
488 ];;
489
490 (* Finalization of the section Std *)
491 let perimZ_std = Sections.finalize_theorem perimZ_std;;
492 Sections.end_section "Std";;
493
494 (* Finalization of the section PerimZ *)
495 let perimZ = Sections.finalize_theorem perimZ;;
496 let perimZ_std = Sections.finalize_theorem perimZ_std;;
497 Sections.end_section "PerimZ";;
498
499 (* Section Yapex_sup_flat *)
500 Sections.begin_section "Yapex_sup_flat";;
501 (Sections.add_section_hyp "ineq1" ((hd (Ineq.getexact "6170936724")).ineq));;
502 (Sections.add_section_hyp "ineq_a" ((hd (Ineq.getexact "8673686234 a")).ineq));;
503 (Sections.add_section_hyp "ineq_b" ((hd (Ineq.getexact "8673686234 b")).ineq));;
504 (Sections.add_section_hyp "ineq_c" ((hd (Ineq.getexact "8673686234 c")).ineq));;
505
506 (* Lemma yapex_sup_flat_fan *)
507 let yapex_sup_flat_fan = Sections.section_proof ["d"]
508 `let d2 = 
509                 inverse (f_fan_pair_ext (V,E)) (e_fan_pair_ext (V,E) (f_fan_pair_ext (V,E) d)) in
510         d IN darts_k 3 (hypermap_of_fan (V,E))
511         /\ CARD (face (hypermap_of_fan (V,E)) d2) = 3
512         /\ y6_fan d <= #2.52 /\ y5_fan (V,E) d <= #2.52
513         /\ y6_fan d2 <= #2.52 /\ y5_fan (V,E) d2 <= #2.52
514         /\ y4_fan (V,E) d <= ye_fan (FST d, FST d2)
515         /\ sqrt8 <= y4_fan (V,E) d /\ y4_fan (V,E) d <= &3
516         ==> y5_fan (V,E) d + y6_fan d + y5_fan (V,E) d2 + y6_fan d2 - #7.99
517                 >= #2.75 * (y4_fan (V,E) d - sqrt8)`
518 [
519    ((repeat_tactic 1 9 ((CONV_TAC let_CONV))) THEN (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["v"]) THEN (move ["w"]) THEN (case THEN (move ["vw_in3"])) THEN (case THEN (move ["card_f2"])) THEN (move ["bounds"])));
520    ((fun arg_tac -> arg_tac (Arg_term (`inverse _1 _2`))) (term_tac (set_tac "d2")));
521    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E v w`))) (term_tac (set_tac "w'")));
522    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E w' w`))) (term_tac (set_tac "u")));
523    ((((use_arg_then2 ("vw_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 ["vw_in"])) THEN (move ["card_f"])));
524    ((((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"])));
525    ((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 ("card_f", [])) (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 ALL_TAC));
526    ((((use_arg_then2 ("w'_def", []))(thm_tac (new_rewrite [] [])))) THEN (move ["f_eq1"]));
527    ((fun arg_tac -> arg_tac (Arg_term (`d2 = u,w'`))) (term_tac (have_gen_tac [](move ["d2_eq"]))));
528    ((((use_arg_then2 ("d2_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 ("vw_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("f_eq1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("e_fan_pair_ext", [e_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_eq1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("e_fan_pair", [e_fan_pair]))(thm_tac (new_rewrite [] [])))));
529    (((((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_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_eq1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("u_def", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
530    ((fun arg_tac -> arg_tac (Arg_term (`d2 IN dart1_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["d2_in1"]))));
531    ((((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("INVERSE_F_IN_DART1_OF_FAN", [INVERSE_F_IN_DART1_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 [] [])))));
532    (((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 (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((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));
533    ((((use_arg_then2 ("d2_in1", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (move ["d2_in"])));
534    ((fun arg_tac -> arg_tac (Arg_term (`y5_fan (V,E) d2 = dist (w, u)`))) (term_tac (have_gen_tac [](move ["y5_eq2"]))));
535    ((((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("pair_expand", [pair_expand]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INVERSE_F_FAN_PAIR_EXT_EXPLICIT", [INVERSE_F_FAN_PAIR_EXT_EXPLICIT]))(thm_tac (new_rewrite [2] [])))) THEN ((TRY done_tac)));
536    (((((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d2_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (congr_tac (`dist (_1, u)`)));
537    ((fun arg_tac -> arg_tac (Arg_term (`inverse (f_fan_pair_ext (V,E)) d2 = (f_fan_pair_ext (V,E) POWER 2) d2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
538    ((((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE 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)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f2", []))(thm_tac (new_rewrite [] [])))));
539    (((((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d2_in1", []))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
540    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`3 - 2 = 1`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
541    ((((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
542    ((((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 ("d2_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 [] [])))));
543    ((repeat_tactic 1 9 (((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_eq1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("e_fan_pair_ext", [e_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_eq1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("e_fan_pair", [e_fan_pair]))(thm_tac (new_rewrite [] [])))));
544    (((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("f_eq1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("f_fan_pair", [f_fan_pair]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
545    ((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 -> (fun arg_tac -> (use_arg_then2 ("Lp_details.LEMMA_8673686234", [Lp_details.LEMMA_8673686234])) (fun fst_arg -> (use_arg_then2 ("ineq1", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("ineq_a", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("ineq_b", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("ineq_c", [])) (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) (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) d2`))) (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 (`ye_fan (v,u)`))) (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 (`y6_fan d2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
546    (((((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (ANTS_TAC));
547    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#3.0 = &3 /\ &2 * h0 = #2.52`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((((use_arg_then2 ("h0", [h0]))(thm_tac (new_rewrite [] [])))) THEN (arith_tac) THEN (done_tac)));
548    ((repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((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 ("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 ("y6_lo", [y6_lo])) (fun fst_arg -> (use_arg_then2 ("d2_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 (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))));
549    ((THENL) (split_tac) [(((use_arg_then2 ("REAL_LE_TRANS", [REAL_LE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LE_TRANS") THEN (DISCH_THEN apply_tac)); ((((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN ((use_arg_then2 ("DIST_TRIANGLE_LE", [DIST_TRIANGLE_LE])) (thm_tac apply_tac)))]);
550    (((fun arg_tac -> arg_tac (Arg_term (`y4_fan (V,E) (v,w)`))) (term_tac exists_tac)) THEN (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))));
551    ((((use_arg_then2 ("bounds", [])) (disch_tac [])) THEN (clear_assumption "bounds") THEN BETA_TAC) THEN (((((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("FST", [FST]))(thm_tac (new_rewrite [] [])))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
552    (((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 [] []))))));
553    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`v IN ball_annulus /\ u IN ball_annulus`))) (term_tac (have_gen_tac []ALL_TAC)))) ((repeat_tactic 1 9 (((use_arg_then2 ("Fnjlbxs.in_ball_annulus", [Fnjlbxs.in_ball_annulus]))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac)));
554    ((((use_arg_then2 ("subV", [])) (disch_tac [])) THEN (clear_assumption "subV") THEN BETA_TAC) THEN ((((use_arg_then2 ("SUBSET", [SUBSET]))(thm_tac (new_rewrite [] [])))) THEN (move ["subV"])) THEN ((repeat_tactic 1 9 (((use_arg_then2 ("subV", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))));
555    ((((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 ("vw_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
556    ((((use_arg_then2 ("d2_in", [])) (disch_tac [])) THEN (clear_assumption "d2_in") THEN BETA_TAC) THEN ((((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) 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 (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac));
557    ((THENL_FIRST) case ((arith_tac) THEN (done_tac)));
558    ((THENL_LAST) case ((((use_arg_then2 ("real_lt", [real_lt]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("bounds", [])) (disch_tac [])) THEN (clear_assumption "bounds") THEN BETA_TAC) THEN (((((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("FST", [FST]))(thm_tac (new_rewrite [] [])))))) THEN (((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
559    ((((use_arg_then2 ("contraLR", [contraLR])) (disch_tac [])) THEN (clear_assumption "contraLR") THEN (DISCH_THEN apply_tac) THEN (move ["_"])) THEN (((use_arg_then2 ("REAL_NOT_LT", [REAL_NOT_LT]))(thm_tac (new_rewrite [] [])))));
560    ((((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 [] []))))) THEN (((use_arg_then2 ("y5_eq2", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] []))))));
561    ((((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 ("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 [] [])))));
562    ((((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_eq1", []))(thm_tac (new_rewrite [] [])))) THEN (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 (((fun arg_tac -> (use_arg_then2 ("DIST_SYM", [DIST_SYM])) (fun fst_arg -> (use_arg_then2 ("u", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))));
563    ((((use_arg_then2 ("Collect_geom.DELTA_POS_4POINTS", [Collect_geom.DELTA_POS_4POINTS]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
564 ];;
565 (Sections.add_section_var (mk_var ("g", (`:num#num -> real^3#real^3`))));;
566 (Sections.add_section_var (mk_var ("h", (`:num -> real^3`))));;
567 (Sections.add_section_var (mk_var ("L", (`:((num)list)list`))));;
568 (Sections.add_section_hyp "goodL" (`good_list L`));;
569 (Sections.add_section_hyp "g_iso" (`hyp_iso g (hypermap_of_list L, hypermap_of_fan (V,E))`));;
570 (Sections.add_section_hyp "g_eq" (`!d. g d = h (FST d), h (SND d)`));;
571
572 (* Lemma yapex_sup_flat_list *)
573 let yapex_sup_flat_list = Sections.section_proof []
574 `ALL (\d. let d2 = inverse (f_list_ext L) (e_list (f_list_ext L d)) in
575         LENGTH (find_face L d2) = 3
576         /\ ye_list g d <= #2.52 /\ ye_list g (inverse (f_list_ext L) d) <= #2.52
577         /\ ye_list g d2 <= #2.52 /\ ye_list g (f_list_ext L (e_list (f_list_ext L d))) <= #2.52
578         /\ ye_list g (f_list_ext L d) <= ye_list g (FST d, FST d2)
579         /\ sqrt8 <= ye_list g (f_list_ext L d) /\ ye_list g (f_list_ext L d) <= &3
580         ==>  y5_list (g,V,E) d + y6_list g d + y5_list (g,V,E) d2 + y6_list g d2 - #7.99 
581                     >= #2.75 * (y4_list (g,V,E) d - sqrt8)) (list_of_darts3 L)`
582 [
583    (((((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["d"]) THEN (move ["mem_d"]) THEN (simp_tac)) THEN (CONV_TAC let_CONV) THEN (BETA_TAC THEN (case THEN (move ["size_f"])) THEN (move ["cond"])));
584    ((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 ["hypH"])));
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 (move ["hypL"])));
586    ((((use_arg_then2 ("mem_d", [])) (disch_tac [])) 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 ("darts3_eq_list_of_darts3", [darts3_eq_list_of_darts3]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))));
587    (((((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 ["card_f"]))));
588    ((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE yapex_sup_flat_fan))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`g d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
589    ((fun arg_tac -> arg_tac (Arg_term (`inverse (f_list_ext L) _`))) (term_tac (set_tac "d2")));
590    ((fun arg_tac -> arg_tac (Arg_term (`f_list_ext L d`))) (term_tac (set_tac "d'")));
591    ((fun arg_tac -> arg_tac (Arg_term (`d' IN darts_of_list L`))) (term_tac (have_gen_tac [](move ["d'_in"]))));
592    (((((use_arg_then2 ("d'_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("hypL", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
593    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`e_list_ext L d' = e_list d'`))) (term_tac (have_gen_tac [](move ["e_list_eq"])))) (((((use_arg_then2 ("e_list_ext", [e_list_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("hypL", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac)));
594    ((fun arg_tac -> arg_tac (Arg_term (`d2 IN dart (hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["d2_in"]))));
595    (((((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("e_list_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("hypL", []))(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 (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
596    ((fun arg_tac -> arg_tac (Arg_term (`inverse _1 _2`))) (term_tac (set_tac "x2")));
597    ((fun arg_tac -> arg_tac (Arg_term (`x2 = g d2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
598    ((((use_arg_then2 ("x2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("hypH", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("hyp_iso_comm", [hyp_iso_comm])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
599    (((((fun arg_tac -> (use_arg_then2 ("hyp_iso_inverse_comm", [hyp_iso_inverse_comm])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
600    (((use_arg_then2 ("x2_def", [])) (disch_tac [])) THEN (clear_assumption "x2_def") THEN BETA_TAC THEN (move ["_"]));
601    (((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 (DISCH_THEN apply_tac));
602    ((fun arg_tac -> arg_tac (Arg_term (`CARD (face (hypermap_of_fan (V,E)) (g d2)) = 3`))) (term_tac (have_gen_tac [](move ["card_f2"]))));
603    ((((fun arg_tac -> (use_arg_then2 ("hyp_iso_card_components", [hyp_iso_card_components])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (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 ("card_face_of_list", [card_face_of_list]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("Seq.size", [Seq.size]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
604    (((((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 ("hypL", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
605    ((((use_arg_then2 ("card_f2", []))(thm_tac (new_rewrite [] [])))) THEN (((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 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (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 ("hyp_iso_card_components", [hyp_iso_card_components])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (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 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
606    ((((use_arg_then2 ("cond", [])) (disch_tac [])) THEN (clear_assumption "cond") THEN BETA_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 ALL_TAC THEN (move ["cond"])));
607    (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`y5_fan (V,E) (g d2) = ye_fan (g (f_list_ext L (e_list d')))`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))));
608    ((repeat_tactic 1 9 (((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y4_fan", [y4_fan]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ye_fan", [ye_fan]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("hypH", []))(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 ("g_iso", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("hypL", []))(thm_tac (new_rewrite [] [])))));
609    ((repeat_tactic 1 9 (((use_arg_then2 ("cond", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((fun arg_tac -> (use_arg_then2 ("hyp_iso_comm", [hyp_iso_comm])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("hypL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d'_def", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("cond", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
610    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`FST (g d), FST (g d2) = g (FST d, FST d2)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))))) ((ALL_TAC) THEN (done_tac)));
611    ((repeat_tactic 1 9 (((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
612    (((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] []))));
613    ((fun arg_tac -> arg_tac (Arg_term (`inverse (f_fan_pair_ext (V,E)) (g d2) = (f_fan_pair_ext (V,E) POWER 2) (g d2)`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
614    ((((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)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("card_f2", []))(thm_tac (new_rewrite [] [])))));
615    (((((use_arg_then2 ("hypH", []))(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 ("g_iso", [])) (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));
616    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`3 - 2 = 1`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] []))))))) ((arith_tac) THEN (done_tac)));
617    ((((use_arg_then2 ("POWER_1", [POWER_1]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
618    ((((use_arg_then2 ("hypH", []))(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 ("g_iso", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("hypL", []))(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 [] [])))));
619    (((((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 (repeat_tactic 0 10 (((use_arg_then2 ("hypL", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("face_map_and_darts", [face_map_and_darts]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
620 ];;
621
622 (* Finalization of the section Yapex_sup_flat *)
623 let yapex_sup_flat_fan = Sections.finalize_theorem yapex_sup_flat_fan;;
624 let yapex_sup_flat_list = Sections.finalize_theorem yapex_sup_flat_list;;
625 Sections.end_section "Yapex_sup_flat";;
626
627 (* Section Std3_small *)
628 Sections.begin_section "Std3_small";;
629
630 (* Lemma extra_ineqs_std3_small *)
631 let extra_ineqs_std3_small = Sections.section_proof ["d"]
632 `d IN darts_k 3 (hypermap_of_fan (V,E))
633         ==> y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d <= #6.25
634         ==> y4_fan (V,E) d <= #2.25 /\ y5_fan (V,E) d <= #2.25 /\ y6_fan d <= #2.25`
635 [
636    (((((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 ["_"]));
637    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&2 <= y4_fan (V,E) d /\ &2 <= y5_fan (V,E) d /\ &2 <= y6_fan d`))) (term_tac (have_gen_tac []ALL_TAC)))) ((arith_tac) THEN (done_tac)));
638    (((((use_arg_then2 ("y4_lo", [y4_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 (done_tac));
639 ];;
640
641 (* Finalization of the section Std3_small *)
642 let extra_ineqs_std3_small = Sections.finalize_theorem extra_ineqs_std3_small;;
643 Sections.end_section "Std3_small";;
644
645 (* Section Std3_big *)
646 Sections.begin_section "Std3_big";;
647
648 (* Lemma extra_ineq_std3_big *)
649 let extra_ineq_std3_big = Sections.section_proof ["d"]
650 `d IN darts_k 3 (hypermap_of_fan (V,E))
651         ==> #2.25 <= ye_fan d
652         ==> #6.25 <= y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d`
653 [
654    (((((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 ["_"]));
655    (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`&2 <= y4_fan (V,E) d /\ &2 <= y5_fan (V,E) d /\ &2 <= y6_fan d`))) (term_tac (have_gen_tac []ALL_TAC))));
656    (((((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac));
657    (((((use_arg_then2 ("y4_lo", [y4_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 (done_tac));
658 ];;
659
660 (* Section Ineq77 *)
661 Sections.begin_section "Ineq77";;
662 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "8611785756")).ineq));;
663
664 (* Lemma ineq77 *)
665 let ineq77 = Sections.section_proof ["d"]
666 `d IN darts_k 3 (hypermap_of_fan (V,E))
667         ==> y1_fan d <= #2.18 /\ y2_fan d <= #2.18 /\ y3_fan (V,E) d <= #2.18
668         /\ y4_fan (V,E) d <= #2.52 /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d <= #2.52
669         /\ #6.25 <= y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d
670         ==> (sol_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.589)
671         + #0.24 * (y1_fan d + y2_fan d + y3_fan (V,E) d - #6.0)
672         - #0.16 * (y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d - #6.25) >= &0`
673 [
674    ((BETA_TAC THEN (move ["d_in3"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
675    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
676    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
677    ((((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 ["_"])));
678    ((((use_arg_then2 ("dart3_sol_fan_eq_sol", [dart3_sol_fan_eq_sol]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
679    ((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 (`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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
680    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8 /\ #3.0 = &3`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
681    (((((use_arg_then2 ("Ineq.dart_std3_big_200_218", [Ineq.dart_std3_big_200_218]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (ANTS_TAC));
682    (((repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) 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 (((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)) THEN (((use_arg_then2 ("y4_lo", [y4_lo]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
683    (((((use_arg_then2 ("real_lt", [real_lt]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
684 ];;
685
686 (* Section Std *)
687 Sections.begin_section "Std";;
688 (Sections.add_section_hyp "std" (`E = ESTD V`));;
689
690 (* Lemma ineq77_std *)
691 let ineq77_std = Sections.section_proof ["d"]
692 `d IN darts_k 3 (hypermap_of_fan (V,E))
693         ==> y1_fan d <= #2.18 /\ y2_fan d <= #2.18 /\ y3_fan (V,E) d <= #2.18
694         /\ #6.25 <= y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d
695         ==> (sol_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.589)
696         + #0.24 * (y1_fan d + y2_fan d + y3_fan (V,E) d - #6.0)
697         - #0.16 * (y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d - #6.25) >= &0`
698 [
699    ((BETA_TAC THEN (move ["d_in3"]) THEN (move ["bounds"])) THEN (((fun arg_tac -> (use_arg_then2 ("ineq77", [ineq77])) (fun fst_arg -> (use_arg_then2 ("d_in3", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)));
700    ((((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 ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
701    (((repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y4_hi_std2", [y4_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((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 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
702 ];;
703
704 (* Finalization of the section Std *)
705 let ineq77_std = Sections.finalize_theorem ineq77_std;;
706 Sections.end_section "Std";;
707
708 (* Finalization of the section Ineq77 *)
709 let ineq77 = Sections.finalize_theorem ineq77;;
710 let ineq77_std = Sections.finalize_theorem ineq77_std;;
711 Sections.end_section "Ineq77";;
712
713 (* Section Ineq89 *)
714 Sections.begin_section "Ineq89";;
715 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "6224332984")).ineq));;
716
717 (* Lemma ineq89 *)
718 let ineq89 = Sections.section_proof ["d"]
719 `d IN darts_k 3 (hypermap_of_fan (V,E))
720         ==> y4_fan (V,E) d <= #2.52 /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d <= #2.52
721         /\ #6.25 <= y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d
722         ==> (sol_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.589)
723         + #0.39 * (y1_fan d + y2_fan d + y3_fan (V,E) d - #6.0)
724         - #0.235 * (y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d - #6.25) >= &0`
725 [
726    ((BETA_TAC THEN (move ["d_in3"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
727    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
728    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
729    ((((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 ["_"])));
730    ((((use_arg_then2 ("dart3_sol_fan_eq_sol", [dart3_sol_fan_eq_sol]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
731    ((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 (`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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
732    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8 /\ #3.0 = &3`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
733    (((((use_arg_then2 ("Ineq.dart_std3_big", [Ineq.dart_std3_big]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Ineq.dart_std3", [Ineq.dart_std3]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (ANTS_TAC));
734    ((repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) 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 (((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)) THEN (((use_arg_then2 ("y4_lo", [y4_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
735    (((((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 ("y3_hi", [y3_hi]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
736    (((((use_arg_then2 ("real_lt", [real_lt]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
737 ];;
738
739 (* Section Std *)
740 Sections.begin_section "Std";;
741 (Sections.add_section_hyp "std" (`E = ESTD V`));;
742
743 (* Lemma ineq89_std *)
744 let ineq89_std = Sections.section_proof ["d"]
745 `d IN darts_k 3 (hypermap_of_fan (V,E))
746         ==> #6.25 <= y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d
747         ==> (sol_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.589)
748         + #0.39 * (y1_fan d + y2_fan d + y3_fan (V,E) d - #6.0)
749         - #0.235 * (y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d - #6.25) >= &0`
750 [
751    ((BETA_TAC THEN (move ["d_in3"]) THEN (move ["bounds"])) THEN (((fun arg_tac -> (use_arg_then2 ("ineq89", [ineq89])) (fun fst_arg -> (use_arg_then2 ("d_in3", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)));
752    ((((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 ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
753    (((repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y4_hi_std2", [y4_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((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 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
754 ];;
755
756 (* Finalization of the section Std *)
757 let ineq89_std = Sections.finalize_theorem ineq89_std;;
758 Sections.end_section "Std";;
759
760 (* Finalization of the section Ineq89 *)
761 let ineq89 = Sections.finalize_theorem ineq89;;
762 let ineq89_std = Sections.finalize_theorem ineq89_std;;
763 Sections.end_section "Ineq89";;
764
765 (* Section Ineq90 *)
766 Sections.begin_section "Ineq90";;
767 (Sections.add_section_hyp "h_tau" (`lp_tau (V,E)`));;
768 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "7761782916")).ineq));;
769
770 (* Lemma ineq90 *)
771 let ineq90 = Sections.section_proof ["d"]
772 `d IN darts_k 3 (hypermap_of_fan (V,E))
773         ==> y4_fan (V,E) d <= #2.52 /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d <= #2.52
774         /\ #6.25 <= y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d
775         ==> (tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.05)
776         - #0.137 * (y1_fan d + y2_fan d + y3_fan (V,E) d - #6.0)
777         - #0.17 * (y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d - #6.25) >= &0`
778 [
779    ((BETA_TAC THEN (move ["d_in3"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
780    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
781    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
782    ((((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 ["_"])));
783    ((((use_arg_then2 ("dart3_tau_fan_eq_taum", [dart3_tau_fan_eq_taum]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
784    ((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 (`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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
785    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#2.0 = &2 /\ #0.0 = &0`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
786    (((((use_arg_then2 ("Ineq.dart_std3_big", [Ineq.dart_std3_big]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Ineq.dart_std3", [Ineq.dart_std3]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac)) THEN (ANTS_TAC));
787    ((repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) 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 (((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)) THEN (((use_arg_then2 ("y4_lo", [y4_lo]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
788    (((((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 ("y3_hi", [y3_hi]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
789    (((((use_arg_then2 ("real_lt", [real_lt]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
790 ];;
791
792 (* Section Std *)
793 Sections.begin_section "Std";;
794 (Sections.add_section_hyp "std" (`E = ESTD V`));;
795
796 (* Lemma ineq90_std *)
797 let ineq90_std = Sections.section_proof ["d"]
798 `d IN darts_k 3 (hypermap_of_fan (V,E))
799         ==> #6.25 <= y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d
800         ==> (tau_fan (V,E) (face (hypermap_of_fan (V,E)) d) - #0.05)
801         - #0.137 * (y1_fan d + y2_fan d + y3_fan (V,E) d - #6.0)
802         - #0.17 * (y4_fan (V,E) d + y5_fan (V,E) d + y6_fan d - #6.25) >= &0`
803 [
804    ((BETA_TAC THEN (move ["d_in3"]) THEN (move ["bounds"])) THEN (((fun arg_tac -> (use_arg_then2 ("ineq90", [ineq90])) (fun fst_arg -> (use_arg_then2 ("d_in3", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)));
805    ((((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 ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
806    (((repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("y4_hi_std2", [y4_hi_std2]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((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 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
807 ];;
808
809 (* Finalization of the section Std *)
810 let ineq90_std = Sections.finalize_theorem ineq90_std;;
811 Sections.end_section "Std";;
812
813 (* Finalization of the section Ineq90 *)
814 let ineq90 = Sections.finalize_theorem ineq90;;
815 let ineq90_std = Sections.finalize_theorem ineq90_std;;
816 Sections.end_section "Ineq90";;
817
818 (* Finalization of the section Std3_big *)
819 let extra_ineq_std3_big = Sections.finalize_theorem extra_ineq_std3_big;;
820 let ineq77 = Sections.finalize_theorem ineq77;;
821 let ineq77_std = Sections.finalize_theorem ineq77_std;;
822 let ineq89 = Sections.finalize_theorem ineq89;;
823 let ineq89_std = Sections.finalize_theorem ineq89_std;;
824 let ineq90 = Sections.finalize_theorem ineq90;;
825 let ineq90_std = Sections.finalize_theorem ineq90_std;;
826 Sections.end_section "Std3_big";;
827
828 (* Section Ineq71 *)
829 Sections.begin_section "Ineq71";;
830 (Sections.add_section_hyp "h_fan" (`lp_fan (V,E)`));;
831 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "181212899 5")).ineq));;
832
833 (* Lemma ineq71 *)
834 let ineq71 = Sections.section_proof ["d"]
835 `d IN darts_k 5 (hypermap_of_fan (V,E))
836         ==> #2.52 <= y5_fan (V,E) d /\ y5_fan (V,E) d <= sqrt8
837         /\ y6_fan d <= #2.52
838         ==> (azim_dart (V,E) d - #1.448)
839         - #0.266 * (y1_fan d - &2) + #0.295 * (y3_fan (V,E) d - &2) 
840         + #0.57 * (y2_fan d - &2) - #0.745 * (#2.52 - #2.52)
841         + #0.268 * (y6_fan d - &2) + #0.385 * (y5_fan (V,E) d - #2.52) >= &0`
842 [
843    ((BETA_TAC THEN (move ["d_in5"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
844    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
845    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
846    ((((use_arg_then2 ("d_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 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
847    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
848    ((fun arg_tac -> arg_tac (Arg_term (`#0.295 * _1 + _2`))) (term_tac (set_tac "s2")));
849    ((fun arg_tac -> arg_tac (Arg_term (`_1 * _2`))) (term_tac (set_tac "s1")));
850    (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac));
851    ((fun arg_tac -> arg_tac (Arg_term (`(dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (#2.52) 
852         (y5_fan (V,E) d) (y6_fan d) - #1.448) - s1 + s2`))) (term_tac exists_tac));
853    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8 /\ #3.0 = &3`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
854    (split_tac);
855    ((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 (`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 (`#2.52`))) (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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
856    (((((use_arg_then2 ("Ineq.apexff5", [Ineq.apexff5]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("s1_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("s2_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
857    ((((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 ("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_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)));
858    (((((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 (((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 (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
859    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))));
860    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
861    ((THENL_FIRST) (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("y4'_lo_2h0", [y4'_lo_2h0])) (fun fst_arg -> (use_arg_then2 ("d_in5", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("h_fan", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) ((arith_tac) THEN (done_tac)));
862    ((THENL_FIRST) ((split_tac) THEN (simp_tac)) ((arith_tac) THEN (done_tac)));
863    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
864    ((((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 ("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_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)));
865    ((((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 ("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)));
866    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= sqrt8 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq1"])))) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
867    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
868    (((((fun arg_tac -> (use_arg_then2 ("ineq1", [])) (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)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ineq2", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
869 ];;
870
871 (* Finalization of the section Ineq71 *)
872 let ineq71 = Sections.finalize_theorem ineq71;;
873 Sections.end_section "Ineq71";;
874
875 (* Section Ineq72 *)
876 Sections.begin_section "Ineq72";;
877 (Sections.add_section_hyp "h_fan" (`lp_fan (V,E)`));;
878 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "181212899 4")).ineq));;
879
880 (* Lemma ineq72 *)
881 let ineq72 = Sections.section_proof ["d"]
882 `d IN darts_k 5 (hypermap_of_fan (V,E))
883         ==> #2.52 <= y6_fan d /\ y6_fan d <= sqrt8
884         /\ y5_fan (V,E) d <= #2.52
885         ==> (azim_dart (V,E) d - #1.448)
886         - #0.266 * (y1_fan d - &2) + #0.295 * (y2_fan d - &2) 
887         + #0.57 * (y3_fan (V,E) d - &2) - #0.745 * (#2.52 - #2.52)
888         + #0.268 * (y5_fan (V,E) d - &2) + #0.385 * (y6_fan d - #2.52) >= &0`
889 [
890    ((BETA_TAC THEN (move ["d_in5"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
891    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
892    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
893    ((((use_arg_then2 ("d_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 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
894    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
895    ((fun arg_tac -> arg_tac (Arg_term (`#0.295 * _1 + _2`))) (term_tac (set_tac "s2")));
896    ((fun arg_tac -> arg_tac (Arg_term (`_1 * _2`))) (term_tac (set_tac "s1")));
897    (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac));
898    ((fun arg_tac -> arg_tac (Arg_term (`(dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (#2.52) 
899         (y5_fan (V,E) d) (y6_fan d) - #1.448) - s1 + s2`))) (term_tac exists_tac));
900    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8 /\ #3.0 = &3`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
901    (split_tac);
902    ((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 (`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 (`#2.52`))) (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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
903    (((((use_arg_then2 ("Ineq.apexf5", [Ineq.apexf5]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("s1_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("s2_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
904    ((((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 ("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_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)));
905    (((((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 (((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 (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
906    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))));
907    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
908    ((THENL_FIRST) (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("y4'_lo_2h0", [y4'_lo_2h0])) (fun fst_arg -> (use_arg_then2 ("h_fan", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("d_in5", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) ((arith_tac) THEN (done_tac)));
909    ((THENL_FIRST) ((split_tac) THEN (simp_tac)) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
910    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
911    ((((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 ("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_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)));
912    ((((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 ("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)));
913    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= sqrt8 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq1"])))) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
914    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
915    ((THENL_LAST) ((((fun arg_tac -> (use_arg_then2 ("ineq2", [])) (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)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ineq1", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) ((arith_tac) THEN (done_tac)));
916    ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
917 ];;
918
919 (* Finalization of the section Ineq72 *)
920 let ineq72 = Sections.finalize_theorem ineq72;;
921 Sections.end_section "Ineq72";;
922
923 (* Section Ineq73 *)
924 Sections.begin_section "Ineq73";;
925 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "181212899 3")).ineq));;
926
927 (* Lemma ineq73 *)
928 let ineq73 = Sections.section_proof ["d"]
929 `d IN darts_k 4 (hypermap_of_fan (V,E))
930         ==> #2.52 <= y5_fan (V,E) d /\ y5_fan (V,E) d <= sqrt8
931         /\ y6_fan d <= #2.52
932         /\ sqrt8 <= y4'_fan (V,E) d
933         ==> (azim_dart (V,E) d - #1.448)
934         - #0.266 * (y1_fan d - &2) + #0.295 * (y3_fan (V,E) d - &2) 
935         + #0.57 * (y2_fan d - &2) - #0.745 * (sqrt8 - #2.52)
936         + #0.268 * (y6_fan d - &2) + #0.385 * (y5_fan (V,E) d - #2.52) >= &0`
937 [
938    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
939    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
940    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
941    ((((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 ["_"])));
942    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
943    ((fun arg_tac -> arg_tac (Arg_term (`#0.295 * _1 + _2`))) (term_tac (set_tac "s2")));
944    ((fun arg_tac -> arg_tac (Arg_term (`_1 * _2`))) (term_tac (set_tac "s1")));
945    (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac));
946    ((fun arg_tac -> arg_tac (Arg_term (`(dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (sqrt8) 
947         (y5_fan (V,E) d) (y6_fan d) - #1.448) - s1 + s2`))) (term_tac exists_tac));
948    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8 /\ #3.0 = &3`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
949    (split_tac);
950    ((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 (`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 (`sqrt8`))) (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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
951    (((((use_arg_then2 ("Ineq.apexff4", [Ineq.apexff4]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("s1_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("s2_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
952    ((((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 ("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_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)));
953    (((((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 (((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 (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
954    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))));
955    ((((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
956    ((THENL_FIRST) ((split_tac) THEN (simp_tac)) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
957    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
958    ((((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 ("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_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)));
959    ((((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 ("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)));
960    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= sqrt8 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq1"])))) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
961    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
962    ((((fun arg_tac -> (use_arg_then2 ("ineq2", [])) (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)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ineq1", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
963    ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
964 ];;
965
966 (* Finalization of the section Ineq73 *)
967 let ineq73 = Sections.finalize_theorem ineq73;;
968 Sections.end_section "Ineq73";;
969
970 (* Section Ineq74 *)
971 Sections.begin_section "Ineq74";;
972 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "181212899 2")).ineq));;
973
974 (* Lemma ineq74 *)
975 let ineq74 = Sections.section_proof ["d"]
976 `d IN darts_k 4 (hypermap_of_fan (V,E))
977         ==> #2.52 <= y6_fan d /\ y6_fan d <= sqrt8
978         /\ y5_fan (V,E) d <= #2.52
979         /\ sqrt8 <= y4'_fan (V,E) d
980         ==> (azim_dart (V,E) d - #1.448)
981         - #0.266 * (y1_fan d - &2) + #0.295 * (y2_fan d - &2) 
982         + #0.57 * (y3_fan (V,E) d - &2) - #0.745 * (sqrt8 - #2.52)
983         + #0.268 * (y5_fan (V,E) d - &2) + #0.385 * (y6_fan d - #2.52) >= &0`
984 [
985    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
986    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
987    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
988    ((((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 ["_"])));
989    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
990    ((fun arg_tac -> arg_tac (Arg_term (`#0.295 * _1 + _2`))) (term_tac (set_tac "s2")));
991    ((fun arg_tac -> arg_tac (Arg_term (`_1 * _2`))) (term_tac (set_tac "s1")));
992    (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac));
993    ((fun arg_tac -> arg_tac (Arg_term (`(dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (sqrt8) 
994         (y5_fan (V,E) d) (y6_fan d) - #1.448) - s1 + s2`))) (term_tac exists_tac));
995    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8 /\ #3.0 = &3`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
996    (split_tac);
997    ((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 (`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 (`sqrt8`))) (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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
998    (((((use_arg_then2 ("Ineq.apexf4", [Ineq.apexf4]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("s1_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("s2_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
999    ((((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 ("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_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)));
1000    (((((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 (((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 (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1001    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))));
1002    ((((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1003    ((THENL_FIRST) ((split_tac) THEN (simp_tac)) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1004    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
1005    ((((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 ("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_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)));
1006    ((((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 ("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)));
1007    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= sqrt8 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq1"])))) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1008    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
1009    ((((fun arg_tac -> (use_arg_then2 ("ineq2", [])) (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)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ineq1", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 0 10 (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)));
1010    ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1011 ];;
1012
1013 (* Finalization of the section Ineq74 *)
1014 let ineq74 = Sections.finalize_theorem ineq74;;
1015 Sections.end_section "Ineq74";;
1016
1017 (* Section Ineq104 *)
1018 Sections.begin_section "Ineq104";;
1019 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "9995621667")).ineq));;
1020
1021 (* Lemma ineq104 *)
1022 let ineq104 = Sections.section_proof ["d"]
1023 `d IN darts_k 4 (hypermap_of_fan (V,E))
1024         ==> &3 <= y4'_fan (V,E) d /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d <= #2.52
1025         ==> (azim_dart (V,E) d - #2.09) 
1026         + #0.578 * (y2_fan d + y3_fan (V,E) d + y5_fan (V,E) d + y6_fan d - &8)
1027         - #0.54 * (y1_fan d - &2) >= &0`
1028 [
1029    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
1030    ((fun arg_tac -> arg_tac (Arg_term (`dart1_of_fan (V,E) = dart_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["dart1_eq"]))));
1031    ((((use_arg_then2 ("fully_surrounded_dart_of_fan_eq", [fully_surrounded_dart_of_fan_eq]))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1032    ((((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 ["_"])));
1033    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1034    ((fun arg_tac -> arg_tac (Arg_term (`_1 * _2 - _3`))) (term_tac (set_tac "s")));
1035    (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac));
1036    ((fun arg_tac -> arg_tac (Arg_term (`(dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (&3) 
1037         (y5_fan (V,E) d) (y6_fan d) - #2.09) + s`))) (term_tac exists_tac));
1038    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8 /\ #3.0 = &3`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
1039    (split_tac);
1040    ((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 (`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 (`&3`))) (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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1041    (((((use_arg_then2 ("Ineq.dart4_diag3", [Ineq.dart4_diag3]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("s_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
1042    ((((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 ("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_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)));
1043    (((((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 ("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)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1044    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))));
1045    ((((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1046    ((THENL_FIRST) ((split_tac) THEN (simp_tac)) ((arith_tac) THEN (done_tac)));
1047    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
1048    ((((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 ("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_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)));
1049    ((((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 ("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)) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] [])))));
1050    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
1051    (((repeat_tactic 1 9 (((use_arg_then2 ("ineq2", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
1052 ];;
1053
1054 (* Section Std *)
1055 Sections.begin_section "Std";;
1056 (Sections.add_section_hyp "std" (`E = ESTD V`));;
1057
1058 (* Lemma ineq104_std *)
1059 let ineq104_std = Sections.section_proof ["d"]
1060 `d IN darts_k 4 (hypermap_of_fan (V,E))
1061         ==> &3 <= y4'_fan (V,E) d
1062         ==> (azim_dart (V,E) d - #2.09) 
1063         + #0.578 * (y2_fan d + y3_fan (V,E) d + y5_fan (V,E) d + y6_fan d - &8)
1064         - #0.54 * (y1_fan d - &2) >= &0`
1065 [
1066    ((BETA_TAC THEN (move ["d_in4"]) THEN (move ["bounds"])) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("ineq104", [ineq104])) (fun fst_arg -> (use_arg_then2 ("d_in4", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bounds", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)));
1067    ((((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 ("dartH", []))(thm_tac (new_rewrite [] []))))) THEN ALL_TAC THEN (case THEN (move ["d_in"])) THEN (move ["_"])));
1068    (((((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 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1069 ];;
1070
1071 (* Finalization of the section Std *)
1072 let ineq104_std = Sections.finalize_theorem ineq104_std;;
1073 Sections.end_section "Std";;
1074
1075 (* Finalization of the section Ineq104 *)
1076 let ineq104 = Sections.finalize_theorem ineq104;;
1077 let ineq104_std = Sections.finalize_theorem ineq104_std;;
1078 Sections.end_section "Ineq104";;
1079
1080 (* Section Ineq105 *)
1081 Sections.begin_section "Ineq105";;
1082 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "9414951439")).ineq));;
1083
1084 (* Lemma ineq105 *)
1085 let ineq105 = Sections.section_proof ["d"]
1086 `d IN dart_of_fan (V,E)
1087         ==> sqrt8 <= y4'_fan (V,E) d /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d <= #2.52
1088         ==> (azim_dart (V,E) d - #1.91) 
1089         + #0.458 * (y2_fan d + y3_fan (V,E) d + y5_fan (V,E) d + y6_fan d - &8)
1090         - #0.342 * (y1_fan d - &2) >= &0`
1091 [
1092    ((BETA_TAC THEN (move ["d_in"]) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
1093    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1094    ((fun arg_tac -> arg_tac (Arg_term (`_1 * _2 - _3`))) (term_tac (set_tac "s")));
1095    (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac));
1096    ((fun arg_tac -> arg_tac (Arg_term (`(dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) sqrt8 
1097         (y5_fan (V,E) d) (y6_fan d) - #1.91) + s`))) (term_tac exists_tac));
1098    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
1099    (split_tac);
1100    ((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 (`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 (`sqrt8`))) (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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1101    (((((use_arg_then2 ("Ineq.dartY", [Ineq.dartY]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("s_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
1102    ((((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 ("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_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)));
1103    (((((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 ("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)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1104    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))));
1105    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] [])))));
1106    ((THENL_FIRST) ((split_tac) THEN (simp_tac)) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1107    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
1108    ((((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 ("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_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)));
1109    ((((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 ("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)));
1110    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
1111    ((((fun arg_tac -> (use_arg_then2 ("ineq2", [])) (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)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("ineq2", [])) (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)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1112    ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac));
1113 ];;
1114
1115 (* Section Std *)
1116 Sections.begin_section "Std";;
1117 (Sections.add_section_hyp "std" (`E = ESTD V`));;
1118
1119 (* Lemma ineq105_std *)
1120 let ineq105_std = Sections.section_proof ["d"]
1121 `d IN dart_of_fan (V,E)
1122         ==> sqrt8 <= y4'_fan (V,E) d
1123         ==> (azim_dart (V,E) d - #1.91) 
1124         + #0.458 * (y2_fan d + y3_fan (V,E) d + y5_fan (V,E) d + y6_fan d - &8)
1125         - #0.342 * (y1_fan d - &2) >= &0`
1126 [
1127    ((BETA_TAC THEN (move ["d_in"]) THEN (move ["bounds"])) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("ineq105", [ineq105])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("bounds", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)));
1128    (((((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 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1129 ];;
1130
1131 (* Finalization of the section Std *)
1132 let ineq105_std = Sections.finalize_theorem ineq105_std;;
1133 Sections.end_section "Std";;
1134
1135 (* Finalization of the section Ineq105 *)
1136 let ineq105 = Sections.finalize_theorem ineq105;;
1137 let ineq105_std = Sections.finalize_theorem ineq105_std;;
1138 Sections.end_section "Ineq105";;
1139
1140 (* Section Ineq106 *)
1141 Sections.begin_section "Ineq106";;
1142 (Sections.add_section_hyp "h_fan" (`lp_fan (V,E)`));;
1143 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "3020140039")).ineq));;
1144
1145 (* Lemma ineq106 *)
1146 let ineq106 = Sections.section_proof ["d"]
1147 `d IN dart_of_fan (V,E)
1148         ==> 3 < CARD (face (hypermap_of_fan (V,E)) d)
1149         /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d <= #2.52
1150         ==> (azim_dart (V,E) d - #1.629) 
1151         + #0.402 * (y2_fan d + y3_fan (V,E) d + y5_fan (V,E) d + y6_fan d - &8)
1152         - #0.315 * (y1_fan d - &2) >= &0`
1153 [
1154    ((BETA_TAC THEN (move ["d_in"]) THEN (case THEN (move ["card_gt"])) THEN (move ["bounds"])) THEN ((((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))));
1155    ((fun arg_tac -> arg_tac (Arg_term (`?k. d IN darts_k k (hypermap_of_fan (V,E)) /\ 3 < k`))) (term_tac (have_gen_tac [](case THEN ((move ["k"]) THEN (case THEN (move ["d_in_k"])) THEN (move ["k_gt"]))))));
1156    ((fun arg_tac -> arg_tac (Arg_term (`CARD (face (hypermap_of_fan (V,E)) d)`))) (term_tac exists_tac));
1157    (((((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 (done_tac));
1158    ((((use_arg_then2 ("azim_fan_eq_dih_y", [azim_fan_eq_dih_y]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1159    ((fun arg_tac -> arg_tac (Arg_term (`_1 * _2 - _3`))) (term_tac (set_tac "s")));
1160    (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac));
1161    ((fun arg_tac -> arg_tac (Arg_term (`(dih_y (y1_fan d) (y2_fan d) (y3_fan (V,E) d) (#2.52) 
1162         (y5_fan (V,E) d) (y6_fan d) - #1.629) + s`))) (term_tac exists_tac));
1163    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`#0.0 = &0 /\ #2.0 = &2 /\ #8.0 = &8`))) (term_tac (have_gen_tac [](move ["eqs"])))) ((arith_tac) THEN (done_tac)));
1164    (split_tac);
1165    ((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 (`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 (`#2.52`))) (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 arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1166    (((((use_arg_then2 ("Ineq.dartX", [Ineq.dartX]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("s_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] []))))) THEN (DISCH_THEN apply_tac));
1167    ((((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 ("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_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)));
1168    (((((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 ("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)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_REFL", [REAL_LE_REFL]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1169    ((repeat_tactic 1 9 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))));
1170    ((repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((fun arg_tac -> (use_arg_then2 ("y4'_lo_2h0", [y4'_lo_2h0])) (fun fst_arg -> (use_arg_then2 ("k_gt", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1171    ((THENL_FIRST) ((split_tac) THEN (simp_tac)) ((arith_tac) THEN (done_tac)));
1172    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
1173    ((((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 ("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_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)));
1174    ((((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 ("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)));
1175    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
1176    (((repeat_tactic 1 9 (((use_arg_then2 ("ineq2", []))(thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))) THEN (arith_tac) THEN (done_tac));
1177 ];;
1178
1179 (* Section Std *)
1180 Sections.begin_section "Std";;
1181 (Sections.add_section_hyp "std" (`E = ESTD V`));;
1182
1183 (* Lemma ineq106_std *)
1184 let ineq106_std = Sections.section_proof ["d"]
1185 `d IN dart_of_fan (V,E)
1186         ==> 3 < CARD (face (hypermap_of_fan (V,E)) d)
1187         ==> (azim_dart (V,E) d - #1.629) 
1188         + #0.402 * (y2_fan d + y3_fan (V,E) d + y5_fan (V,E) d + y6_fan d - &8)
1189         - #0.315 * (y1_fan d - &2) >= &0`
1190 [
1191    ((BETA_TAC THEN (move ["d_in"]) THEN (move ["card_gt"])) THEN (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("ineq106", [ineq106])) (fun fst_arg -> (use_arg_then2 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("card_gt", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN (DISCH_THEN apply_tac)));
1192    (((((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 ("d_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1193 ];;
1194
1195 (* Finalization of the section Std *)
1196 let ineq106_std = Sections.finalize_theorem ineq106_std;;
1197 Sections.end_section "Std";;
1198
1199 (* Finalization of the section Ineq106 *)
1200 let ineq106 = Sections.finalize_theorem ineq106;;
1201 let ineq106_std = Sections.finalize_theorem ineq106_std;;
1202 Sections.end_section "Ineq106";;
1203
1204 (* Section Crossdiag *)
1205 Sections.begin_section "Crossdiag";;
1206 (Sections.add_section_hyp "ineq" ((hd (Ineq.getexact "1085358243")).ineq));;
1207
1208 (* Lemma crossdiag_fan *)
1209 let crossdiag_fan = Sections.section_proof ["d"]
1210 `let d2 = f_fan_pair_ext (V,E) (e_fan_pair_ext (V,E) d) in
1211                       let d' = inverse (f_fan_pair_ext (V,E)) d in
1212         d IN darts_k 3 (hypermap_of_fan (V,E)) 
1213         /\ ye_fan d <= ye_fan (FST d', SND d2)
1214         /\ sqrt8 <= ye_fan d /\ ye_fan d <= &3
1215         /\ y5_fan (V,E) d <= #2.52 /\ y6_fan d2 <= #2.52
1216         ==> (azim_dart (V,E) d + azim_dart (V,E) d2) - #1.903
1217                 - #0.4 * (y1_fan d - &2)
1218                 + #0.49688 * (y2_fan d2 + y3_fan (V,E) d + y5_fan (V,E) d + y6_fan d2 - &8)
1219                 - (y4_fan (V,E) d' - sqrt8) >= &0`
1220 [
1221    ((repeat_tactic 1 9 ((CONV_TAC let_CONV))) THEN (((use_arg_then2 ("d", [])) (disch_tac [])) THEN (clear_assumption "d") THEN case THEN (move ["w"]) THEN (move ["w'"]) THEN (case THEN (move ["ww'_in3"])) THEN (case THEN (move ["diag_le"])) THEN (case THEN (move ["diag_lo"])) THEN (case THEN (move ["diag_hi"])) THEN (move ["bounds"])));
1222    ((fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext _1 _2`))) (term_tac (set_tac "d2")));
1223    ((fun arg_tac -> arg_tac (Arg_term (`inverse _1 _2`))) (term_tac (set_tac "d'")));
1224    ((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 ["eH"])) THEN (case THEN (move ["nH"])) THEN (move ["fH"])))));
1225    ((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("fan_delete_edge", [fan_delete_edge])) (fun fst_arg -> (use_arg_then2 ("fanV", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`{w,w'}`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN (move ["fan2"])));
1226    ((((use_arg_then2 ("ww'_in3", [])) (disch_tac [])) THEN BETA_TAC) THEN (((((use_arg_then2 ("List_hypermap.darts_k", [List_hypermap.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 ["ww'_in"])) THEN (move ["card3"])));
1227    ((fun arg_tac -> arg_tac (Arg_term (`SND d2`))) (term_tac (set_tac "v")));
1228    ((fun arg_tac -> arg_tac (Arg_term (`E DELETE {w,w'}`))) (term_tac (set_tac "E2")));
1229    ((fun arg_tac -> arg_tac (Arg_term (`d2 = w,v`))) (term_tac (have_gen_tac [](move ["d2_eq"]))));
1230    ((((use_arg_then2 ("pair_expand", [pair_expand]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("v_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("PAIR_EQ", [PAIR_EQ]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((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 ("ww'_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("e_fan_pair", [e_fan_pair]))(thm_tac (new_rewrite [] [])))));
1231    (((((use_arg_then2 ("f_fan_pair_ext", [f_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("ww'_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));
1232    ((fun arg_tac -> arg_tac (Arg_term (`d2 IN dart1_of_fan (V,E)`))) (term_tac (have_gen_tac [](move ["d2_in1"]))));
1233    (((((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("dartH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((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));
1234    ((fun arg_tac -> arg_tac (Arg_term (`sigma_fan (vec 0) V E w v = w'`))) (term_tac (have_gen_tac [](move ["w'_eq"]))));
1235    (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`n_fan_pair_ext (V,E) d2 = (w,w')`))) (term_tac (have_gen_tac []ALL_TAC))));
1236    ((((((use_arg_then2 ("n_fan_pair_ext", [n_fan_pair_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_in1", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("d2_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 (move ["_"]))) THEN (done_tac));
1237    ((((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("nH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fH", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eH", []))(gsym_then (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 (`face_map _`))) (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 ("o_THM", [o_THM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`node_map _`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(gsym_then (thm_tac (new_rewrite [] []))))));
1238    (((((use_arg_then2 ("hypermap_cyclic", [hypermap_cyclic]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("I_THM", [I_THM]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1239    ((fun arg_tac -> arg_tac (Arg_term (`d2 IN dart1_of_fan (V,E2)`))) (term_tac (have_gen_tac [](move ["d2_in2"]))));
1240    ((((use_arg_then2 ("d2_eq", []))(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 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("IN_DELETE", [IN_DELETE]))(thm_tac (new_rewrite [] [])))) THEN (((fun arg_tac -> (use_arg_then2 ("inE_eq_in_dart1", [inE_eq_in_dart1])) (fun fst_arg -> (use_arg_then2 ("V", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d2_in1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] [])))));
1241    ((((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL Geomdetail.PAIR_EQ_EXPAND)))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1242    ((((use_arg_then2 ("d2_in1", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (DISCH_THEN (fun snd_th -> (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 (match_mp_then snd_th MP_TAC)))) THEN (((conv_thm_tac DISCH_THEN)(gsym_then (thm_tac (new_rewrite [] []))))) THEN (simp_tac)));
1243    (((((use_arg_then2 ("w'_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("eq_sym", [eq_sym]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("sigma_fan_not_fixed", [sigma_fan_not_fixed]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("dart1_eq", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1244    ((((fun arg_tac -> (use_arg_then2 ("REAL_ADD_SYM", [REAL_ADD_SYM])) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`azim_dart _1 _2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("w'_eq", []))(gsym_then (thm_tac (new_rewrite [1] []))))) THEN (((use_arg_then2 ("azim_dart_sum_delete", [azim_dart_sum_delete]))(gsym_then (thm_tac (new_rewrite [] []))))));
1245    ((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d2_in1", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("fully_surrounded_card_set_of_edge1", [fully_surrounded_card_set_of_edge1]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1246    ((((fun arg_tac -> (use_arg_then2 ("PAIR_IN_DART_OF_FAN", [PAIR_IN_DART_OF_FAN])) (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 (done_tac));
1247    ((fun arg_tac -> arg_tac (Arg_term (`if y4'_fan (V,E2) d2 <= &3 then y4'_fan (V,E2) d2 else &3`))) (term_tac (set_tac "r")));
1248    ((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 (`y1_fan d2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y2_fan d2`))) (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,E2) d2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("r", [])) (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,E2) d2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`y6_fan d2`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1249    ((((use_arg_then2 ("INEQ_ALT", [INEQ_ALT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("Ineq.apex_sup_flat", [Ineq.apex_sup_flat]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("real_gt", [real_gt]))(thm_tac (new_rewrite [] [])))));
1250    ((fun arg_tac -> arg_tac (Arg_term (`_1 - #1.903 - _2 + _3`))) (term_tac (set_tac "s")));
1251    (((use_arg_then2 ("ineq", [ineq])) (disch_tac [])) THEN (clear_assumption "ineq") THEN BETA_TAC THEN (move ["_"]) THEN (move ["ineq"]));
1252    (((((use_arg_then2 ("w'_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("E2_def", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("real_ge", [real_ge]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LT_IMP_LE", [REAL_LT_IMP_LE]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LTE_TRANS", [REAL_LTE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LTE_TRANS") THEN (DISCH_THEN apply_tac)));
1253    ((use_arg_then2 ("s", [])) (term_tac exists_tac));
1254    ((fun arg_tac -> arg_tac (Arg_term (`y1_fan d2 = y1_fan (w,w') /\ y3_fan (V,E2) d2 = y3_fan (V,E) (w,w')
1255         /\ y5_fan (V,E2) d2 = y5_fan (V,E) (w,w')`))) (term_tac (have_gen_tac [](move ["y_eqs"]))));
1256    ((((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_fan_eq", [ys_fan_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 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("ys_fan_eq", [ys_fan_eq])) (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 (repeat_tactic 0 10 (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN ((TRY done_tac)));
1257    ((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("w'_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE sigma_fan_delete1)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1258    ((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fully_surrounded_card_set_of_edge1", [fully_surrounded_card_set_of_edge1]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1259    ((((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 ("ww'_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1260    ((fun arg_tac -> arg_tac (Arg_term (`y4_fan (V,E) d' = ye_fan (w,w') /\ y4'_fan (V,E2) d2 = ye_fan (FST d', v)`))) (term_tac (have_gen_tac [](move ["y4_eqs"]))));
1261    ((((use_arg_then2 ("y4_fan", [y4_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d'_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 (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1262    ((((use_arg_then2 ("y4'_fan", [y4'_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(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)));
1263    ((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 ("ww'_in", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d2_in2", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac) THEN (((use_arg_then2 ("ye_fan", [ye_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("DIST_SYM", [DIST_SYM]))(thm_tac (new_rewrite [] [])))));
1264    ((((use_arg_then2 ("E2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("w'_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> arg_tac (Arg_theorem (let_RULE sigma_fan_delete1)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1265    ((((use_arg_then2 ("dart1_switch", [dart1_switch]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("fully_surrounded_card_set_of_edge1", [fully_surrounded_card_set_of_edge1]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1266    ((((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 ("ww'_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN (done_tac));
1267    ((fun arg_tac -> arg_tac (Arg_term (`y4_fan (V,E) d' <= r`))) (term_tac (have_gen_tac [](move ["r_ineq"]))));
1268    ((((use_arg_then2 ("r_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> arg_tac (Arg_term (`_ <= &3`))) (disch_eq_tac "ineq1" [])) THEN case THEN (simp_tac) THEN (process_fst_eq_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y4_eqs", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1269    ((((use_arg_then2 ("d2_in1", [])) (disch_tac [])) THEN BETA_TAC) THEN ((((use_arg_then2 ("dart1_eq", []))(thm_tac (new_rewrite [] [])))) THEN (move ["d2_in"])));
1270    ((fun arg_tac -> arg_tac (Arg_term (`r <= &3 /\ sqrt8 <= r /\ &2 <= r`))) (term_tac (have_gen_tac [](move ["r_ineqs"]))));
1271    ((THENL_FIRST) (split_tac) ((((use_arg_then2 ("r_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac)));
1272    ((THENL_FIRST) (((THENL_ROT 1)) ((fun arg_tac -> arg_tac (Arg_term (`sqrt8 <= r`))) (term_tac (have_gen_tac []ALL_TAC)))) ((((use_arg_then2 ("Flyspeck_constants.bounds", [Flyspeck_constants.bounds])) (disch_tac [])) THEN (clear_assumption "Flyspeck_constants.bounds") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1273    ((((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 (`y4_fan (V,E) d'`))) (term_tac exists_tac)) THEN ((((use_arg_then2 ("r_ineq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y4_eqs", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1274    (split_tac);
1275    ((((use_arg_then2 ("ineq", [ineq]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (GEN_ALL ALL)))(thm_tac (new_rewrite [] []))))) THEN (simp_tac) THEN (repeat_tactic 1 9 (((fun arg_tac -> arg_tac (Arg_theorem (ARITH_RULE `#2.0 = &2 /\ #3.0 = &3`)))(thm_tac (new_rewrite [] []))))));
1276    ((repeat_tactic 1 9 (((use_arg_then2 ("y_eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (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)) THEN (((fun arg_tac -> (use_arg_then2 ("y1_hi", [y1_hi])) (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)));
1277    ((((fun arg_tac -> (use_arg_then2 ("y2_lo", [y2_lo])) (fun fst_arg -> (use_arg_then2 ("d2_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 ("d2_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 ("y3_hi", [y3_hi]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1278    (((((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 ("d2_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 (((use_arg_then2 ("bounds", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("r_ineqs", []))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1279    ((((use_arg_then2 ("s_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("REAL_LE_ADD2", [REAL_LE_ADD2]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y_eqs", []))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 11 0 (((use_arg_then2 ("real_sub", [real_sub]))(thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d2_eq", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_LADD", [REAL_LE_LADD]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d2_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))));
1280    ((THENL_LAST) (split_tac) (((((use_arg_then2 ("REAL_LE_NEG", [REAL_LE_NEG]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("REAL_LE_RADD", [REAL_LE_RADD]))(thm_tac (new_rewrite [] []))))) THEN (done_tac)));
1281    (((fun arg_tac -> (fun arg_tac -> (use_arg_then2 ("dih_y_le_azim_dart", [dih_y_le_azim_dart])) (fun fst_arg -> (use_arg_then2 ("fan2", [fan2])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun fst_arg -> (use_arg_then2 ("d2_in2", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (disch_tac [])) THEN BETA_TAC);
1282    ((fun arg_tac -> arg_tac (Arg_term (`dih_y _1 _2 _3 _4 _5 _6`))) (term_tac (set_tac "y")));
1283    ((BETA_TAC THEN (move ["ineq_y"])) THEN (((use_arg_then2 ("REAL_LE_TRANS", [REAL_LE_TRANS])) (disch_tac [])) THEN (clear_assumption "REAL_LE_TRANS") THEN (DISCH_THEN apply_tac)) THEN ((use_arg_then2 ("y", [])) (term_tac exists_tac)));
1284    ((((use_arg_then2 ("ineq_y", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("y_eqs", []))(thm_tac (new_rewrite [] []))))));
1285    ((THENL_FIRST) ((((use_arg_then2 ("dih_y_mono_le4", [dih_y_mono_le4]))(thm_tac (new_rewrite [] [])))) THEN (split_tac)) ((((use_arg_then2 ("r_ineqs", [])) (disch_tac [])) THEN (clear_assumption "r_ineqs") THEN BETA_TAC) THEN (arith_tac) THEN (done_tac)));
1286    ((THENL_FIRST) (split_tac) ((((use_arg_then2 ("r_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (arith_tac) THEN (done_tac)));
1287    ((repeat_tactic 1 9 (((use_arg_then2 ("y_eqs", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("fan_ups_x_pos", [fan_ups_x_pos])) (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 (((use_arg_then2 ("fan_delta_y_pos", [fan_delta_y_pos]))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (repeat_tactic 1 9 (((use_arg_then2 ("andTb", [andTb]))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("andbT", [andbT]))(thm_tac (new_rewrite [] [])))));
1288    (((use_arg_then2 ("Delta_ineq.delta_y_pos_apex", [Delta_ineq.delta_y_pos_apex]))(thm_tac (new_rewrite [] []))));
1289    ((((fun arg_tac -> (use_arg_then2 ("y1_lo", [y1_lo])) (fun fst_arg -> (use_arg_then2 ("d2_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 ("y1_hi", [y1_hi])) (fun fst_arg -> (use_arg_then2 ("d2_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 ("d2_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 ("d2_in", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)));
1290    ((repeat_tactic 1 9 (((use_arg_then2 ("y_eqs", []))(thm_tac (new_rewrite [] []))))) THEN (((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 ("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 ("d2_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 (((use_arg_then2 ("r_ineqs", []))(thm_tac (new_rewrite [] []))))));
1291    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`x <= #2.52 ==> x <= &3`))) (term_tac (have_gen_tac ["x"](move ["ineq2"])))) ((arith_tac) THEN (done_tac)));
1292    ((repeat_tactic 1 9 (((use_arg_then2 ("ineq2", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1293 ];;
1294 (Sections.add_section_var (mk_var ("g", (`:num#num -> real^3#real^3`))));;
1295 (Sections.add_section_var (mk_var ("h", (`:num -> real^3`))));;
1296 (Sections.add_section_var (mk_var ("L", (`:((num)list)list`))));;
1297 (Sections.add_section_hyp "goodL" (`good_list L`));;
1298 (Sections.add_section_hyp "g_iso" (`hyp_iso g (hypermap_of_list L, hypermap_of_fan (V,E))`));;
1299 (Sections.add_section_hyp "g_eq" (`!d. g d = h (FST d), h (SND d)`));;
1300
1301 (* Lemma crossdiag_list *)
1302 let crossdiag_list = Sections.section_proof []
1303 `ALL (\d. 
1304         ye_list g d <= ye_list g (FST (inverse (f_list_ext L) d), SND (f_list_ext L (e_list d)))
1305         /\ sqrt8 <= ye_list g d /\ ye_list g d <= &3
1306         /\ ye_list g (inverse (f_list_ext L) d) <= #2.52
1307         /\ ye_list g (f_list_ext L (e_list d)) <= #2.52
1308         ==> (azim_list (g,V,E) d + azim_list (g,V,E) (f_list_ext L (e_list d))) - #1.903 
1309                 - #0.4 * (y1_list g d - &2) 
1310                 + #0.49688 * (y2_list g (f_list_ext L (e_list d)) + y3_list (g,V,E) d
1311                 + y5_list (g,V,E) d + y6_list g (f_list_ext L (e_list d)) - &8)
1312                 - (y4_list (g,V,E) (inverse (f_list_ext L) d) - sqrt8) >= &0) 
1313                         (list_of_darts3 L)`
1314 [
1315    ((((use_arg_then2 ("ALL_MEM", [ALL_MEM]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (move ["d"]) THEN (move ["mem_d"]) THEN (simp_tac) THEN (move ["cond"]));
1316    ((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 ["hypH"])));
1317    ((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 (move ["hypL"])));
1318    ((((use_arg_then2 ("mem_d", [])) (disch_tac [])) 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 ("darts3_eq_list_of_darts3", [darts3_eq_list_of_darts3]))(gsym_then (thm_tac (new_rewrite [] []))))) THEN ((TRY done_tac))));
1319    (((((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 ["card_f"]))));
1320    ((fun arg_tac -> (fun arg_tac -> arg_tac (Arg_theorem (let_RULE crossdiag_fan))) (fun fst_arg -> (fun arg_tac -> arg_tac (Arg_term (`g d`))) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg))) (fun arg -> thm_tac MP_TAC arg THEN ALL_TAC));
1321    ((fun arg_tac -> arg_tac (Arg_term (`f_list_ext L _`))) (term_tac (set_tac "d2")));
1322    ((fun arg_tac -> arg_tac (Arg_term (`inverse _ d`))) (term_tac (set_tac "d'")));
1323    ((THENL_FIRST) ((fun arg_tac -> arg_tac (Arg_term (`e_list_ext L d = e_list d`))) (term_tac (have_gen_tac [](move ["e_list_eq"])))) (((((use_arg_then2 ("e_list_ext", [e_list_ext]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("res", [res]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("hypL", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (done_tac)));
1324    ((fun arg_tac -> arg_tac (Arg_term (`d2 IN dart (hypermap_of_list L)`))) (term_tac (have_gen_tac [](move ["d2_in"]))));
1325    (((((use_arg_then2 ("d2_def", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("e_list_eq", []))(gsym_then (thm_tac (new_rewrite [] []))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("hypL", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("lemma_dart_invariant", [lemma_dart_invariant]))(thm_tac (new_rewrite [] [])))))) THEN (done_tac));
1326    ((fun arg_tac -> arg_tac (Arg_term (`f_fan_pair_ext (V,E) (e_fan_pair_ext (V,E) (g d)) = g d2`))) (term_tac (have_gen_tac [](((conv_thm_tac DISCH_THEN)(thm_tac (new_rewrite [] [])))))));
1327    (((repeat_tactic 1 9 (((use_arg_then2 ("hypH", []))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (repeat_tactic 1 9 (((fun arg_tac -> (use_arg_then2 ("hyp_iso_comm", [hyp_iso_comm])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (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", [lemma_dart_invariant]))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1328    ((repeat_tactic 1 9 (((use_arg_then2 ("hypH", []))(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 ("g_iso", [])) (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 (((use_arg_then2 ("hypL", []))(thm_tac (new_rewrite [] []))))) THEN (((use_arg_then2 ("d'_def", []))(thm_tac (new_rewrite [] [])))));
1329    (((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 (DISCH_THEN apply_tac));
1330    ((((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 ("hyp_iso_dart", [hyp_iso_dart])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (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 ("hyp_iso_card_components", [hyp_iso_card_components])) (fun fst_arg -> (use_arg_then2 ("g_iso", [])) (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 ("card_f", []))(thm_tac (new_rewrite [] [])))) THEN (simp_tac));
1331    ((((use_arg_then2 ("cond", [])) (disch_tac [])) THEN (clear_assumption "cond") THEN BETA_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 ALL_TAC THEN (case THEN (move ["c1"])) THEN (move ["cond"])));
1332    ((((use_arg_then2 ("y5_fan", [y5_fan]))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("y6_fan", [y6_fan]))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("ye_fan", [ye_fan]))(gsym_then (thm_tac (new_rewrite [] [])))))) THEN (((use_arg_then2 ("hypH", []))(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 ("g_iso", [])) (fun snd_arg -> combine_args_then arg_tac fst_arg snd_arg)))(thm_tac (new_rewrite [] [])))) THEN ((TRY done_tac)) THEN (((use_arg_then2 ("hypL", []))(thm_tac (new_rewrite [] [])))) THEN (((use_arg_then2 ("d'_def", []))(thm_tac (new_rewrite [] [])))) THEN (repeat_tactic 1 9 (((use_arg_then2 ("cond", []))(thm_tac (new_rewrite [] []))))) THEN (simp_tac));
1333    ((((use_arg_then2 ("c1", [])) (disch_tac [])) THEN (clear_assumption "c1") THEN BETA_TAC) THEN (repeat_tactic 1 9 (((use_arg_then2 ("g_eq", []))(thm_tac (new_rewrite [] []))))) THEN (done_tac));
1334 ];;
1335
1336 (* Finalization of the section Crossdiag *)
1337 let crossdiag_fan = Sections.finalize_theorem crossdiag_fan;;
1338 let crossdiag_list = Sections.finalize_theorem crossdiag_list;;
1339 Sections.end_section "Crossdiag";;
1340
1341 (* Finalization of the section Pack *)
1342 let perimZ = Sections.finalize_theorem perimZ;;
1343 let perimZ_std = Sections.finalize_theorem perimZ_std;;
1344 let yapex_sup_flat_fan = Sections.finalize_theorem yapex_sup_flat_fan;;
1345 let yapex_sup_flat_list = Sections.finalize_theorem yapex_sup_flat_list;;
1346 let extra_ineqs_std3_small = Sections.finalize_theorem extra_ineqs_std3_small;;
1347 let extra_ineq_std3_big = Sections.finalize_theorem extra_ineq_std3_big;;
1348 let ineq77 = Sections.finalize_theorem ineq77;;
1349 let ineq77_std = Sections.finalize_theorem ineq77_std;;
1350 let ineq89 = Sections.finalize_theorem ineq89;;
1351 let ineq89_std = Sections.finalize_theorem ineq89_std;;
1352 let ineq90 = Sections.finalize_theorem ineq90;;
1353 let ineq90_std = Sections.finalize_theorem ineq90_std;;
1354 let ineq71 = Sections.finalize_theorem ineq71;;
1355 let ineq72 = Sections.finalize_theorem ineq72;;
1356 let ineq73 = Sections.finalize_theorem ineq73;;
1357 let ineq74 = Sections.finalize_theorem ineq74;;
1358 let ineq104 = Sections.finalize_theorem ineq104;;
1359 let ineq104_std = Sections.finalize_theorem ineq104_std;;
1360 let ineq105 = Sections.finalize_theorem ineq105;;
1361 let ineq105_std = Sections.finalize_theorem ineq105_std;;
1362 let ineq106 = Sections.finalize_theorem ineq106;;
1363 let ineq106_std = Sections.finalize_theorem ineq106_std;;
1364 let crossdiag_fan = Sections.finalize_theorem crossdiag_fan;;
1365 let crossdiag_list = Sections.finalize_theorem crossdiag_list;;
1366 Sections.end_section "Pack";;
1367
1368 (* Finalization of the section FullySurrounded *)
1369 let perimZ = Sections.finalize_theorem perimZ;;
1370 let perimZ_std = Sections.finalize_theorem perimZ_std;;
1371 let yapex_sup_flat_fan = Sections.finalize_theorem yapex_sup_flat_fan;;
1372 let yapex_sup_flat_list = Sections.finalize_theorem yapex_sup_flat_list;;
1373 let extra_ineqs_std3_small = Sections.finalize_theorem extra_ineqs_std3_small;;
1374 let extra_ineq_std3_big = Sections.finalize_theorem extra_ineq_std3_big;;
1375 let ineq77 = Sections.finalize_theorem ineq77;;
1376 let ineq77_std = Sections.finalize_theorem ineq77_std;;
1377 let ineq89 = Sections.finalize_theorem ineq89;;
1378 let ineq89_std = Sections.finalize_theorem ineq89_std;;
1379 let ineq90 = Sections.finalize_theorem ineq90;;
1380 let ineq90_std = Sections.finalize_theorem ineq90_std;;
1381 let ineq71 = Sections.finalize_theorem ineq71;;
1382 let ineq72 = Sections.finalize_theorem ineq72;;
1383 let ineq73 = Sections.finalize_theorem ineq73;;
1384 let ineq74 = Sections.finalize_theorem ineq74;;
1385 let ineq104 = Sections.finalize_theorem ineq104;;
1386 let ineq104_std = Sections.finalize_theorem ineq104_std;;
1387 let ineq105 = Sections.finalize_theorem ineq105;;
1388 let ineq105_std = Sections.finalize_theorem ineq105_std;;
1389 let ineq106 = Sections.finalize_theorem ineq106;;
1390 let ineq106_std = Sections.finalize_theorem ineq106_std;;
1391 let crossdiag_fan = Sections.finalize_theorem crossdiag_fan;;
1392 let crossdiag_list = Sections.finalize_theorem crossdiag_list;;
1393 Sections.end_section "FullySurrounded";;
1394
1395 (* Close the module *)
1396 end;;