src/HOL/Product_Type.ML
changeset 10832 e33b47e4246d
parent 10829 b74566c667c7
child 10918 9679326489cd
equal deleted inserted replaced
10831:024bdf8e52a4 10832:e33b47e4246d
   392 by (pair_tac "z" 1);
   392 by (pair_tac "z" 1);
   393 by (Asm_simp_tac 1);
   393 by (Asm_simp_tac 1);
   394 qed "prod_fun_ident";
   394 qed "prod_fun_ident";
   395 Addsimps [prod_fun_ident];
   395 Addsimps [prod_fun_ident];
   396 
   396 
   397 Goal "(a,b):r ==> (f(a),g(b)) : (prod_fun f g)``r";
   397 Goal "(a,b):r ==> (f(a),g(b)) : (prod_fun f g)`r";
   398 by (rtac image_eqI 1);
   398 by (rtac image_eqI 1);
   399 by (rtac (prod_fun RS sym) 1);
   399 by (rtac (prod_fun RS sym) 1);
   400 by (assume_tac 1);
   400 by (assume_tac 1);
   401 qed "prod_fun_imageI";
   401 qed "prod_fun_imageI";
   402 
   402 
   403 val major::prems = Goal
   403 val major::prems = Goal
   404     "[| c: (prod_fun f g)``r;  !!x y. [| c=(f(x),g(y));  (x,y):r |] ==> P  \
   404     "[| c: (prod_fun f g)`r;  !!x y. [| c=(f(x),g(y));  (x,y):r |] ==> P  \
   405 \    |] ==> P";
   405 \    |] ==> P";
   406 by (rtac (major RS imageE) 1);
   406 by (rtac (major RS imageE) 1);
   407 by (res_inst_tac [("p","x")] PairE 1);
   407 by (res_inst_tac [("p","x")] PairE 1);
   408 by (resolve_tac prems 1);
   408 by (resolve_tac prems 1);
   409 by (Blast_tac 2);
   409 by (Blast_tac 2);