src/HOL/Equiv_Relations.thy
changeset 59528 4862f3dc9540
parent 58889 5b7a9633cfa8
child 60517 f16e4fb20652
equal deleted inserted replaced
59527:edaabc1ab1ed 59528:4862f3dc9540
   157 lemma quotient_diff1:
   157 lemma quotient_diff1:
   158   "\<lbrakk> inj_on (%a. {a}//r) A; a \<in> A \<rbrakk> \<Longrightarrow> (A - {a})//r = A//r - {a}//r"
   158   "\<lbrakk> inj_on (%a. {a}//r) A; a \<in> A \<rbrakk> \<Longrightarrow> (A - {a})//r = A//r - {a}//r"
   159 apply(simp add:quotient_def inj_on_def)
   159 apply(simp add:quotient_def inj_on_def)
   160 apply blast
   160 apply blast
   161 done
   161 done
       
   162 
       
   163 subsection {* Refinement of one equivalence relation WRT another *}
       
   164 
       
   165 lemma refines_equiv_class_eq:
       
   166    "\<lbrakk>R \<subseteq> S; equiv A R; equiv A S\<rbrakk> \<Longrightarrow> R``(S``{a}) = S``{a}"
       
   167   by (auto simp: equiv_class_eq_iff)
       
   168 
       
   169 lemma refines_equiv_class_eq2:
       
   170    "\<lbrakk>R \<subseteq> S; equiv A R; equiv A S\<rbrakk> \<Longrightarrow> S``(R``{a}) = S``{a}"
       
   171   by (auto simp: equiv_class_eq_iff)
       
   172 
       
   173 lemma refines_equiv_image_eq:
       
   174    "\<lbrakk>R \<subseteq> S; equiv A R; equiv A S\<rbrakk> \<Longrightarrow> (\<lambda>X. S``X) ` (A//R) = A//S"
       
   175    by (auto simp: quotient_def image_UN refines_equiv_class_eq2)
       
   176 
       
   177 lemma finite_refines_finite:
       
   178    "\<lbrakk>finite (A//R); R \<subseteq> S; equiv A R; equiv A S\<rbrakk> \<Longrightarrow> finite (A//S)"
       
   179     apply (erule finite_surj [where f = "\<lambda>X. S``X"])
       
   180     apply (simp add: refines_equiv_image_eq)
       
   181     done
       
   182 
       
   183 lemma finite_refines_card_le:
       
   184    "\<lbrakk>finite (A//R); R \<subseteq> S; equiv A R; equiv A S\<rbrakk> \<Longrightarrow> card (A//S) \<le> card (A//R)"
       
   185   apply (subst refines_equiv_image_eq [of R S A, symmetric])
       
   186   apply (auto simp: card_image_le [where f = "\<lambda>X. S``X"])
       
   187   done
   162 
   188 
   163 
   189 
   164 subsection {* Defining unary operations upon equivalence classes *}
   190 subsection {* Defining unary operations upon equivalence classes *}
   165 
   191 
   166 text{*A congruence-preserving function*}
   192 text{*A congruence-preserving function*}