equal
deleted
inserted
replaced
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); |