(*<*)theory Quantification imports Main begin(*>*) text {* \section*{Pr\"adikatenlogik} Es geht wiederum um Beweise mit den Regeln des Kalk\"uls des nat\"urlichen Schlie{\ss}ens. Zus\"atzlich zu den Regeln von Blatt~1 k\"onnen Sie nun auch folgende Regeln verwenden: @{text "allI:"}~@{thm allI[no_vars]}\\ @{text "allE:"}~@{thm allE[no_vars]}\\ @{text "exI:"}~@{thm exI[no_vars]}\\ @{text "exE:"}~@{thm exE[no_vars]} Es d\"urfen wiederum nur die Methoden @{term rule}, @{term erule} und @{term assumption} verwendet werden. Achten Sie darauf, f\"ur @{text exI} und @{text allE} nur @{text rule_tac} bzw. @{text erule_tac} mit gleichzeitiger Instantiierung der Variablen zu verwenden, ansonsten erhalten sie beliebige Variablen, die den Beweis erschweren k\"onnen! Beispiel: *} lemma "\x. P x \ (\x. P x)" apply(rule allI) apply(rule impI) apply(rule_tac x="x" in exI) apply assumption done lemma "(\x. P x) = (\ (\x. \ P x))" oops lemma "(\ (\x. P x)) = (\x. \ P x)" oops lemma "(\x. P x \ Q) = ((\x. P x) \ Q)" oops lemma "(\x. \y. P x y) \ (\y. \x. P x y)" oops lemma "((\x. P x) \ (\x. Q x)) = (\x. (P x \ Q x))" oops lemma "((\x. P x) \ (\x. Q x)) = (\x. (P x \ Q x))" oops lemma "\x. P x \ (\x. P x)" oops (*<*) end (*>*)