src/HOL/Integ/Equiv.ML
changeset 3358 13f1df323daf
parent 2215 ebf910e7ec87
child 3374 182a2b76d19e
equal deleted inserted replaced
3357:c224dddc5f71 3358:13f1df323daf
   123 by (rtac minor 1);
   123 by (rtac minor 1);
   124 by (assume_tac 2);
   124 by (assume_tac 2);
   125 by (Fast_tac 1);
   125 by (Fast_tac 1);
   126 qed "quotientE";
   126 qed "quotientE";
   127 
   127 
   128 (** Not needed by Theory Integ --> bypassed **)
   128 goalw Equiv.thy [equiv_def,refl_def,quotient_def]
   129 (**goalw Equiv.thy [equiv_def,refl_def,quotient_def]
       
   130     "!!A r. equiv A r ==> Union(A/r) = A";
   129     "!!A r. equiv A r ==> Union(A/r) = A";
   131 by (Fast_tac 1);
   130 by (blast_tac (!claset addSIs [equalityI]) 1);
   132 qed "Union_quotient";
   131 qed "Union_quotient";
   133 **)
   132 
   134 
   133 goalw Equiv.thy [quotient_def]
   135 (** Not needed by Theory Integ --> bypassed **)
   134     "!!A r. [| equiv A r;  X: A/r;  Y: A/r |] ==> X=Y | (X Int Y = {})";
   136 (*goalw Equiv.thy [quotient_def]
       
   137     "!!A r. [| equiv A r;  X: A/r;  Y: A/r |] ==> X=Y | (X Int Y <= 0)";
       
   138 by (safe_tac (!claset addSIs [equiv_class_eq]));
   135 by (safe_tac (!claset addSIs [equiv_class_eq]));
   139 by (assume_tac 1);
   136 by (assume_tac 1);
   140 by (rewrite_goals_tac [equiv_def,trans_def,sym_def]);
   137 by (rewrite_goals_tac [equiv_def,trans_def,sym_def]);
   141 by (Fast_tac 1);
   138 by (blast_tac (!claset addSIs [equalityI]) 1);
   142 qed "quotient_disj";
   139 qed "quotient_disj";
   143 **)
   140 
   144 
   141 
   145 (**** Defining unary operations upon equivalence classes ****)
   142 (**** Defining unary operations upon equivalence classes ****)
   146 
   143 
   147 (* theorem needed to prove UN_equiv_class *)
   144 (* theorem needed to prove UN_equiv_class *)
   148 goal Set.thy "!!A. [| a:A; ! y:A. b(y)=b(a) |] ==> (UN y:A. b(y))=b(a)";
   145 goal Set.thy "!!A. [| a:A; ! y:A. b(y)=b(a) |] ==> (UN y:A. b(y))=b(a)";