doc-src/TutorialI/Rules/Basic.thy
changeset 13550 5a176b8dda84
parent 12408 2884148a9fe9
child 13756 41abb61ecce9
equal deleted inserted replaced
13549:f1522b892a4c 13550:5a176b8dda84
    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