equal
deleted
inserted
replaced
1 (* Title: HOL/Proofs/ex/Hilbert_Classical.thy |
1 (* Title: HOL/Proofs/ex/Hilbert_Classical.thy |
2 Author: Stefan Berghofer and Markus Wenzel, TU Muenchen |
2 Author: Stefan Berghofer and Markus Wenzel, TU Muenchen |
3 *) |
3 *) |
4 |
4 |
5 section {* Hilbert's choice and classical logic *} |
5 section \<open>Hilbert's choice and classical logic\<close> |
6 |
6 |
7 theory Hilbert_Classical |
7 theory Hilbert_Classical |
8 imports Main |
8 imports Main |
9 begin |
9 begin |
10 |
10 |
11 text {* |
11 text \<open> |
12 Derivation of the classical law of tertium-non-datur by means of |
12 Derivation of the classical law of tertium-non-datur by means of |
13 Hilbert's choice operator (due to M. J. Beeson and J. Harrison). |
13 Hilbert's choice operator (due to M. J. Beeson and J. Harrison). |
14 *} |
14 \<close> |
15 |
15 |
16 |
16 |
17 subsection {* Proof text *} |
17 subsection \<open>Proof text\<close> |
18 |
18 |
19 theorem tnd: "A \<or> \<not> A" |
19 theorem tnd: "A \<or> \<not> A" |
20 proof - |
20 proof - |
21 let ?P = "\<lambda>X. X = False \<or> X = True \<and> A" |
21 let ?P = "\<lambda>X. X = False \<or> X = True \<and> A" |
22 let ?Q = "\<lambda>X. X = False \<and> A \<or> X = True" |
22 let ?Q = "\<lambda>X. X = False \<and> A \<or> X = True" |
92 qed |
92 qed |
93 qed |
93 qed |
94 qed |
94 qed |
95 |
95 |
96 |
96 |
97 subsection {* Proof term of text *} |
97 subsection \<open>Proof term of text\<close> |
98 |
98 |
99 prf tnd |
99 prf tnd |
100 |
100 |
101 |
101 |
102 subsection {* Proof script *} |
102 subsection \<open>Proof script\<close> |
103 |
103 |
104 theorem tnd': "A \<or> \<not> A" |
104 theorem tnd': "A \<or> \<not> A" |
105 apply (subgoal_tac |
105 apply (subgoal_tac |
106 "(((SOME x. x = False \<or> x = True \<and> A) = False) \<or> |
106 "(((SOME x. x = False \<or> x = True \<and> A) = False) \<or> |
107 ((SOME x. x = False \<or> x = True \<and> A) = True) \<and> A) \<and> |
107 ((SOME x. x = False \<or> x = True \<and> A) = True) \<and> A) \<and> |
151 apply (erule conjI) |
151 apply (erule conjI) |
152 apply assumption |
152 apply assumption |
153 done |
153 done |
154 |
154 |
155 |
155 |
156 subsection {* Proof term of script *} |
156 subsection \<open>Proof term of script\<close> |
157 |
157 |
158 prf tnd' |
158 prf tnd' |
159 |
159 |
160 end |
160 end |