src/HOLCF/Lift.ML
changeset 4098 71e05eb27fb6
parent 3842 b55686a7b22c
child 4477 b3e5857d8d99
equal deleted inserted replaced
4097:ddd1c18121e0 4098:71e05eb27fb6
    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";