src/HOL/Univ.ML
changeset 8292 93e125b21220
parent 8114 09a7a180cc99
child 8703 816d8f6513be
equal deleted inserted replaced
8291:5469b894f30b 8292:93e125b21220
   423 by (rtac (p1 RS FunsD) 1);
   423 by (rtac (p1 RS FunsD) 1);
   424 qed "Funs_inv";
   424 qed "Funs_inv";
   425 
   425 
   426 val [p1, p2] = Goalw [o_def]
   426 val [p1, p2] = Goalw [o_def]
   427      "[| f : Funs (range g); !!h. f = g o h ==> P |] ==> P";
   427      "[| f : Funs (range g); !!h. f = g o h ==> P |] ==> P";
   428 by (res_inst_tac [("h", "%x. @y. f x = g y")] p2 1);
   428 by (res_inst_tac [("h", "%x. @y. (f::'a=>'b) x = g y")] p2 1);
   429 by (rtac ext 1);
   429 by (rtac ext 1);
   430 by (rtac (p1 RS FunsD RS rangeE) 1);
   430 by (rtac (p1 RS FunsD RS rangeE) 1);
   431 by (etac (exI RS (select_eq_Ex RS iffD2)) 1);
   431 by (etac (exI RS (select_eq_Ex RS iffD2)) 1);
   432 qed "Funs_rangeE";
   432 qed "Funs_rangeE";
   433 
   433