123 by (Asm_full_simp_tac 1); |
123 by (Asm_full_simp_tac 1); |
124 by (Fast_tac 1); |
124 by (Fast_tac 1); |
125 qed "rtrancl_subset"; |
125 qed "rtrancl_subset"; |
126 |
126 |
127 goal Trancl.thy "!!R. (R^* Un S^*)^* = (R Un S)^*"; |
127 goal Trancl.thy "!!R. (R^* Un S^*)^* = (R Un S)^*"; |
128 by (best_tac (set_cs addIs [rtrancl_subset,r_into_rtrancl, |
128 by (best_tac (!claset addSIs [rtrancl_subset] |
129 rtrancl_mono RS subsetD]) 1); |
129 addIs [r_into_rtrancl, rtrancl_mono RS subsetD]) 1); |
130 qed "rtrancl_Un_rtrancl"; |
130 qed "rtrancl_Un_rtrancl"; |
131 |
131 |
132 goal Trancl.thy "(R^=)^* = R^*"; |
132 goal Trancl.thy "(R^=)^* = R^*"; |
133 by (fast_tac (rel_cs addIs [rtrancl_refl,rtrancl_subset,r_into_rtrancl]) 1); |
133 by (fast_tac (!claset addSIs [rtrancl_refl,rtrancl_subset] |
|
134 addIs [r_into_rtrancl]) 1); |
134 qed "rtrancl_reflcl"; |
135 qed "rtrancl_reflcl"; |
135 Addsimps [rtrancl_reflcl]; |
136 Addsimps [rtrancl_reflcl]; |
136 |
137 |
137 goal Trancl.thy "!!r. (x,y) : (converse r)^* ==> (x,y) : converse(r^*)"; |
138 goal Trancl.thy "!!r. (x,y) : (converse r)^* ==> (x,y) : converse(r^*)"; |
138 by (rtac converseI 1); |
139 by (rtac converseI 1); |