26 \ cont (%y. lift_case UU (f y))"; |
26 \ cont (%y. lift_case UU (f y))"; |
27 by (rtac cont2cont_CF1L_rev 1); |
27 by (rtac cont2cont_CF1L_rev 1); |
28 by (strip_tac 1); |
28 by (strip_tac 1); |
29 by (res_inst_tac [("x","y")] Lift_cases 1); |
29 by (res_inst_tac [("x","y")] Lift_cases 1); |
30 by (Asm_simp_tac 1); |
30 by (Asm_simp_tac 1); |
31 by (fast_tac (HOL_cs addss !simpset) 1); |
31 by (fast_tac (HOL_cs addss simpset()) 1); |
32 qed"cont_flift1_not_arg"; |
32 qed"cont_flift1_not_arg"; |
33 |
33 |
34 (* flift1 is continuous in a variable that occurs either |
34 (* flift1 is continuous in a variable that occurs either |
35 in the Def branch or in the argument *) |
35 in the Def branch or in the argument *) |
36 |
36 |
67 Addsimps cont_lemmas_ext; |
67 Addsimps cont_lemmas_ext; |
68 |
68 |
69 fun cont_tac i = resolve_tac cont_lemmas2 i; |
69 fun cont_tac i = resolve_tac cont_lemmas2 i; |
70 fun cont_tacR i = REPEAT (cont_tac i); |
70 fun cont_tacR i = REPEAT (cont_tac i); |
71 |
71 |
72 fun cont_tacRs i = simp_tac (!simpset addsimps [flift1_def,flift2_def]) i THEN |
72 fun cont_tacRs i = simp_tac (simpset() addsimps [flift1_def,flift2_def]) i THEN |
73 REPEAT (cont_tac i); |
73 REPEAT (cont_tac i); |
74 |
74 |
75 |
75 |
76 simpset := !simpset addSolver (K (DEPTH_SOLVE_1 o cont_tac)); |
76 simpset_ref() := simpset() addSolver (K (DEPTH_SOLVE_1 o cont_tac)); |
77 |
77 |
78 |
78 |
79 |
79 |
80 (* ---------------------------------------------------------- *) |
80 (* ---------------------------------------------------------- *) |
81 section"flift1, flift2"; |
81 section"flift1, flift2"; |
82 (* ---------------------------------------------------------- *) |
82 (* ---------------------------------------------------------- *) |
83 |
83 |
84 |
84 |
85 goal thy "flift1 f`(Def x) = (f x)"; |
85 goal thy "flift1 f`(Def x) = (f x)"; |
86 by (simp_tac (!simpset addsimps [flift1_def]) 1); |
86 by (simp_tac (simpset() addsimps [flift1_def]) 1); |
87 qed"flift1_Def"; |
87 qed"flift1_Def"; |
88 |
88 |
89 goal thy "flift2 f`(Def x) = Def (f x)"; |
89 goal thy "flift2 f`(Def x) = Def (f x)"; |
90 by (simp_tac (!simpset addsimps [flift2_def]) 1); |
90 by (simp_tac (simpset() addsimps [flift2_def]) 1); |
91 qed"flift2_Def"; |
91 qed"flift2_Def"; |
92 |
92 |
93 goal thy "flift1 f`UU = UU"; |
93 goal thy "flift1 f`UU = UU"; |
94 by (simp_tac (!simpset addsimps [flift1_def]) 1); |
94 by (simp_tac (simpset() addsimps [flift1_def]) 1); |
95 qed"flift1_UU"; |
95 qed"flift1_UU"; |
96 |
96 |
97 goal thy "flift2 f`UU = UU"; |
97 goal thy "flift2 f`UU = UU"; |
98 by (simp_tac (!simpset addsimps [flift2_def]) 1); |
98 by (simp_tac (simpset() addsimps [flift2_def]) 1); |
99 qed"flift2_UU"; |
99 qed"flift2_UU"; |
100 |
100 |
101 Addsimps [flift1_Def,flift2_Def,flift1_UU,flift2_UU]; |
101 Addsimps [flift1_Def,flift2_Def,flift1_UU,flift2_UU]; |
102 |
102 |
103 goal thy "!!x. x~=UU ==> (flift2 f)`x~=UU"; |
103 goal thy "!!x. x~=UU ==> (flift2 f)`x~=UU"; |