src/HOLCF/Lift2.ML
changeset 3726 2543df678ab2
parent 3323 194ae2e0c193
child 3842 b55686a7b22c
equal deleted inserted replaced
3725:c7fa890d0d92 3726:2543df678ab2
    56 (* Tailoring chain_mono2 of Pcpo.ML to Undef *)
    56 (* Tailoring chain_mono2 of Pcpo.ML to Undef *)
    57 
    57 
    58 goal Lift2.thy
    58 goal Lift2.thy
    59 "!!Y. [|? j.~Y(j)=Undef;is_chain(Y::nat=>('a)lift)|] \
    59 "!!Y. [|? j.~Y(j)=Undef;is_chain(Y::nat=>('a)lift)|] \
    60 \ ==> ? j.!i.j<i-->~Y(i)=Undef";
    60 \ ==> ? j.!i.j<i-->~Y(i)=Undef";
    61 by (safe_tac HOL_cs);
    61 by Safe_tac;
    62 by (step_tac HOL_cs 1);
    62 by (Step_tac 1);
    63 by (strip_tac 1);
    63 by (strip_tac 1);
    64 by (rtac notUndef_I 1);
    64 by (rtac notUndef_I 1);
    65 by (atac 2);
    65 by (atac 2);
    66 by (etac (chain_mono RS mp) 1);
    66 by (etac (chain_mono RS mp) 1);
    67 by (atac 1);
    67 by (atac 1);
    83 by (etac spec 1); 
    83 by (etac spec 1); 
    84 
    84 
    85 by (subgoal_tac "!x y.x<<(y::('a)lift) --> x=Undef | x=y" 1);
    85 by (subgoal_tac "!x y.x<<(y::('a)lift) --> x=Undef | x=y" 1);
    86 by (simp_tac (!simpset addsimps [inst_lift_po]) 2);
    86 by (simp_tac (!simpset addsimps [inst_lift_po]) 2);
    87 by (rtac (chain_mono2_po RS exE) 1); 
    87 by (rtac (chain_mono2_po RS exE) 1); 
    88 by (fast_tac HOL_cs 1); 
    88 by (Fast_tac 1); 
    89 by (atac 1); 
    89 by (atac 1); 
    90 by (res_inst_tac [("x","Suc(x)")] exI 1); 
    90 by (res_inst_tac [("x","Suc(x)")] exI 1); 
    91 by (strip_tac 1); 
    91 by (strip_tac 1); 
    92 by (rtac disjE 1); 
    92 by (rtac disjE 1); 
    93 by (atac 3); 
    93 by (atac 3); 
   110 (* Main Lemma: cpo_lift *)
   110 (* Main Lemma: cpo_lift *)
   111 
   111 
   112 goal Lift2.thy  
   112 goal Lift2.thy  
   113   "!!Y. is_chain(Y::nat=>('a)lift) ==> ? x.range(Y) <<|x";
   113   "!!Y. is_chain(Y::nat=>('a)lift) ==> ? x.range(Y) <<|x";
   114 by (cut_inst_tac [] flat_imp_chain_finite_poo 1);
   114 by (cut_inst_tac [] flat_imp_chain_finite_poo 1);
   115 by (step_tac HOL_cs 1);
   115 by (Step_tac 1);
   116 by (safe_tac HOL_cs);
   116 by Safe_tac;
   117 by (step_tac HOL_cs 1); 
   117 by (Step_tac 1); 
   118 by (rtac exI 1);
   118 by (rtac exI 1);
   119 by (rtac lub_finch1 1);
   119 by (rtac lub_finch1 1);
   120 by (atac 1);
   120 by (atac 1);
   121 by (atac 1);
   121 by (atac 1);
   122 qed"cpo_lift";
   122 qed"cpo_lift";