rtrancl lemmas
authornipkow
Wed, 17 Jun 2009 15:41:49 +0200
changeset 31690 cc37bf07f9bb
parent 31682 358cdcdf56d2
child 31691 7d50527dc008
child 31692 57715a08e4b6
child 31696 8b3dac635907
rtrancl lemmas
src/HOL/Transitive_Closure.thy
--- a/src/HOL/Transitive_Closure.thy	Wed Jun 17 11:00:14 2009 +0200
+++ b/src/HOL/Transitive_Closure.thy	Wed Jun 17 15:41:49 2009 +0200
@@ -294,6 +294,20 @@
 lemma rtrancl_unfold: "r^* = Id Un r O r^*"
   by (auto intro: rtrancl_into_rtrancl elim: rtranclE)
 
+lemma rtrancl_Un_separatorE:
+  "(a,b) : (P \<union> Q)^* \<Longrightarrow> \<forall>x y. (a,x) : P^* \<longrightarrow> (x,y) : Q \<longrightarrow> x=y \<Longrightarrow> (a,b) : P^*"
+apply (induct rule:rtrancl.induct)
+ apply blast
+apply (blast intro:rtrancl_trans)
+done
+
+lemma rtrancl_Un_separator_converseE:
+  "(a,b) : (P \<union> Q)^* \<Longrightarrow> \<forall>x y. (x,b) : P^* \<longrightarrow> (y,x) : Q \<longrightarrow> y=x \<Longrightarrow> (a,b) : P^*"
+apply (induct rule:converse_rtrancl_induct)
+ apply blast
+apply (blast intro:rtrancl_trans)
+done
+
 
 subsection {* Transitive closure *}