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