diff -r 55497029b255 -r 7c638a46dcbb src/HOL/ex/set.thy --- a/src/HOL/ex/set.thy Wed Feb 02 18:06:00 2005 +0100 +++ b/src/HOL/ex/set.thy Wed Feb 02 18:06:25 2005 +0100 @@ -103,21 +103,18 @@ theorem Schroeder_Bernstein: "inj (f :: 'a \ 'b) \ inj (g :: 'b \ 'a) \ \h:: 'a \ 'b. inj h \ surj h" - apply (rule decomposition [THEN exE]) - apply (rule exI) + apply (rule decomposition [where f=f and g=g, THEN exE]) + apply (rule_tac x = "(\z. if z \ x then f z else inv g z)" in exI) + --{*The term above can be synthesized by a sufficiently detailed proof.*} apply (rule bij_if_then_else) apply (rule_tac [4] refl) apply (rule_tac [2] inj_on_inv) apply (erule subset_inj_on [OF _ subset_UNIV]) - txt {* Tricky variable instantiations! *} - apply (erule ssubst, simplesubst double_complement) - apply (rule subsetI, erule imageE, erule ssubst, rule rangeI) - apply (erule ssubst, simplesubst double_complement, erule inv_image_comp [symmetric]) + apply blast + apply (erule ssubst, subst double_complement, erule inv_image_comp [symmetric]) done -subsection {* Set variable instantiation examples *} - text {* From W. W. Bledsoe and Guohui Feng, SET-VAR. JAR 11 (3), 1993, pages 293-314.