src/HOL/Proofs/ex/Hilbert_Classical.thy
author haftmann
Wed, 21 Dec 2016 21:26:26 +0100
changeset 64633 5ebcf6c525f1
parent 64474 d072c8169c7c
permissions -rw-r--r--
prefer existing logical constant over abbreviation
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
39157
b98909faaea8 more explicit HOL-Proofs sessions, including former ex/Hilbert_Classical.thy which works in parallel mode without the antiquotation option "margin" (which is still critical);
wenzelm
parents: 32960
diff changeset
     1
(*  Title:      HOL/Proofs/ex/Hilbert_Classical.thy
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
     2
    Author:     Stefan Berghofer
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
     3
    Author:     Makarius Wenzel
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
     4
*)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
     5
61986
2461779da2b8 isabelle update_cartouches -c -t;
wenzelm
parents: 58889
diff changeset
     6
section \<open>Hilbert's choice and classical logic\<close>
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
     7
39157
b98909faaea8 more explicit HOL-Proofs sessions, including former ex/Hilbert_Classical.thy which works in parallel mode without the antiquotation option "margin" (which is still critical);
wenzelm
parents: 32960
diff changeset
     8
theory Hilbert_Classical
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
     9
  imports Main
39157
b98909faaea8 more explicit HOL-Proofs sessions, including former ex/Hilbert_Classical.thy which works in parallel mode without the antiquotation option "margin" (which is still critical);
wenzelm
parents: 32960
diff changeset
    10
begin
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
    11
61986
2461779da2b8 isabelle update_cartouches -c -t;
wenzelm
parents: 58889
diff changeset
    12
text \<open>
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
    13
  Derivation of the classical law of tertium-non-datur by means of
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
    14
  Hilbert's choice operator (due to M. J. Beeson and J. Harrison).
61986
2461779da2b8 isabelle update_cartouches -c -t;
wenzelm
parents: 58889
diff changeset
    15
\<close>
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
    16
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
    17
61986
2461779da2b8 isabelle update_cartouches -c -t;
wenzelm
parents: 58889
diff changeset
    18
subsection \<open>Proof text\<close>
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
    19
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
    20
theorem tertium_non_datur: "A \<or> \<not> A"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
    21
proof -
64474
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    22
  let ?P = "\<lambda>x. (A \<and> x) \<or> \<not> x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    23
  let ?Q = "\<lambda>x. (A \<and> \<not> x) \<or> x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    24
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    25
  have a: "?P (Eps ?P)"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    26
  proof (rule someI)
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    27
    have "\<not> False" ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    28
    then show "?P False" ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    29
  qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    30
  have b: "?Q (Eps ?Q)"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    31
  proof (rule someI)
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    32
    have True ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    33
    then show "?Q True" ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    34
  qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    35
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    36
  from a show ?thesis
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    37
  proof
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    38
    assume "A \<and> Eps ?P"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    39
    then have A ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    40
    then show ?thesis ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    41
  next
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    42
    assume "\<not> Eps ?P"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    43
    from b show ?thesis
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    44
    proof
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    45
      assume "A \<and> \<not> Eps ?Q"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    46
      then have A ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    47
      then show ?thesis ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    48
    next
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    49
      assume "Eps ?Q"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    50
      have neq: "?P \<noteq> ?Q"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    51
      proof
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    52
        assume "?P = ?Q"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    53
        then have "Eps ?P \<longleftrightarrow> Eps ?Q" by (rule arg_cong)
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    54
        also note \<open>Eps ?Q\<close>
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    55
        finally have "Eps ?P" .
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    56
        with \<open>\<not> Eps ?P\<close> show False by contradiction
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    57
      qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    58
      have "\<not> A"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    59
      proof
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    60
        assume A
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    61
        have "?P = ?Q"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    62
        proof (rule ext)
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    63
          show "?P x \<longleftrightarrow> ?Q x" for x
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    64
          proof
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    65
            assume "?P x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    66
            then show "?Q x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    67
            proof
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    68
              assume "\<not> x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    69
              with \<open>A\<close> have "A \<and> \<not> x" ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    70
              then show ?thesis ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    71
            next
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    72
              assume "A \<and> x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    73
              then have x ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    74
              then show ?thesis ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    75
            qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    76
          next
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    77
            assume "?Q x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    78
            then show "?P x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    79
            proof
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    80
              assume "A \<and> \<not> x"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    81
              then have "\<not> x" ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    82
              then show ?thesis ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    83
            next
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    84
              assume x
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    85
              with \<open>A\<close> have "A \<and> x" ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    86
              then show ?thesis ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    87
            qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    88
          qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    89
        qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    90
        with neq show False by contradiction
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    91
      qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    92
      then show ?thesis ..
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    93
    qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    94
  qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    95
qed
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    96
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    97
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    98
subsection \<open>Old proof text\<close>
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
    99
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   100
theorem tertium_non_datur1: "A \<or> \<not> A"
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   101
proof -
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   102
  let ?P = "\<lambda>x. (x \<longleftrightarrow> False) \<or> (x \<longleftrightarrow> True) \<and> A"
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   103
  let ?Q = "\<lambda>x. (x \<longleftrightarrow> False) \<and> A \<or> (x \<longleftrightarrow> True)"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   104
11590
wenzelm
parents: 11584
diff changeset
   105
  have a: "?P (Eps ?P)"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   106
  proof (rule someI)
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   107
    show "?P False" using refl ..
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   108
  qed
11590
wenzelm
parents: 11584
diff changeset
   109
  have b: "?Q (Eps ?Q)"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   110
  proof (rule someI)
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   111
    show "?Q True" using refl ..
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   112
  qed
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   113
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   114
  from a show ?thesis
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   115
  proof
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   116
    assume "(Eps ?P \<longleftrightarrow> True) \<and> A"
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   117
    then have A ..
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   118
    then show ?thesis ..
