src/HOL/IMP/Transition.ML
changeset 5117 7b5efef2ca74
parent 5069 3ea049f7979d
child 5183 89f162de39cf
equal deleted inserted replaced
5116:8eb343ab5748 5117:7b5efef2ca74
    20 
    20 
    21 AddSEs evalc1_SEs;
    21 AddSEs evalc1_SEs;
    22 
    22 
    23 AddIs evalc1.intrs;
    23 AddIs evalc1.intrs;
    24 
    24 
    25 Goal "!!s. (SKIP,s) -m-> (SKIP,t) ==> s = t & m = 0";
    25 Goal "(SKIP,s) -m-> (SKIP,t) ==> s = t & m = 0";
    26 by (etac rel_pow_E2 1);
    26 by (etac rel_pow_E2 1);
    27 by (Asm_full_simp_tac 1);
    27 by (Asm_full_simp_tac 1);
    28 by (Fast_tac 1);
    28 by (Fast_tac 1);
    29 val hlemma = result();
    29 val hlemma = result();
    30 
    30 
    36  by (fast_tac (claset() addIs [rtrancl_into_rtrancl2])1);
    36  by (fast_tac (claset() addIs [rtrancl_into_rtrancl2])1);
    37 by (fast_tac  (claset() addIs [rtrancl_into_rtrancl2]addSDs [rel_pow_Suc_D2])1);
    37 by (fast_tac  (claset() addIs [rtrancl_into_rtrancl2]addSDs [rel_pow_Suc_D2])1);
    38 qed_spec_mp "lemma1";
    38 qed_spec_mp "lemma1";
    39 
    39 
    40 
    40 
    41 Goal "!!c s s1. <c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)";
    41 Goal "<c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)";
    42 by (etac evalc.induct 1);
    42 by (etac evalc.induct 1);
    43 
    43 
    44 (* SKIP *)
    44 (* SKIP *)
    45 by (rtac rtrancl_refl 1);
    45 by (rtac rtrancl_refl 1);
    46 
    46 
   118 
   118 
   119 
   119 
   120 section "A Proof Without -n->";
   120 section "A Proof Without -n->";
   121 
   121 
   122 Goal
   122 Goal
   123  "!!c1. (c1,s1) -*-> (SKIP,s2) ==> \
   123  "(c1,s1) -*-> (SKIP,s2) ==> \
   124 \ (c2,s2) -*-> cs3 --> (c1;c2,s1) -*-> cs3";
   124 \ (c2,s2) -*-> cs3 --> (c1;c2,s1) -*-> cs3";
   125 by (etac converse_rtrancl_induct2 1);
   125 by (etac converse_rtrancl_induct2 1);
   126 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   126 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   127 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   127 by (fast_tac (claset() addIs [rtrancl_into_rtrancl2]) 1);
   128 qed_spec_mp "my_lemma1";
   128 qed_spec_mp "my_lemma1";
   129 
   129 
   130 
   130 
   131 Goal "!!c s s1. <c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)";
   131 Goal "<c,s> -c-> s1 ==> (c,s) -*-> (SKIP,s1)";
   132 by (etac evalc.induct 1);
   132 by (etac evalc.induct 1);
   133 
   133 
   134 (* SKIP *)
   134 (* SKIP *)
   135 by (rtac rtrancl_refl 1);
   135 by (rtac rtrancl_refl 1);
   136 
   136 
   184 of Lemma 1.
   184 of Lemma 1.
   185 *)
   185 *)
   186 
   186 
   187 (*Delsimps [update_apply];*)
   187 (*Delsimps [update_apply];*)
   188 Goal 
   188 Goal 
   189   "!!c s. ((c,s) -1-> (c',s')) ==> (!t. <c',s'> -c-> t --> <c,s> -c-> t)";
   189   "((c,s) -1-> (c',s')) ==> (!t. <c',s'> -c-> t --> <c,s> -c-> t)";
   190 by (etac evalc1.induct 1);
   190 by (etac evalc1.induct 1);
   191 by Auto_tac;
   191 by Auto_tac;
   192 qed_spec_mp "FB_lemma3";
   192 qed_spec_mp "FB_lemma3";
   193 (*Addsimps [update_apply];*)
   193 (*Addsimps [update_apply];*)
   194 
   194 
   197 by (rtac (major RS rtrancl_induct2) 1);
   197 by (rtac (major RS rtrancl_induct2) 1);
   198  by (Fast_tac 1);
   198  by (Fast_tac 1);
   199 by (fast_tac (claset() addIs [FB_lemma3]) 1);
   199 by (fast_tac (claset() addIs [FB_lemma3]) 1);
   200 qed_spec_mp "FB_lemma2";
   200 qed_spec_mp "FB_lemma2";
   201 
   201 
   202 Goal "!!c. (c,s) -*-> (SKIP,t) ==> <c,s> -c-> t";
   202 Goal "(c,s) -*-> (SKIP,t) ==> <c,s> -c-> t";
   203 by (fast_tac (claset() addEs [FB_lemma2]) 1);
   203 by (fast_tac (claset() addEs [FB_lemma2]) 1);
   204 qed "evalc1_impl_evalc";
   204 qed "evalc1_impl_evalc";