new lemmas
authorpaulson
Mon, 24 Jun 2002 11:58:21 +0200
changeset 13243ba53d07d32d5
parent 13242 f96bd927dd37
child 13244 7b37e218f298
new lemmas
src/ZF/Ordinal.thy
src/ZF/Trancl.thy
     1.1 --- a/src/ZF/Ordinal.thy	Mon Jun 24 11:57:23 2002 +0200
     1.2 +++ b/src/ZF/Ordinal.thy	Mon Jun 24 11:58:21 2002 +0200
     1.3 @@ -127,6 +127,10 @@
     1.4  lemma Ord_in_Ord: "[| Ord(i);  j:i |] ==> Ord(j)"
     1.5  by (unfold Ord_def Transset_def, blast)
     1.6  
     1.7 +(*suitable for rewriting PROVIDED i has been fixed*)
     1.8 +lemma Ord_in_Ord': "[| j:i; Ord(i) |] ==> Ord(j)"
     1.9 +by (blast intro: Ord_in_Ord)
    1.10 +
    1.11  (* Ord(succ(j)) ==> Ord(j) *)
    1.12  lemmas Ord_succD = Ord_in_Ord [OF _ succI1]
    1.13  
    1.14 @@ -456,7 +460,7 @@
    1.15  lemma lt_imp_0_lt: "j<i ==> 0<i"
    1.16  by (blast intro: lt_trans1 Ord_0_le [OF lt_Ord]) 
    1.17  
    1.18 -lemma succ_lt_iff: "succ(i) < j \<longleftrightarrow> i<j & succ(i) \<noteq> j"
    1.19 +lemma succ_lt_iff: "succ(i) < j <-> i<j & succ(i) \<noteq> j"
    1.20  apply auto 
    1.21  apply (blast intro: lt_trans le_refl dest: lt_Ord) 
    1.22  apply (frule lt_Ord) 
    1.23 @@ -467,6 +471,11 @@
    1.24  apply (blast dest: lt_asym) 
    1.25  done
    1.26  
    1.27 +lemma Ord_succ_mem_iff: "Ord(j) ==> succ(i) \<in> succ(j) <-> i\<in>j"
    1.28 +apply (insert succ_le_iff [of i j]) 
    1.29 +apply (simp add: lt_def) 
    1.30 +done
    1.31 +
    1.32  (** Union and Intersection **)
    1.33  
    1.34  lemma Un_upper1_le: "[| Ord(i); Ord(j) |] ==> i le i Un j"
     2.1 --- a/src/ZF/Trancl.thy	Mon Jun 24 11:57:23 2002 +0200
     2.2 +++ b/src/ZF/Trancl.thy	Mon Jun 24 11:58:21 2002 +0200
     2.3 @@ -79,8 +79,10 @@
     2.4  
     2.5  lemma trans_onD: 
     2.6      "[| trans[A](r);  <a,b>:r;  <b,c>:r;  a:A;  b:A;  c:A |] ==> <a,c>:r"
     2.7 -apply (unfold trans_on_def, blast)
     2.8 -done
     2.9 +by (unfold trans_on_def, blast)
    2.10 +
    2.11 +lemma trans_imp_trans_on: "trans(r) ==> trans[A](r)"
    2.12 +by (unfold trans_def trans_on_def, blast)
    2.13  
    2.14  subsection{*Transitive closure of a relation*}
    2.15  
    2.16 @@ -187,6 +189,8 @@
    2.17                      trans_rtrancl [THEN transD, THEN compI])
    2.18  done
    2.19  
    2.20 +lemmas trans_on_trancl = trans_trancl [THEN trans_imp_trans_on]
    2.21 +
    2.22  lemmas trancl_trans = trans_trancl [THEN transD, standard]
    2.23  
    2.24  (** Conversions between trancl and rtrancl **)
    2.25 @@ -253,6 +257,9 @@
    2.26  apply (blast elim: rtrancl_type [THEN subsetD, THEN SigmaE2])
    2.27  done
    2.28  
    2.29 +lemma trancl_subset_times: "r \<subseteq> A * A ==> r^+ \<subseteq> A * A"
    2.30 +by (insert trancl_type [of r], blast)
    2.31 +
    2.32  lemma trancl_mono: "r<=s ==> r^+ <= s^+"
    2.33  by (unfold trancl_def, intro comp_mono rtrancl_mono)
    2.34