equal
deleted
inserted
replaced
206 |
206 |
207 lemma r_comp_rtrancl_eq: "r O r^* = r^* O r" |
207 lemma r_comp_rtrancl_eq: "r O r^* = r^* O r" |
208 by (blast elim: rtranclE converse_rtranclE |
208 by (blast elim: rtranclE converse_rtranclE |
209 intro: rtrancl_into_rtrancl converse_rtrancl_into_rtrancl) |
209 intro: rtrancl_into_rtrancl converse_rtrancl_into_rtrancl) |
210 |
210 |
211 lemma rtrancl_unfold: "r^* = Id Un (r O r^*)" |
211 lemma rtrancl_unfold: "r^* = Id Un r O r^*" |
212 by (auto intro: rtrancl_into_rtrancl elim: rtranclE) |
212 by (auto intro: rtrancl_into_rtrancl elim: rtranclE) |
213 |
213 |
214 |
214 |
215 subsection {* Transitive closure *} |
215 subsection {* Transitive closure *} |
216 |
216 |
261 -- {* Another induction rule for trancl, incorporating transitivity *} |
261 -- {* Another induction rule for trancl, incorporating transitivity *} |
262 by (iprover intro: r_into_trancl major [THEN trancl_induct] cases) |
262 by (iprover intro: r_into_trancl major [THEN trancl_induct] cases) |
263 |
263 |
264 inductive_cases tranclE: "(a, b) : r^+" |
264 inductive_cases tranclE: "(a, b) : r^+" |
265 |
265 |
266 lemma trancl_unfold: "r^+ = r Un (r O r^+)" |
266 lemma trancl_unfold: "r^+ = r Un r O r^+" |
267 by (auto intro: trancl_into_trancl elim: tranclE) |
267 by (auto intro: trancl_into_trancl elim: tranclE) |
268 |
268 |
269 lemma trans_trancl[simp]: "trans(r^+)" |
269 lemma trans_trancl[simp]: "trans(r^+)" |
270 -- {* Transitivity of @{term "r^+"} *} |
270 -- {* Transitivity of @{term "r^+"} *} |
271 proof (rule transI) |
271 proof (rule transI) |