doc-src/Exercises/0304/a3/a3.thy
changeset 15891 260090b54ef9
parent 15890 ff6787d730d5
child 15892 153541e29155
equal deleted inserted replaced
15890:ff6787d730d5 15891:260090b54ef9
     1 
       
     2 (*<*) theory a3 = Main: (*>*)
       
     3 
       
     4 subsection {* Natural deduction -- Propositional Logic \label{psv0304a3} *}
       
     5 
       
     6 text {* In this exercise, we will prove some lemmas of propositional
       
     7 logic with the aid of a calculus of natural deduction.
       
     8 
       
     9 For the proofs, you may only use
       
    10 
       
    11 \begin{itemize}
       
    12 \item the following lemmas: \\
       
    13 @{text "notI:"}~@{thm notI[of A,no_vars]},\\
       
    14 @{text "notE:"}~@{thm notE[of A B,no_vars]},\\
       
    15 @{text "conjI:"}~@{thm conjI[of A B,no_vars]},\\ 
       
    16 @{text "conjE:"}~@{thm conjE[of A B C,no_vars]},\\
       
    17 @{text "disjI1:"}~@{thm disjI1[of A B,no_vars]},\\
       
    18 @{text "disjI2:"}~@{thm disjI2[of A B,no_vars]},\\
       
    19 @{text "disjE:"}~@{thm disjE[of A B C,no_vars]},\\
       
    20 @{text "impI:"}~@{thm impI[of A B,no_vars]},\\
       
    21 @{text "impE:"}~@{thm impE[of A B C,no_vars]},\\
       
    22 @{text "mp:"}~@{thm mp[of A B,no_vars]}\\
       
    23 @{text "iffI:"}~@{thm iffI[of A B,no_vars]}, \\
       
    24 @{text "iffE:"}~@{thm iffE[of A B C,no_vars]}\\
       
    25 @{text "classical:"}~@{thm classical[of A,no_vars]}
       
    26 
       
    27 \item the proof methods @{term rule}, @{term erule} and @{term assumption}
       
    28 \end{itemize}
       
    29 *}
       
    30 
       
    31 lemma I: "A \<longrightarrow> A"
       
    32 (*<*) oops (*>*)
       
    33 
       
    34 lemma "A \<and> B \<longrightarrow> B \<and> A"
       
    35 (*<*) oops (*>*)
       
    36 
       
    37 lemma "(A \<and> B) \<longrightarrow> (A \<or> B)"
       
    38 (*<*) oops (*>*)
       
    39 
       
    40 lemma "((A \<or> B) \<or> C) \<longrightarrow> A \<or> (B \<or> C)"
       
    41 (*<*) oops (*>*)
       
    42 
       
    43 lemma K: "A \<longrightarrow> B \<longrightarrow> A"
       
    44 (*<*) oops (*>*)
       
    45 
       
    46 lemma "(A \<or> A) = (A \<and> A)"
       
    47 (*<*) oops (*>*)
       
    48 
       
    49 lemma S: "(A \<longrightarrow> B \<longrightarrow> C) \<longrightarrow> (A \<longrightarrow> B) \<longrightarrow> A \<longrightarrow> C"
       
    50 (*<*) oops (*>*)
       
    51 
       
    52 lemma "(A \<longrightarrow> B) \<longrightarrow> (B \<longrightarrow> C) \<longrightarrow> A \<longrightarrow> C"
       
    53 (*<*) oops (*>*)
       
    54 
       
    55 lemma "\<not> \<not> A \<longrightarrow> A"
       
    56 (*<*) oops (*>*)
       
    57 
       
    58 lemma "A \<longrightarrow> \<not> \<not> A"
       
    59 (*<*) oops (*>*)
       
    60 
       
    61 lemma "(\<not> A \<longrightarrow> B) \<longrightarrow> (\<not> B \<longrightarrow> A)"
       
    62 (*<*) oops (*>*)
       
    63 
       
    64 lemma "((A \<longrightarrow> B) \<longrightarrow> A) \<longrightarrow> A"
       
    65 (*<*) oops (*>*)
       
    66 
       
    67 lemma "A \<or> \<not> A"
       
    68 (*<*) oops (*>*)
       
    69 
       
    70 lemma "(\<not> (A \<and> B)) = (\<not> A \<or> \<not> B)"
       
    71 (*<*) oops (*>*)
       
    72 
       
    73 (*<*) end (*>*)
       
    74