src/HOL/RelPow.ML
changeset 2935 998cb95fdd43
parent 2922 580647a879cf
child 3023 01364e2f30ad
equal deleted inserted replaced
2934:bd922fc9001b 2935:998cb95fdd43
    33 
    33 
    34 val [major,minor] = goal RelPow.thy
    34 val [major,minor] = goal RelPow.thy
    35   "[| (x,z) : R^(Suc n);  !!y. [| (x,y) : R^n; (y,z) : R |] ==> P |] ==> P";
    35   "[| (x,z) : R^(Suc n);  !!y. [| (x,y) : R^n; (y,z) : R |] ==> P |] ==> P";
    36 by (cut_facts_tac [major] 1);
    36 by (cut_facts_tac [major] 1);
    37 by (Asm_full_simp_tac  1);
    37 by (Asm_full_simp_tac  1);
    38 by (fast_tac (!claset addIs [minor]) 1);
    38 by (blast_tac (!claset addIs [minor]) 1);
    39 qed "rel_pow_Suc_E";
    39 qed "rel_pow_Suc_E";
    40 
    40 
    41 val [p1,p2,p3] = goal RelPow.thy
    41 val [p1,p2,p3] = goal RelPow.thy
    42     "[| (x,z) : R^n;  [| n=0; x = z |] ==> P;        \
    42     "[| (x,z) : R^n;  [| n=0; x = z |] ==> P;        \
    43 \       !!y m. [| n = Suc m; (x,y) : R^m; (y,z) : R |] ==> P  \
    43 \       !!y m. [| n = Suc m; (x,y) : R^m; (y,z) : R |] ==> P  \
   100 by (split_all_tac 1);
   100 by (split_all_tac 1);
   101 by (etac lemma 1);
   101 by (etac lemma 1);
   102 qed "rel_pow_imp_rtrancl";
   102 qed "rel_pow_imp_rtrancl";
   103 
   103 
   104 goal RelPow.thy "R^* = (UN n. R^n)";
   104 goal RelPow.thy "R^* = (UN n. R^n)";
   105 by (fast_tac (!claset addIs [rtrancl_imp_UN_rel_pow,rel_pow_imp_rtrancl]) 1);
   105 by (fast_tac (!claset addIs [rtrancl_imp_UN_rel_pow, rel_pow_imp_rtrancl]) 1);
   106 qed "rtrancl_is_UN_rel_pow";
   106 qed "rtrancl_is_UN_rel_pow";
   107 
   107 
   108 
   108 
   109 
   109