src/ZF/Trancl.thy
changeset 13240 bb5f4faea1f3
parent 13239 f599984ec4c2
child 13243 ba53d07d32d5
--- a/src/ZF/Trancl.thy	Sat Jun 22 18:28:46 2002 +0200
+++ b/src/ZF/Trancl.thy	Sun Jun 23 10:14:13 2002 +0200
@@ -47,64 +47,53 @@
 
 lemma irreflI:
     "[| !!x. x:A ==> <x,x> ~: r |] ==> irrefl(A,r)"
-by (simp add: irrefl_def); 
+by (simp add: irrefl_def) 
 
 lemma symI: "[| irrefl(A,r);  x:A |] ==>  <x,x> ~: r"
-apply (simp add: irrefl_def)
-done
+by (simp add: irrefl_def)
 
 subsubsection{*symmetry*}
 
 lemma symI:
      "[| !!x y.<x,y>: r ==> <y,x>: r |] ==> sym(r)"
-apply (unfold sym_def); 
-apply (blast intro: elim:); 
+apply (unfold sym_def, blast) 
 done
 
 lemma antisymI: "[| sym(r); <x,y>: r |]  ==>  <y,x>: r"
-apply (unfold sym_def)
-apply blast
-done
+by (unfold sym_def, blast)
 
 subsubsection{*antisymmetry*}
 
 lemma antisymI:
      "[| !!x y.[| <x,y>: r;  <y,x>: r |] ==> x=y |] ==> antisym(r)"
-apply (simp add: antisym_def) 
-apply (blast intro: elim:); 
+apply (simp add: antisym_def, blast) 
 done
 
 lemma antisymE: "[| antisym(r); <x,y>: r;  <y,x>: r |]  ==>  x=y"
-apply (simp add: antisym_def)
-apply blast
-done
+by (simp add: antisym_def, blast)
 
 subsubsection{*transitivity*}
 
 lemma transD: "[| trans(r);  <a,b>:r;  <b,c>:r |] ==> <a,c>:r"
-apply (unfold trans_def)
-apply blast
-done
+by (unfold trans_def, blast)
 
 lemma trans_onD: 
     "[| trans[A](r);  <a,b>:r;  <b,c>:r;  a:A;  b:A;  c:A |] ==> <a,c>:r"
-apply (unfold trans_on_def)
-apply blast
+apply (unfold trans_on_def, blast)
 done
 
 subsection{*Transitive closure of a relation*}
 
 lemma rtrancl_bnd_mono:
      "bnd_mono(field(r)*field(r), %s. id(field(r)) Un (r O s))"
-apply (rule bnd_monoI)
-apply (blast intro: elim:)+
+apply (rule bnd_monoI, blast+)
 done
 
 lemma rtrancl_mono: "r<=s ==> r^* <= s^*"
 apply (unfold rtrancl_def)
 apply (rule lfp_mono)
 apply (rule rtrancl_bnd_mono)+
-apply (blast intro: elim:); 
+apply blast 
 done
 
 (* r^* = id(field(r)) Un ( r O r^* )    *)
@@ -125,25 +114,20 @@
 (*Closure under composition with r  *)
 lemma rtrancl_into_rtrancl: "[| <a,b> : r^*;  <b,c> : r |] ==> <a,c> : r^*"
 apply (rule rtrancl_unfold [THEN ssubst])
-apply (rule compI [THEN UnI2])
-apply assumption
+apply (rule compI [THEN UnI2], assumption)
 apply assumption
 done
 
 (*rtrancl of r contains all pairs in r  *)
 lemma r_into_rtrancl: "<a,b> : r ==> <a,b> : r^*"
-apply (rule rtrancl_refl [THEN rtrancl_into_rtrancl])
-apply (blast intro: elim:)+
-done
+by (rule rtrancl_refl [THEN rtrancl_into_rtrancl], blast+)
 
 (*The premise ensures that r consists entirely of pairs*)
 lemma r_subset_rtrancl: "r <= Sigma(A,B) ==> r <= r^*"
-apply (blast intro: r_into_rtrancl)
-done
+by (blast intro: r_into_rtrancl)
 
 lemma rtrancl_field: "field(r^*) = field(r)"
