equal
deleted
inserted
replaced
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 |