src/HOL/Isar_examples/Peirce.thy
author wenzelm
Mon, 02 Aug 1999 17:58:46 +0200
changeset 7153 820c8c8573d9
parent 6892 4a905b4a39c8
child 7448 3ee96dccdd39
permissions -rw-r--r--
tuned;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     1
(*  Title:      HOL/Isar_examples/Peirce.thy
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     2
    ID:         $Id$
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     3
    Author:     Markus Wenzel, TU Muenchen
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     4
*)
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     5
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     6
theory Peirce = Main:;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     7
6746
cf6ad8d22793 tuned formal comments;
wenzelm
parents: 6493
diff changeset
     8
text {* Peirce's law: examples of classical proof. *};
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
     9
6493
wenzelm
parents: 6444
diff changeset
    10
theorem "((A --> B) --> A) --> A";
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    11
proof;
6892
wenzelm
parents: 6854
diff changeset
    12
  assume aba: "(A --> B) --> A";
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    13
  show A;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    14
  proof (rule classical);
6892
wenzelm
parents: 6854
diff changeset
    15
    assume not_a: "~ A";
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    16
6892
wenzelm
parents: 6854
diff changeset
    17
    have ab: "A --> B";
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    18
    proof;
6892
wenzelm
parents: 6854
diff changeset
    19
      assume a: A;
7153
wenzelm
parents: 6892
diff changeset
    20
      show B; by contradiction;
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    21
    qed;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    22
6892
wenzelm
parents: 6854
diff changeset
    23
    from aba ab; show A; ..;
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    24
  qed;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    25
qed;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    26
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    27
6493
wenzelm
parents: 6444
diff changeset
    28
theorem "((A --> B) --> A) --> A";
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    29
proof;
6892
wenzelm
parents: 6854
diff changeset
    30
  assume aba: "(A --> B) --> A";
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    31
  show A;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    32
  proof (rule classical);
6892
wenzelm
parents: 6854
diff changeset
    33
    presume ab: "A --> B";
wenzelm
parents: 6854
diff changeset
    34
    from aba ab; show A; ..;
6854
60a5ee0ca81d updated;
wenzelm
parents: 6746
diff changeset
    35
  next;
6892
wenzelm
parents: 6854
diff changeset
    36
    assume not_a: "~ A";
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    37
    show "A --> B";
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    38
    proof;
6892
wenzelm
parents: 6854
diff changeset
    39
      assume a: A;
wenzelm
parents: 6854
diff changeset
    40
      from not_a a; show B; ..;
6444
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    41
    qed;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    42
  qed;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    43
qed;
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    44
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    45
2ebe9e630cab Miscellaneous Isabelle/Isar examples for Higher-Order Logic.
wenzelm
parents:
diff changeset
    46
end;