-apply (blast intro: r_into_rtrancl dest!: rtrancl_type [THEN subsetD])
-done
+by (blast intro: r_into_rtrancl dest!: rtrancl_type [THEN subsetD])
 
 
 (** standard induction rule **)
@@ -153,8 +137,7 @@
       !!x. x: field(r) ==> P(<x,x>);  
       !!x y z.[| P(<x,y>); <x,y>: r^*; <y,z>: r |]  ==>  P(<x,z>) |]  
    ==>  P(<a,b>)"
-apply (erule def_induct [OF rtrancl_def rtrancl_bnd_mono])
-apply (blast intro: elim:); 
+apply (erule def_induct [OF rtrancl_def rtrancl_bnd_mono], blast) 
 done
 
 (*nice induction rule.
@@ -170,16 +153,14 @@
 (*now solve first subgoal: this formula is sufficient*)
 apply (erule spec [THEN mp], rule refl)
 (*now do the induction*)
-apply (erule rtrancl_full_induct)
-apply (blast)+
+apply (erule rtrancl_full_induct, blast+)
 done
 
 (*transitivity of transitive closure!! -- by induction.*)
 lemma trans_rtrancl: "trans(r^*)"
 apply (unfold trans_def)
 apply (intro allI impI)
-apply (erule_tac b = "z" in rtrancl_induct)
-apply assumption; 
+apply (erule_tac b = "z" in rtrancl_induct, assumption)
 apply (blast intro: rtrancl_into_rtrancl) 
 done
 
@@ -192,9 +173,8 @@
      ==> P"
 apply (subgoal_tac "a = b | (EX y. <a,y> : r^* & <y,b> : r) ")
 (*see HOL/trancl*)
-apply (blast intro: elim:); 
-apply (erule rtrancl_induct)
-apply (blast intro: elim:)+
+apply blast 
+apply (erule rtrancl_induct, blast+)
 done
 
 
@@ -224,14 +204,11 @@
 
 (*The premise ensures that r consists entirely of pairs*)
 lemma r_subset_trancl: "r <= Sigma(A,B) ==> r <= r^+"
-apply (blast intro: r_into_trancl)
-done
+by (blast intro: r_into_trancl)
 
 (*intro rule by definition: from r^* and r  *)
 lemma rtrancl_into_trancl1: "[| <a,b> : r^*;  <b,c> : r |]   ==>  <a,c> : r^+"
-apply (unfold trancl_def)
-apply blast
-done
+by (unfold trancl_def, blast)
 
 (*intro rule from r and r^*  *)
 lemma rtrancl_into_trancl2:
@@ -264,7 +241,7 @@
         !!y.[| <a,y> : r^+; <y,b> : r |] ==> P   
      |] ==> P"
 apply (subgoal_tac "<a,b> : r | (EX y. <a,y> : r^+ & <y,b> : r) ")
-apply (blast intro: elim:); 
+apply blast 
 apply (rule compEpair)
 apply (unfold trancl_def, assumption)
 apply (erule rtranclE)
@@ -283,14 +260,12 @@
 (** Suggested by Sidi Ould Ehmety **)
 
 lemma rtrancl_idemp [simp]: "(r^*)^* = r^*"
-apply (rule equalityI)
-apply auto
+apply (rule equalityI, auto)
  prefer 2
  apply (frule rtrancl_type [THEN subsetD])
- apply (blast intro: r_into_rtrancl elim:); 
+ apply (blast intro: r_into_rtrancl ) 
 txt{*converse direction*}
-apply (frule rtrancl_type [THEN subsetD])
-apply (clarify ); 
+apply (frule rtrancl_type [THEN subsetD], clarify) 
 apply (erule rtrancl_induct)
 apply (simp add: rtrancl_refl rtrancl_field)
 apply (blast intro: rtrancl_trans)
@@ -298,8 +273,7 @@
 
 lemma rtrancl_subset: "[| R <= S; S <= R^* |] ==> S^* = R^*"
 apply (drule rtrancl_mono)
-apply (drule rtrancl_mono)
-apply simp_all
+apply (drule rtrancl_mono, simp_all)
 apply blast
 done