equal
deleted
inserted
replaced
72 by (res_inst_tac [("n","n")] natE 1); |
72 by (res_inst_tac [("n","n")] natE 1); |
73 by (cut_facts_tac [p1] 1); |
73 by (cut_facts_tac [p1] 1); |
74 by (asm_full_simp_tac (!simpset addsimps [p2]) 1); |
74 by (asm_full_simp_tac (!simpset addsimps [p2]) 1); |
75 by (cut_facts_tac [p1] 1); |
75 by (cut_facts_tac [p1] 1); |
76 by (Asm_full_simp_tac 1); |
76 by (Asm_full_simp_tac 1); |
77 be compEpair 1; |
77 by (etac compEpair 1); |
78 by (dtac (conjI RS rel_pow_Suc_D2') 1); |
78 by (dtac (conjI RS rel_pow_Suc_D2') 1); |
79 ba 1; |
79 by (assume_tac 1); |
80 by (etac exE 1); |
80 by (etac exE 1); |
81 by (etac p3 1); |
81 by (etac p3 1); |
82 by (etac conjunct1 1); |
82 by (etac conjunct1 1); |
83 by (etac conjunct2 1); |
83 by (etac conjunct2 1); |
84 qed "rel_pow_E2"; |
84 qed "rel_pow_E2"; |
91 |
91 |
92 goal RelPow.thy "!y. (x,y):R^n --> (x,y):R^*"; |
92 goal RelPow.thy "!y. (x,y):R^n --> (x,y):R^*"; |
93 by (nat_ind_tac "n" 1); |
93 by (nat_ind_tac "n" 1); |
94 by (blast_tac (!claset addIs [rtrancl_refl] addEs [rel_pow_0_E]) 1); |
94 by (blast_tac (!claset addIs [rtrancl_refl] addEs [rel_pow_0_E]) 1); |
95 by (blast_tac (!claset addEs [rel_pow_Suc_E] |
95 by (blast_tac (!claset addEs [rel_pow_Suc_E] |
96 addIs [rtrancl_into_rtrancl]) 1); |
96 addIs [rtrancl_into_rtrancl]) 1); |
97 val lemma = result() RS spec RS mp; |
97 val lemma = result() RS spec RS mp; |
98 |
98 |
99 goal RelPow.thy "!!p. p:R^n ==> p:R^*"; |
99 goal RelPow.thy "!!p. p:R^n ==> p:R^*"; |
100 by (split_all_tac 1); |
100 by (split_all_tac 1); |
101 by (etac lemma 1); |
101 by (etac lemma 1); |