src/HOL/Prod.ML
changeset 1642 21db0cf9a1a4
parent 1618 372880456b5b
child 1655 5be64540f275
equal deleted inserted replaced
1641:46d2d4a249ca 1642:21db0cf9a1a4
   223   [ (rtac minor 1),
   223   [ (rtac minor 1),
   224     (rtac (major RS SigmaD1) 1),
   224     (rtac (major RS SigmaD1) 1),
   225     (rtac (major RS SigmaD2) 1) ]);
   225     (rtac (major RS SigmaD2) 1) ]);
   226 
   226 
   227 val prems = goal Prod.thy
   227 val prems = goal Prod.thy
   228     "[| A<=C;  !!x. x:A ==> B<=D |] ==> Sigma A (%x.B) <= Sigma C (%x.D)";
   228     "[| A<=C;  !!x. x:A ==> B x <= D x |] ==> Sigma A B <= Sigma C D";
   229 by (cut_facts_tac prems 1);
   229 by (cut_facts_tac prems 1);
   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 = {}"
   235 qed_goal "Sigma_empty1" Prod.thy "Sigma {} B = {}"
   236  (fn _ => [ (fast_tac (eq_cs addSEs [SigmaE]) 1) ]);
   236  (fn _ => [ (fast_tac (eq_cs addSEs [SigmaE]) 1) ]);
   237 
   237 
   238 qed_goal "Sigma_empty2" Prod.thy "Sigma A (%x.{}) = {}"
   238 qed_goal "Sigma_empty2" Prod.thy "A Times {} = {}"
   239  (fn _ => [ (fast_tac (eq_cs addSEs [SigmaE]) 1) ]);
   239  (fn _ => [ (fast_tac (eq_cs addSEs [SigmaE]) 1) ]);
   240 
   240 
   241 Addsimps [Sigma_empty1,Sigma_empty2]; 
   241 Addsimps [Sigma_empty1,Sigma_empty2]; 
   242 
   242 
   243 goal Prod.thy "((a,b): Sigma A B) = (a:A & b:B(a))";
   243 goal Prod.thy "((a,b): Sigma A B) = (a:A & b:B(a))";