src/HOL/Prod.ML
changeset 1618 372880456b5b
parent 1552 6f71b5d46700
child 1642 21db0cf9a1a4
equal deleted inserted replaced
1617:f9a9d27e9278 1618:372880456b5b
   230 by (fast_tac (set_cs addIs (prems RL [subsetD]) 
   230 by (fast_tac (set_cs addIs (prems RL [subsetD]) 
   231                      addSIs [SigmaI] 
   231                      addSIs [SigmaI] 
   232                      addSEs [SigmaE]) 1);
   232                      addSEs [SigmaE]) 1);
   233 qed "Sigma_mono";
   233 qed "Sigma_mono";
   234 
   234 
       
   235 qed_goal "Sigma_empty1" Prod.thy "Sigma {} B = {}"
       
   236  (fn _ => [ (fast_tac (eq_cs addSEs [SigmaE]) 1) ]);
       
   237 
       
   238 qed_goal "Sigma_empty2" Prod.thy "Sigma A (%x.{}) = {}"
       
   239  (fn _ => [ (fast_tac (eq_cs addSEs [SigmaE]) 1) ]);
       
   240 
       
   241 Addsimps [Sigma_empty1,Sigma_empty2]; 
       
   242 
       
   243 goal Prod.thy "((a,b): Sigma A B) = (a:A & b:B(a))";
       
   244 by (fast_tac (eq_cs addSIs [SigmaI] addSEs [SigmaE, Pair_inject]) 1);
       
   245 qed "mem_Sigma_iff";
       
   246 Addsimps [mem_Sigma_iff]; 
       
   247 
   235 
   248 
   236 (*** Domain of a relation ***)
   249 (*** Domain of a relation ***)
   237 
   250 
   238 val prems = goalw Prod.thy [image_def] "(a,b) : r ==> a : fst``r";
   251 val prems = goalw Prod.thy [image_def] "(a,b) : r ==> a : fst``r";
   239 by (rtac CollectI 1);
   252 by (rtac CollectI 1);