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