11590
wenzelm
parents: 11584
diff changeset
   119
  next
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   120
    assume P: "Eps ?P \<longleftrightarrow> False"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   121
    from b show ?thesis
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   122
    proof
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   123
      assume "(Eps ?Q \<longleftrightarrow> False) \<and> A"
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   124
      then have A ..
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   125
      then show ?thesis ..
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   126
    next
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   127
      assume Q: "Eps ?Q \<longleftrightarrow> True"
11590
wenzelm
parents: 11584
diff changeset
   128
      have neq: "?P \<noteq> ?Q"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   129
      proof
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   130
        assume "?P = ?Q"
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   131
        then have "Eps ?P \<longleftrightarrow> Eps ?Q" by (rule arg_cong)
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   132
        also note P
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   133
        also note Q
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   134
        finally show False by (rule False_neq_True)
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   135
      qed
11590
wenzelm
parents: 11584
diff changeset
   136
      have "\<not> A"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   137
      proof
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   138
        assume A
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   139
        have "?P = ?Q"
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   140
        proof (rule ext)
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   141
          show "?P x \<longleftrightarrow> ?Q x" for x
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   142
          proof
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   143
            assume "?P x"
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   144
            then show "?Q x"
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   145
            proof
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   146
              assume "x \<longleftrightarrow> False"
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   147
              from this and \<open>A\<close> have "(x \<longleftrightarrow> False) \<and> A" ..
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   148
              then show ?thesis ..
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   149
            next
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   150
              assume "(x \<longleftrightarrow> True) \<and> A"
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   151
              then have "x \<longleftrightarrow> True" ..
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   152
              then show ?thesis ..
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   153
            qed
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   154
          next
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   155
            assume "?Q x"
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   156
            then show "?P x"
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   157
            proof
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   158
              assume "(x \<longleftrightarrow> False) \<and> A"
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   159
              then have "x \<longleftrightarrow> False" ..
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   160
              then show ?thesis ..
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   161
            next
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   162
              assume "x \<longleftrightarrow> True"
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   163
              from this and \<open>A\<close> have "(x \<longleftrightarrow> True) \<and> A" ..
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   164
              then show ?thesis ..
32960
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   165
            qed
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   166
          qed
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   167
        qed
69916a850301 eliminated hard tabulators, guessing at each author's individual tab-width;
wenzelm
parents: 26828
diff changeset
   168
        with neq show False by contradiction
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   169
      qed
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   170
      then show ?thesis ..
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   171
    qed
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   172
  qed
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   173
qed
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   174
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   175
64474
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   176
subsection \<open>Old proof script\<close>
11591
wenzelm
parents: 11590
diff changeset
   177
64474
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   178
theorem tertium_non_datur2: "A \<or> \<not> A"
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   179
  apply (subgoal_tac
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   180
      "(((SOME x. x = False \<or> x = True \<and> A) = False) \<or>
11590
wenzelm
parents: 11584
diff changeset
   181
      ((SOME x. x = False \<or> x = True \<and> A) = True) \<and> A) \<and>
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   182
      (((SOME x. x = False \<and> A \<or> x = True) = False) \<and> A \<or>
11590
wenzelm
parents: 11584
diff changeset
   183
      ((SOME x. x = False \<and> A \<or> x = True) = True))")
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   184
   prefer 2
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   185
   apply (rule conjI)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   186
    apply (rule someI)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   187
    apply (rule disjI1)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   188
    apply (rule refl)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   189
   apply (rule someI)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   190
   apply (rule disjI2)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   191
   apply (rule refl)
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   192
  apply (erule conjE)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   193
  apply (erule disjE)
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   194
   apply (erule disjE)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   195
    apply (erule conjE)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   196
    apply (erule disjI1)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   197
   prefer 2
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   198
   apply (erule conjE)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   199
   apply (erule disjI1)
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   200
  apply (subgoal_tac
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   201
      "(\<lambda>x. (x = False) \<or> (x = True) \<and> A) \<noteq>
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   202
      (\<lambda>x. (x = False) \<and> A \<or> (x = True))")
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   203
   prefer 2
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   204
   apply (rule notI)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   205
   apply (drule_tac f = "\<lambda>y. SOME x. y x" in arg_cong)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   206
   apply (drule trans, assumption)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   207
   apply (drule sym)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   208
   apply (drule trans, assumption)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   209
   apply (erule False_neq_True)
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   210
  apply (rule disjI2)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   211
  apply (rule notI)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   212
  apply (erule notE)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   213
  apply (rule ext)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   214
  apply (rule iffI)
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   215
   apply (erule disjE)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   216
    apply (rule disjI1)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   217
    apply (erule conjI)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   218
    apply assumption
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   219
   apply (erule conjE)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   220
   apply (erule disjI2)
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   221
  apply (erule disjE)
64473
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   222
   apply (erule conjE)
6eff987ab718 misc tuning and modernization;
wenzelm
parents: 61986
diff changeset
   223
   apply (erule disjI1)
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   224
  apply (rule disjI2)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   225
  apply (erule conjI)
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   226
  apply assumption
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   227
  done
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   228
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   229
64474
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   230
subsection \<open>Proof terms\<close>
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   231
64474
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   232
prf tertium_non_datur
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   233
prf tertium_non_datur1
d072c8169c7c simplified main proof;
wenzelm
parents: 64473
diff changeset
   234
prf tertium_non_datur2
11584
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   235
c8e98b9498b4 derive tertium-non-datur by means of Hilbert's choice operator;
wenzelm
parents:
diff changeset
   236
end