equal
deleted
inserted
replaced
1 (* Title: HOL/Transitive_Closure.thy |
1 (* Title: HOL/Transitive_Closure.thy |
2 ID: $Id$ |
|
3 Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
2 Author: Lawrence C Paulson, Cambridge University Computer Laboratory |
4 Copyright 1992 University of Cambridge |
3 Copyright 1992 University of Cambridge |
5 *) |
4 *) |
6 |
5 |
7 header {* Reflexive and Transitive closure of a relation *} |
6 header {* Reflexive and Transitive closure of a relation *} |
566 apply (erule rev_mp) |
565 apply (erule rev_mp) |
567 apply (erule rtrancl_induct) |
566 apply (erule rtrancl_induct) |
568 apply auto |
567 apply auto |
569 done |
568 done |
570 |
569 |
|
570 lemma trancl_subset_Field2: "r^+ <= Field r \<times> Field r" |
|
571 apply clarify |
|
572 apply (erule trancl_induct) |
|
573 apply (auto simp add: Field_def) |
|
574 done |
|
575 |
|
576 lemma finite_trancl: "finite (r^+) = finite r" |
|
577 apply auto |
|
578 prefer 2 |
|
579 apply (rule trancl_subset_Field2 [THEN finite_subset]) |
|
580 apply (rule finite_SigmaI) |
|
581 prefer 3 |
|
582 apply (blast intro: r_into_trancl' finite_subset) |
|
583 apply (auto simp add: finite_Field) |
|
584 done |
|
585 |
571 text {* More about converse @{text rtrancl} and @{text trancl}, should |
586 text {* More about converse @{text rtrancl} and @{text trancl}, should |
572 be merged with main body. *} |
587 be merged with main body. *} |
573 |
588 |
574 lemma single_valued_confluent: |
589 lemma single_valued_confluent: |
575 "\<lbrakk> single_valued r; (x,y) \<in> r^*; (x,z) \<in> r^* \<rbrakk> |
590 "\<lbrakk> single_valued r; (x,y) \<in> r^*; (x,z) \<in> r^* \<rbrakk> |