equal
deleted
inserted
replaced
38 |
38 |
39 text {* |
39 text {* |
40 by eliminates uses of assumption and done |
40 by eliminates uses of assumption and done |
41 *} |
41 *} |
42 |
42 |
43 lemma imp_uncurry: "P \<longrightarrow> Q \<longrightarrow> R \<Longrightarrow> P \<and> Q \<longrightarrow> R" |
43 lemma imp_uncurry': "P \<longrightarrow> Q \<longrightarrow> R \<Longrightarrow> P \<and> Q \<longrightarrow> R" |
44 apply (rule impI) |
44 apply (rule impI) |
45 apply (erule conjE) |
45 apply (erule conjE) |
46 apply (drule mp) |
46 apply (drule mp) |
47 apply assumption |
47 apply assumption |
48 by (drule mp) |
48 by (drule mp) |
351 (*both can be done by blast, which however hasn't been introduced yet*) |
351 (*both can be done by blast, which however hasn't been introduced yet*) |
352 lemma "[| P (k::nat); \<forall>x. P x \<longrightarrow> k \<le> x |] ==> (LEAST x. P(x)) = k"; |
352 lemma "[| P (k::nat); \<forall>x. P x \<longrightarrow> k \<le> x |] ==> (LEAST x. P(x)) = k"; |
353 apply (simp add: Least_def LeastM_def) |
353 apply (simp add: Least_def LeastM_def) |
354 by (blast intro: some_equality order_antisym); |
354 by (blast intro: some_equality order_antisym); |
355 |
355 |
356 theorem axiom_of_choice: "(\<forall>x. \<exists>y. P x y) \<Longrightarrow> \<exists>f. \<forall>x. P x (f x)" |
356 theorem axiom_of_choice': "(\<forall>x. \<exists>y. P x y) \<Longrightarrow> \<exists>f. \<forall>x. P x (f x)" |
357 apply (rule exI [of _ "\<lambda>x. SOME y. P x y"]) |
357 apply (rule exI [of _ "\<lambda>x. SOME y. P x y"]) |
358 by (blast intro: someI); |
358 by (blast intro: someI); |
359 |
359 |
360 text{*end of Epsilon section*} |
360 text{*end of Epsilon section*} |
361 |
361 |