Theory AOT_PLM
1
2theory AOT_PLM
3 imports AOT_Axioms
4begin
5
6
7section‹The Deductive System PLM›
8text‹\label{PLM: 9}›
9
10
11unbundle AOT_no_atp
12
13subsection‹Primitive Rule of PLM: Modus Ponens›
14text‹\label{PLM: 9.1}›
15
16AOT_theorem "modus-ponens":
17 assumes ‹φ› and ‹φ → ψ›
18 shows ‹ψ›
19
20 using assms by (simp add: AOT_sem_imp)
21lemmas MP = "modus-ponens"
22
23subsection‹(Modally Strict) Proofs and Derivations›
24text‹\label{PLM: 9.2}›
25
26AOT_theorem "non-con-thm-thm":
27 assumes ‹❙⊢⇩□ φ›
28 shows ‹❙⊢ φ›
29 using assms by simp
30
31AOT_theorem "vdash-properties:1[1]":
32 assumes ‹φ ∈ Λ›
33 shows ‹❙⊢ φ›
34
35 using assms unfolding AOT_model_act_axiom_def by blast
36
37text‹Convenience attribute for instantiating modally-fragile axioms.›
38attribute_setup act_axiom_inst =
39 ‹Scan.succeed (Thm.rule_attribute []
40 (K (fn thm => thm RS @{thm "vdash-properties:1[1]"})))›
41 "Instantiate modally fragile axiom as modally fragile theorem."
42
43AOT_theorem "vdash-properties:1[2]":
44 assumes ‹φ ∈ Λ⇩□›
45 shows ‹❙⊢⇩□ φ›
46
47 using assms unfolding AOT_model_axiom_def by blast
48
49text‹Convenience attribute for instantiating modally-strict axioms.›
50attribute_setup axiom_inst =
51 ‹Scan.succeed (Thm.rule_attribute []
52 (K (fn thm => thm RS @{thm "vdash-properties:1[2]"})))›
53 "Instantiate axiom as theorem."
54
55text‹Convenience methods and theorem sets for applying "cqt:2".›
56method cqt_2_lambda_inst_prover =
57 (fast intro: AOT_instance_of_cqt_2_intro)
58method "cqt:2[lambda]" =
59 (rule "cqt:2[lambda]"[axiom_inst]; cqt_2_lambda_inst_prover)
60lemmas "cqt:2" =
61 "cqt:2[const_var]"[axiom_inst] "cqt:2[lambda]"[axiom_inst]
62 AOT_instance_of_cqt_2_intro
63method "cqt:2" = (safe intro!: "cqt:2")
64
65AOT_theorem "vdash-properties:3":
66 assumes ‹❙⊢⇩□ φ›
67 shows ‹Γ ❙⊢ φ›
68 using assms by blast
69
70AOT_theorem "vdash-properties:5":
71 assumes ‹Γ⇩1 ❙⊢ φ› and ‹Γ⇩2 ❙⊢ φ → ψ›
72 shows ‹Γ⇩1, Γ⇩2 ❙⊢ ψ›
73 using MP assms by blast
74
75AOT_theorem "vdash-properties:6":
76 assumes ‹φ› and ‹φ → ψ›
77 shows ‹ψ›
78 using MP assms by blast
79
80AOT_theorem "vdash-properties:8":
81 assumes ‹Γ ❙⊢ φ› and ‹φ ❙⊢ ψ›
82 shows ‹Γ ❙⊢ ψ›
83 using assms by argo
84
85AOT_theorem "vdash-properties:9":
86 assumes ‹φ›
87 shows ‹ψ → φ›
88 using MP "pl:1"[axiom_inst] assms by blast
89
90AOT_theorem "vdash-properties:10":
91 assumes ‹φ → ψ› and ‹φ›
92 shows ‹ψ›
93 using MP assms by blast
94lemmas "→E" = "vdash-properties:10"
95
96subsection‹Two Fundamental Metarules: GEN and RN›
97text‹\label{PLM: 9.3}›
98
99AOT_theorem "rule-gen":
100 assumes ‹for arbitrary α: φ{α}›
101 shows ‹∀α φ{α}›
102
103 using assms by (metis AOT_var_of_term_inverse AOT_sem_denotes AOT_sem_forall)
104lemmas GEN = "rule-gen"
105
106AOT_theorem "RN[prem]":
107 assumes ‹Γ ❙⊢⇩□ φ›
108 shows ‹□Γ ❙⊢⇩□ □φ›
109 by (meson AOT_sem_box assms image_iff)
110AOT_theorem RN:
111 assumes ‹❙⊢⇩□ φ›
112 shows ‹□φ›
113 using "RN[prem]" assms by blast
114
115subsection‹The Inferential Role of Definitions›
116text‹\label{PLM: 9.4}›
117
118AOT_axiom "df-rules-formulas[1]":
119 assumes ‹φ ≡⇩d⇩f ψ›
120 shows ‹φ → ψ›
121
122 using assms
123 by (auto simp: assms AOT_model_axiomI AOT_model_equiv_def AOT_sem_imp)
124AOT_axiom "df-rules-formulas[2]":
125 assumes ‹φ ≡⇩d⇩f ψ›
126 shows ‹ψ → φ›
127
128 using assms
129 by (auto simp: AOT_model_axiomI AOT_model_equiv_def AOT_sem_imp)
130
131AOT_theorem "df-rules-formulas[3]":
132 assumes ‹φ ≡⇩d⇩f ψ›
133 shows ‹φ → ψ›
134 using "df-rules-formulas[1]"[axiom_inst, OF assms].
135AOT_theorem "df-rules-formulas[4]":
136 assumes ‹φ ≡⇩d⇩f ψ›
137 shows ‹ψ → φ›
138 using "df-rules-formulas[2]"[axiom_inst, OF assms].
139
140
141AOT_axiom "df-rules-terms[1]":
142 assumes ‹τ{α⇩1...α⇩n} =⇩d⇩f σ{α⇩1...α⇩n}›
143 shows ‹(σ{τ⇩1...τ⇩n}↓ → τ{τ⇩1...τ⇩n} = σ{τ⇩1...τ⇩n}) &
144 (¬σ{τ⇩1...τ⇩n}↓ → ¬τ{τ⇩1...τ⇩n}↓)›
145
146 using assms
147 by (simp add: AOT_model_axiomI AOT_sem_conj AOT_sem_imp AOT_sem_eq
148 AOT_sem_not AOT_sem_denotes AOT_model_id_def)
149AOT_axiom "df-rules-terms[2]":
150 assumes ‹τ =⇩d⇩f σ›
151 shows ‹(σ↓ → τ = σ) & (¬σ↓ → ¬τ↓)›
152 by (metis "df-rules-terms[1]" case_unit_Unity assms)
153
154AOT_theorem "df-rules-terms[3]":
155 assumes ‹τ{α⇩1...α⇩n} =⇩d⇩f σ{α⇩1...α⇩n}›
156 shows ‹(σ{τ⇩1...τ⇩n}↓ → τ{τ⇩1...τ⇩n} = σ{τ⇩1...τ⇩n}) &
157 (¬σ{τ⇩1...τ⇩n}↓ → ¬τ{τ⇩1...τ⇩n}↓)›
158 using "df-rules-terms[1]"[axiom_inst, OF assms].
159AOT_theorem "df-rules-terms[4]":
160 assumes ‹τ =⇩d⇩f σ›
161 shows ‹(σ↓ → τ = σ) & (¬σ↓ → ¬τ↓)›
162 using "df-rules-terms[2]"[axiom_inst, OF assms].
163
164subsection‹The Theory of Negations and Conditionals›
165text‹\label{PLM: 9.5}›
166
167AOT_theorem "if-p-then-p": ‹φ → φ›
168 by (meson "pl:1"[axiom_inst] "pl:2"[axiom_inst] MP)
169
170AOT_theorem "deduction-theorem":
171 assumes ‹φ ❙⊢ ψ›
172 shows ‹φ → ψ›
173
174 using assms by (simp add: AOT_sem_imp)
175lemmas CP = "deduction-theorem"
176lemmas "→I" = "deduction-theorem"
177
178AOT_theorem "ded-thm-cor:1":
179 assumes ‹Γ⇩1 ❙⊢ φ → ψ› and ‹Γ⇩2 ❙⊢ ψ → χ›
180 shows ‹Γ⇩1, Γ⇩2 ❙⊢ φ → χ›
181 using "→E" "→I" assms by blast
182AOT_theorem "ded-thm-cor:2":
183 assumes ‹Γ⇩1 ❙⊢ φ → (ψ → χ)› and ‹Γ⇩2 ❙⊢ ψ›
184 shows ‹Γ⇩1, Γ⇩2 ❙⊢ φ → χ›
185 using "→E" "→I" assms by blast
186
187AOT_theorem "ded-thm-cor:3":
188 assumes ‹φ → ψ› and ‹ψ → χ›
189 shows ‹φ → χ›
190 using "→E" "→I" assms by blast
191declare "ded-thm-cor:3"[trans]
192AOT_theorem "ded-thm-cor:4":
193 assumes ‹φ → (ψ → χ)› and ‹ψ›
194 shows ‹φ → χ›
195 using "→E" "→I" assms by blast
196
197lemmas "Hypothetical Syllogism" = "ded-thm-cor:3"
198
199AOT_theorem "useful-tautologies:1": ‹¬¬φ → φ›
200 by (metis "pl:3"[axiom_inst] "→I" "Hypothetical Syllogism")
201AOT_theorem "useful-tautologies:2": ‹φ → ¬¬φ›
202 by (metis "pl:3"[axiom_inst] "→I" "ded-thm-cor:4")
203AOT_theorem "useful-tautologies:3": ‹¬φ → (φ → ψ)›
204 by (meson "ded-thm-cor:4" "pl:3"[axiom_inst] "→I")
205AOT_theorem "useful-tautologies:4": ‹(¬ψ → ¬φ) → (φ → ψ)›
206 by (meson "pl:3"[axiom_inst] "Hypothetical Syllogism" "→I")
207AOT_theorem "useful-tautologies:5": ‹(φ → ψ) → (¬ψ → ¬φ)›
208 by (metis "useful-tautologies:4" "Hypothetical Syllogism" "→I")
209
210AOT_theorem "useful-tautologies:6": ‹(φ → ¬ψ) → (ψ → ¬φ)›
211 by (metis "→I" MP "useful-tautologies:4")
212
213AOT_theorem "useful-tautologies:7": ‹(¬φ → ψ) → (¬ψ → φ)›
214 by (metis "→I" MP "useful-tautologies:3" "useful-tautologies:5")
215
216AOT_theorem "useful-tautologies:8": ‹φ → (¬ψ → ¬(φ → ψ))›
217 by (metis "→I" MP "useful-tautologies:5")
218
219AOT_theorem "useful-tautologies:9": ‹(φ → ψ) → ((¬φ → ψ) → ψ)›
220 by (metis "→I" MP "useful-tautologies:6")
221
222AOT_theorem "useful-tautologies:10": ‹(φ → ¬ψ) → ((φ → ψ) → ¬φ)›
223 by (metis "→I" MP "pl:3"[axiom_inst])
224
225AOT_theorem "dn-i-e:1":
226 assumes ‹φ›
227 shows ‹¬¬φ›
228 using MP "useful-tautologies:2" assms by blast
229lemmas "¬¬I" = "dn-i-e:1"
230AOT_theorem "dn-i-e:2":
231 assumes ‹¬¬φ›
232 shows ‹φ›
233 using MP "useful-tautologies:1" assms by blast
234lemmas "¬¬E" = "dn-i-e:2"
235
236AOT_theorem "modus-tollens:1":
237 assumes ‹φ → ψ› and ‹¬ψ›
238 shows ‹¬φ›
239 using MP "useful-tautologies:5" assms by blast
240AOT_theorem "modus-tollens:2":
241 assumes ‹φ → ¬ψ› and ‹ψ›
242 shows ‹¬φ›
243 using "¬¬I" "modus-tollens:1" assms by blast
244lemmas MT = "modus-tollens:1" "modus-tollens:2"
245
246AOT_theorem "contraposition:1[1]":
247 assumes ‹φ → ψ›
248 shows ‹¬ψ → ¬φ›
249 using "→I" MT(1) assms by blast
250AOT_theorem "contraposition:1[2]":
251 assumes ‹¬ψ → ¬φ›
252 shows ‹φ → ψ›
253 using "→I" "¬¬E" MT(2) assms by blast
254
255AOT_theorem "contraposition:2":
256 assumes ‹φ → ¬ψ›
257 shows ‹ψ → ¬φ›
258 using "→I" MT(2) assms by blast
259
260AOT_theorem "reductio-aa:1":
261 assumes ‹¬φ ❙⊢ ¬ψ› and ‹¬φ ❙⊢ ψ›
262 shows ‹φ›
263 using "→I" "¬¬E" MT(2) assms by blast
264AOT_theorem "reductio-aa:2":
265 assumes ‹φ ❙⊢ ¬ψ› and ‹φ ❙⊢ ψ›
266 shows ‹¬φ›
267 using "reductio-aa:1" assms by blast
268lemmas "RAA" = "reductio-aa:1" "reductio-aa:2"
269
270AOT_theorem "exc-mid": ‹φ ∨ ¬φ›
271 using "df-rules-formulas[4]" "if-p-then-p" MP
272 "conventions:2" by blast
273
274AOT_theorem "non-contradiction": ‹¬(φ & ¬φ)›
275 using "df-rules-formulas[3]" MT(2) "useful-tautologies:2"
276 "conventions:1" by blast
277
278AOT_theorem "con-dis-taut:1": ‹(φ & ψ) → φ›
279 by (meson "→I" "df-rules-formulas[3]" MP RAA(1) "conventions:1")
280AOT_theorem "con-dis-taut:2": ‹(φ & ψ) → ψ›
281 by (metis "→I" "df-rules-formulas[3]" MT(2) RAA(2)
282 "¬¬E" "conventions:1")
283lemmas "Conjunction Simplification" = "con-dis-taut:1" "con-dis-taut:2"
284
285AOT_theorem "con-dis-taut:3": ‹φ → (φ ∨ ψ)›
286 by (meson "contraposition:1[2]" "df-rules-formulas[4]"
287 MP "→I" "conventions:2")
288AOT_theorem "con-dis-taut:4": ‹ψ → (φ ∨ ψ)›
289 using "Hypothetical Syllogism" "df-rules-formulas[4]"
290 "pl:1"[axiom_inst] "conventions:2" by blast
291lemmas "Disjunction Addition" = "con-dis-taut:3" "con-dis-taut:4"
292
293AOT_theorem "con-dis-taut:5": ‹φ → (ψ → (φ & ψ))›
294 by (metis "contraposition:2" "Hypothetical Syllogism" "→I"
295 "df-rules-formulas[4]" "conventions:1")
296lemmas Adjunction = "con-dis-taut:5"
297
298AOT_theorem "con-dis-taut:6": ‹(φ & φ) ≡ φ›
299 by (metis Adjunction "→I" "df-rules-formulas[4]" MP
300 "Conjunction Simplification"(1) "conventions:3")
301lemmas "Idempotence of &" = "con-dis-taut:6"
302
303AOT_theorem "con-dis-taut:7": ‹(φ ∨ φ) ≡ φ›
304proof -
305 {
306 AOT_assume ‹φ ∨ φ›
307 AOT_hence ‹¬φ → φ›
308 using "conventions:2"[THEN "df-rules-formulas[3]"] MP by blast
309 AOT_hence ‹φ› using "if-p-then-p" RAA(1) MP by blast
310 }
311 moreover {
312 AOT_assume ‹φ›
313 AOT_hence ‹φ ∨ φ› using "Disjunction Addition"(1) MP by blast
314 }
315 ultimately AOT_show ‹(φ ∨ φ) ≡ φ›
316 using "conventions:3"[THEN "df-rules-formulas[4]"] MP
317 by (metis Adjunction "→I")
318qed
319lemmas "Idempotence of ∨" = "con-dis-taut:7"
320
321
322AOT_theorem "con-dis-i-e:1":
323 assumes ‹φ› and ‹ψ›
324 shows ‹φ & ψ›
325 using Adjunction MP assms by blast
326lemmas "&I" = "con-dis-i-e:1"
327
328AOT_theorem "con-dis-i-e:2:a":
329 assumes ‹φ & ψ›
330 shows ‹φ›
331 using "Conjunction Simplification"(1) MP assms by blast
332AOT_theorem "con-dis-i-e:2:b":
333 assumes ‹φ & ψ›
334 shows ‹ψ›
335 using "Conjunction Simplification"(2) MP assms by blast
336lemmas "&E" = "con-dis-i-e:2:a" "con-dis-i-e:2:b"
337
338AOT_theorem "con-dis-i-e:3:a":
339 assumes ‹φ›
340 shows ‹φ ∨ ψ›
341 using "Disjunction Addition"(1) MP assms by blast
342AOT_theorem "con-dis-i-e:3:b":
343 assumes ‹ψ›
344 shows ‹φ ∨ ψ›
345 using "Disjunction Addition"(2) MP assms by blast
346AOT_theorem "con-dis-i-e:3:c":
347 assumes ‹φ ∨ ψ› and ‹φ → χ› and ‹ψ → Θ›
348 shows ‹χ ∨ Θ›
349 by (metis "con-dis-i-e:3:a" "Disjunction Addition"(2)
350 "df-rules-formulas[3]" MT(1) RAA(1)
351 "conventions:2" assms)
352lemmas "∨I" = "con-dis-i-e:3:a" "con-dis-i-e:3:b" "con-dis-i-e:3:c"
353
354AOT_theorem "con-dis-i-e:4:a":
355 assumes ‹φ ∨ ψ› and ‹φ → χ› and ‹ψ → χ›
356 shows ‹χ›
357 by (metis MP RAA(2) "df-rules-formulas[3]" "conventions:2" assms)
358AOT_theorem "con-dis-i-e:4:b":
359 assumes ‹φ ∨ ψ› and ‹¬φ›
360 shows ‹ψ›
361 using "con-dis-i-e:4:a" RAA(1) "→I" assms by blast
362AOT_theorem "con-dis-i-e:4:c":
363 assumes ‹φ ∨ ψ› and ‹¬ψ›
364 shows ‹φ›
365 using "con-dis-i-e:4:a" RAA(1) "→I" assms by blast
366lemmas "∨E" = "con-dis-i-e:4:a" "con-dis-i-e:4:b" "con-dis-i-e:4:c"
367
368AOT_theorem "raa-cor:1":
369 assumes ‹¬φ ❙⊢ ψ & ¬ψ›
370 shows ‹φ›
371 using "&E" "∨E"(3) "∨I"(2) RAA(2) assms by blast
372AOT_theorem "raa-cor:2":
373 assumes ‹φ ❙⊢ ψ & ¬ψ›
374 shows ‹¬φ›
375 using "raa-cor:1" assms by blast
376AOT_theorem "raa-cor:3":
377 assumes ‹φ› and ‹¬ψ ❙⊢ ¬φ›
378 shows ‹ψ›
379 using RAA assms by blast
380AOT_theorem "raa-cor:4":
381 assumes ‹¬φ› and ‹¬ψ ❙⊢ φ›
382 shows ‹ψ›
383 using RAA assms by blast
384AOT_theorem "raa-cor:5":
385 assumes ‹φ› and ‹ψ ❙⊢ ¬φ›
386 shows ‹¬ψ›
387 using RAA assms by blast
388AOT_theorem "raa-cor:6":
389 assumes ‹¬φ› and ‹ψ ❙⊢ φ›
390 shows ‹¬ψ›
391 using RAA assms by blast
392
393AOT_theorem "oth-class-taut:1:a": ‹(φ → ψ) ≡ ¬(φ & ¬ψ)›
394 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"])
395 (metis "&E" "&I" "raa-cor:3" "→I" MP)
396AOT_theorem "oth-class-taut:1:b": ‹¬(φ → ψ) ≡ (φ & ¬ψ)›
397 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"])
398 (metis "&E" "&I" "raa-cor:3" "→I" MP)
399AOT_theorem "oth-class-taut:1:c": ‹(φ → ψ) ≡ (¬φ ∨ ψ)›
400 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"])
401 (metis "&I" "∨I"(1, 2) "∨E"(3) "→I" MP "raa-cor:1")
402
403AOT_theorem "oth-class-taut:2:a": ‹(φ & ψ) ≡ (ψ & φ)›
404 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"])
405 (meson "&I" "&E" "→I")
406lemmas "Commutativity of &" = "oth-class-taut:2:a"
407AOT_theorem "oth-class-taut:2:b": ‹(φ & (ψ & χ)) ≡ ((φ & ψ) & χ)›
408 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"])
409 (metis "&I" "&E" "→I")
410lemmas "Associativity of &" = "oth-class-taut:2:b"
411AOT_theorem "oth-class-taut:2:c": ‹(φ ∨ ψ) ≡ (ψ ∨ φ)›
412 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"])
413 (metis "&I" "∨I"(1, 2) "∨E"(1) "→I")
414lemmas "Commutativity of ∨" = "oth-class-taut:2:c"
415AOT_theorem "oth-class-taut:2:d": ‹(φ ∨ (ψ ∨ χ)) ≡ ((φ ∨ ψ) ∨ χ)›
416 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"])
417 (metis "&I" "∨I"(1, 2) "∨E"(1) "→I")
418lemmas "Associativity of ∨" = "oth-class-taut:2:d"
419AOT_theorem "oth-class-taut:2:e": ‹(φ ≡ ψ) ≡ (ψ ≡ φ)›
420 by (rule "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"]; rule "&I";
421 metis "&I" "df-rules-formulas[4]" "conventions:3" "&E"
422 "Hypothetical Syllogism" "→I" "df-rules-formulas[3]")
423lemmas "Commutativity of ≡" = "oth-class-taut:2:e"
424AOT_theorem "oth-class-taut:2:f": ‹(φ ≡ (ψ ≡ χ)) ≡ ((φ ≡ ψ) ≡ χ)›
425 using "conventions:3"[THEN "df-rules-formulas[4]"]
426 "conventions:3"[THEN "df-rules-formulas[3]"]
427 "→I" "→E" "&E" "&I"
428 by metis
429lemmas "Associativity of ≡" = "oth-class-taut:2:f"
430
431AOT_theorem "oth-class-taut:3:a": ‹φ ≡ φ›
432 using "&I" "vdash-properties:6" "if-p-then-p"
433 "df-rules-formulas[4]" "conventions:3" by blast
434AOT_theorem "oth-class-taut:3:b": ‹φ ≡ ¬¬φ›
435 using "&I" "useful-tautologies:1" "useful-tautologies:2" "→E"
436 "df-rules-formulas[4]" "conventions:3" by blast
437AOT_theorem "oth-class-taut:3:c": ‹¬(φ ≡ ¬φ)›
438 by (metis "&E" "→E" RAA "df-rules-formulas[3]" "conventions:3")
439
440AOT_theorem "oth-class-taut:4:a": ‹(φ → ψ) → ((ψ → χ) → (φ → χ))›
441 by (metis "→E" "→I")
442AOT_theorem "oth-class-taut:4:b": ‹(φ ≡ ψ) ≡ (¬φ ≡ ¬ψ)›
443 using "conventions:3"[THEN "df-rules-formulas[4]"]
444 "conventions:3"[THEN "df-rules-formulas[3]"]
445 "→I" "→E" "&E" "&I" RAA by metis
446AOT_theorem "oth-class-taut:4:c": ‹(φ ≡ ψ) → ((φ → χ) ≡ (ψ → χ))›
447 using "conventions:3"[THEN "df-rules-formulas[4]"]
448 "conventions:3"[THEN "df-rules-formulas[3]"]
449 "→I" "→E" "&E" "&I" by metis
450AOT_theorem "oth-class-taut:4:d": ‹(φ ≡ ψ) → ((χ → φ) ≡ (χ → ψ))›
451 using "conventions:3"[THEN "df-rules-formulas[4]"]
452 "conventions:3"[THEN "df-rules-formulas[3]"]
453 "→I" "→E" "&E" "&I" by metis
454AOT_theorem "oth-class-taut:4:e": ‹(φ ≡ ψ) → ((φ & χ) ≡ (ψ & χ))›
455 using "conventions:3"[THEN "df-rules-formulas[4]"]
456 "conventions:3"[THEN "df-rules-formulas[3]"]
457 "→I" "→E" "&E" "&I" by metis
458AOT_theorem "oth-class-taut:4:f": ‹(φ ≡ ψ) → ((χ & φ) ≡ (χ & ψ))›
459 using "conventions:3"[THEN "df-rules-formulas[4]"]
460 "conventions:3"[THEN "df-rules-formulas[3]"]
461 "→I" "→E" "&E" "&I" by metis
462AOT_theorem "oth-class-taut:4:g": ‹(φ ≡ ψ) ≡ ((φ & ψ) ∨ (¬φ & ¬ψ))›
463proof(safe intro!: "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"]
464 "&I" "→I"
465 dest!: "conventions:3"[THEN "df-rules-formulas[3]", THEN "→E"])
466 AOT_show ‹φ & ψ ∨ (¬φ & ¬ψ)› if ‹(φ → ψ) & (ψ → φ)›
467 using "&E" "∨I" "→E" "&I" "raa-cor:1" "→I" "∨E" that by metis
468next
469 AOT_show ‹ψ› if ‹φ & ψ ∨ (¬φ & ¬ψ)› and ‹φ›
470 using that "∨E" "&E" "raa-cor:3" by blast
471next
472 AOT_show ‹φ› if ‹φ & ψ ∨ (¬φ & ¬ψ)› and ‹ψ›
473 using that "∨E" "&E" "raa-cor:3" by blast
474qed
475AOT_theorem "oth-class-taut:4:h": ‹¬(φ ≡ ψ) ≡ ((φ & ¬ψ) ∨ (¬φ & ψ))›
476proof (safe intro!: "conventions:3"[THEN "df-rules-formulas[4]", THEN "→E"]
477 "&I" "→I")
478 AOT_show ‹φ & ¬ψ ∨ (¬φ & ψ)› if ‹¬(φ ≡ ψ)›
479 by (metis that "&I" "∨I"(1, 2) "→I" MT(1) "df-rules-formulas[4]"
480 "raa-cor:3" "conventions:3")
481next
482 AOT_show ‹¬(φ ≡ ψ)› if ‹φ & ¬ψ ∨ (¬φ & ψ)›
483 by (metis that "&E" "∨E"(2) "→E" "df-rules-formulas[3]"
484 "raa-cor:3" "conventions:3")
485qed
486AOT_theorem "oth-class-taut:5:a": ‹(φ & ψ) ≡ ¬(¬φ ∨ ¬ψ)›
487 using "conventions:3"[THEN "df-rules-formulas[4]"]
488 "→I" "→E" "&E" "&I" "∨I" "∨E" RAA by metis
489AOT_theorem "oth-class-taut:5:b": ‹(φ ∨ ψ) ≡ ¬(¬φ & ¬ψ)›
490 using "conventions:3"[THEN "df-rules-formulas[4]"]
491 "→I" "→E" "&E" "&I" "∨I" "∨E" RAA by metis
492AOT_theorem "oth-class-taut:5:c": ‹¬(φ & ψ) ≡ (¬φ ∨ ¬ψ)›
493 using "conventions:3"[THEN "df-rules-formulas[4]"]
494 "→I" "→E" "&E" "&I" "∨I" "∨E" RAA by metis
495AOT_theorem "oth-class-taut:5:d": ‹¬(φ ∨ ψ) ≡ (¬φ & ¬ψ)›
496 using "conventions:3"[THEN "df-rules-formulas[4]"]
497 "→I" "→E" "&E" "&I" "∨I" "∨E" RAA by metis
498
499lemmas DeMorgan = "oth-class-taut:5:c" "oth-class-taut:5:d"
500
501AOT_theorem "oth-class-taut:6:a":
502 ‹(φ & (ψ ∨ χ)) ≡ ((φ & ψ) ∨ (φ & χ))›
503 using "conventions:3"[THEN "df-rules-formulas[4]"]
504 "→I" "→E" "&E" "&I" "∨I" "∨E" RAA by metis
505AOT_theorem "oth-class-taut:6:b":
506 ‹(φ ∨ (ψ & χ)) ≡ ((φ ∨ ψ) & (φ ∨ χ))›
507 using "conventions:3"[THEN "df-rules-formulas[4]"]
508 "→I" "→E" "&E" "&I" "∨I" "∨E" RAA by metis
509
510AOT_theorem "oth-class-taut:7:a": ‹((φ & ψ) → χ) → (φ → (ψ → χ))›
511 by (metis "&I" "→E" "→I")
512lemmas Exportation = "oth-class-taut:7:a"
513AOT_theorem "oth-class-taut:7:b": ‹(φ → (ψ →χ)) → ((φ & ψ) → χ)›
514 by (metis "&E" "→E" "→I")
515lemmas Importation = "oth-class-taut:7:b"
516
517AOT_theorem "oth-class-taut:8:a":
518 ‹(φ → (ψ → χ)) ≡ (ψ → (φ → χ))›
519 using "conventions:3"[THEN "df-rules-formulas[4]"] "→I" "→E" "&E" "&I"
520 by metis
521lemmas Permutation = "oth-class-taut:8:a"
522AOT_theorem "oth-class-taut:8:b":
523 ‹(φ → ψ) → ((φ → χ) → (φ → (ψ & χ)))›
524 by (metis "&I" "→E" "→I")
525lemmas Composition = "oth-class-taut:8:b"
526AOT_theorem "oth-class-taut:8:c":
527 ‹(φ → χ) → ((ψ → χ) → ((φ ∨ ψ) → χ))›
528 by (metis "∨E"(2) "→E" "→I" RAA(1))
529AOT_theorem "oth-class-taut:8:d":
530 ‹((φ → ψ) & (χ → Θ)) → ((φ & χ) → (ψ & Θ))›
531 by (metis "&E" "&I" "→E" "→I")
532lemmas "Double Composition" = "oth-class-taut:8:d"
533AOT_theorem "oth-class-taut:8:e":
534 ‹((φ & ψ) ≡ (φ & χ)) ≡ (φ → (ψ ≡ χ))›
535 by (metis "conventions:3"[THEN "df-rules-formulas[4]"]
536 "conventions:3"[THEN "df-rules-formulas[3]"]
537 "→I" "→E" "&E" "&I")
538AOT_theorem "oth-class-taut:8:f":
539 ‹((φ & ψ) ≡ (χ & ψ)) ≡ (ψ → (φ ≡ χ))›
540 by (metis "conventions:3"[THEN "df-rules-formulas[4]"]
541 "conventions:3"[THEN "df-rules-formulas[3]"]
542 "→I" "→E" "&E" "&I")
543AOT_theorem "oth-class-taut:8:g":
544 ‹(ψ ≡ χ) → ((φ ∨ ψ) ≡ (φ ∨ χ))›
545 by (metis "conventions:3"[THEN "df-rules-formulas[4]"]
546 "conventions:3"[THEN "df-rules-formulas[3]"]
547 "→I" "→E" "&E" "&I" "∨I" "∨E"(1))
548AOT_theorem "oth-class-taut:8:h":
549 ‹(ψ ≡ χ) → ((ψ ∨ φ) ≡ (χ ∨ φ))›
550 by (metis "conventions:3"[THEN "df-rules-formulas[4]"]
551 "conventions:3"[THEN "df-rules-formulas[3]"]
552 "→I" "→E" "&E" "&I" "∨I" "∨E"(1))
553AOT_theorem "oth-class-taut:8:i":
554 ‹(φ ≡ (ψ & χ)) → (ψ → (φ ≡ χ))›
555 by (metis "conventions:3"[THEN "df-rules-formulas[4]"]
556 "conventions:3"[THEN "df-rules-formulas[3]"]
557 "→I" "→E" "&E" "&I")
558
559AOT_theorem "intro-elim:1":
560 assumes ‹φ ∨ ψ› and ‹φ ≡ χ› and ‹ψ ≡ Θ›
561 shows ‹χ ∨ Θ›
562 by (metis assms "∨I"(1, 2) "∨E"(1) "→I" "→E" "&E"(1)
563 "conventions:3"[THEN "df-rules-formulas[3]"])
564
565AOT_theorem "intro-elim:2":
566 assumes ‹φ → ψ› and ‹ψ → φ›
567 shows ‹φ ≡ ψ›
568 by (meson "&I" "conventions:3" "df-rules-formulas[4]" MP assms)
569lemmas "≡I" = "intro-elim:2"
570
571AOT_theorem "intro-elim:3:a":
572 assumes ‹φ ≡ ψ› and ‹φ›
573 shows ‹ψ›
574 by (metis "∨I"(1) "→I" "∨E"(1) "intro-elim:1" assms)
575AOT_theorem "intro-elim:3:b":
576 assumes ‹φ ≡ ψ› and ‹ψ›
577 shows ‹φ›
578 using "intro-elim:3:a" "Commutativity of ≡" assms by blast
579AOT_theorem "intro-elim:3:c":
580 assumes ‹φ ≡ ψ› and ‹¬φ›
581 shows ‹¬ψ›
582 using "intro-elim:3:b" "raa-cor:3" assms by blast
583AOT_theorem "intro-elim:3:d":
584 assumes ‹φ ≡ ψ› and ‹¬ψ›
585 shows ‹¬φ›
586 using "intro-elim:3:a" "raa-cor:3" assms by blast
587AOT_theorem "intro-elim:3:e":
588 assumes ‹φ ≡ ψ› and ‹ψ ≡ χ›
589 shows ‹φ ≡ χ›
590 by (metis "≡I" "→I" "intro-elim:3:a" "intro-elim:3:b" assms)
591declare "intro-elim:3:e"[trans]
592AOT_theorem "intro-elim:3:f":
593 assumes ‹φ ≡ ψ› and ‹φ ≡ χ›
594 shows ‹χ ≡ ψ›
595 by (metis "≡I" "→I" "intro-elim:3:a" "intro-elim:3:b" assms)
596lemmas "≡E" = "intro-elim:3:a" "intro-elim:3:b" "intro-elim:3:c"
597 "intro-elim:3:d" "intro-elim:3:e" "intro-elim:3:f"
598
599declare "Commutativity of ≡"[THEN "≡E"(1), sym]
600
601AOT_theorem "rule-eq-df:1":
602 assumes ‹φ ≡⇩d⇩f ψ›
603 shows ‹φ ≡ ψ›
604 by (simp add: "≡I" "df-rules-formulas[3]" "df-rules-formulas[4]" assms)
605lemmas "≡Df" = "rule-eq-df:1"
606AOT_theorem "rule-eq-df:2":
607 assumes ‹φ ≡⇩d⇩f ψ› and ‹φ›
608 shows ‹ψ›
609 using "≡Df" "≡E"(1) assms by blast
610lemmas "≡⇩d⇩fE" = "rule-eq-df:2"
611AOT_theorem "rule-eq-df:3":
612 assumes ‹φ ≡⇩d⇩f ψ› and ‹ψ›
613 shows ‹φ›
614 using "≡Df" "≡E"(2) assms by blast
615lemmas "≡⇩d⇩fI" = "rule-eq-df:3"
616
617AOT_theorem "df-simplify:1":
618 assumes ‹φ ≡ (ψ & χ)› and ‹ψ›
619 shows ‹φ ≡ χ›
620 by (metis "&E"(2) "&I" "≡E"(1, 2) "≡I" "→I" assms)
621
622AOT_theorem "df-simplify:2":
623 assumes ‹φ ≡ (ψ & χ)› and ‹χ›
624 shows ‹φ ≡ ψ›
625 by (metis "&E"(1) "&I" "≡E"(1, 2) "≡I" "→I" assms)
626lemmas "≡S" = "df-simplify:1" "df-simplify:2"
627
628subsection‹The Theory of Quantification›
629text‹\label{PLM: 9.6}›
630
631AOT_theorem "rule-ui:1":
632 assumes ‹∀α φ{α}› and ‹τ↓›
633 shows ‹φ{τ}›
634 using "→E" "cqt:1"[axiom_inst] assms by blast
635AOT_theorem "rule-ui:2[const_var]":
636 assumes ‹∀α φ{α}›
637 shows ‹φ{β}›
638 by (simp add: "rule-ui:1" "cqt:2[const_var]"[axiom_inst] assms)
639AOT_theorem "rule-ui:2[lambda]":
640 assumes ‹∀F φ{F}› and ‹INSTANCE_OF_CQT_2(ψ)›
641 shows ‹φ{[λν⇩1...ν⇩n ψ{ν⇩1...ν⇩n}]}›
642 by (simp add: "rule-ui:1" "cqt:2[lambda]"[axiom_inst] assms)
643AOT_theorem "rule-ui:3":
644 assumes ‹∀α φ{α}›
645 shows ‹φ{α}›
646 by (simp add: "rule-ui:2[const_var]" assms)
647lemmas "∀E" = "rule-ui:1" "rule-ui:2[const_var]"
648 "rule-ui:2[lambda]" "rule-ui:3"
649
650AOT_theorem "cqt-orig:1[const_var]": ‹∀α φ{α} → φ{β}›
651 by (simp add: "∀E"(2) "→I")
652AOT_theorem "cqt-orig:1[lambda]":
653 assumes ‹INSTANCE_OF_CQT_2(ψ)›
654 shows ‹∀F φ{F} → φ{[λν⇩1...ν⇩n ψ{ν⇩1...ν⇩n}]}›
655 by (simp add: "∀E"(3) "→I" assms)
656AOT_theorem "cqt-orig:2": ‹∀α (φ → ψ{α}) → (φ → ∀α ψ{α})›
657 by (metis "→I" GEN "vdash-properties:6" "∀E"(4))
658AOT_theorem "cqt-orig:3": ‹∀α φ{α} → φ{α}›
659 using "cqt-orig:1[const_var]".
660
661AOT_theorem universal:
662 assumes ‹for arbitrary β: φ{β}›
663 shows ‹∀α φ{α}›
664 using GEN assms .
665lemmas "∀I" = universal
666
667
668ML‹
669fun get_instantiated_allI ctxt varname thm = let
670val trm = Thm.concl_of thm
671val trm =
672 case trm of (@{const Trueprop} $ (@{const AOT_model_valid_in} $ _ $ x)) => x
673 | _ => raise Term.TERM ("Expected simple theorem.", [trm])
674fun extractVars (Const (\<^const_name>‹AOT_term_of_var›, _) $ Var v) =
675 (if fst (fst v) = fst varname then [Var v] else [])
676 | extractVars (t1 $ t2) = extractVars t1 @ extractVars t2
677 | extractVars (Abs (_, _, t)) = extractVars t
678 | extractVars _ = []
679val vars = extractVars trm
680val vars = fold Term.add_vars vars []
681val var = hd vars
682val trmty =
683 case (snd var) of (Type (\<^type_name>‹AOT_var›, [t])) => (t)
684 | _ => raise Term.TYPE ("Expected variable type.", [snd var], [Var var])
685val trm = Abs (Term.string_of_vname (fst var), trmty, Term.abstract_over (
686 Const (\<^const_name>‹AOT_term_of_var›, Type ("fun", [snd var, trmty]))
687 $ Var var, trm))
688val trm = Thm.cterm_of (Context.proof_of ctxt) trm
689val ty = hd (Term.add_tvars (Thm.prop_of @{thm "∀I"}) [])
690val typ = Thm.ctyp_of (Context.proof_of ctxt) trmty
691val allthm = Drule.instantiate_normalize (TVars.make [(ty, typ)], Vars.empty) @{thm "∀I"}
692val phi = hd (Term.add_vars (Thm.prop_of allthm) [])
693val allthm = Drule.instantiate_normalize (TVars.empty, Vars.make [(phi,trm)]) allthm
694in
695allthm
696end
697›
698
699attribute_setup "∀I" =
700 ‹Scan.lift (Scan.repeat1 Args.var) >> (fn args => Thm.rule_attribute []
701 (fn ctxt => fn thm => fold (fn arg => fn thm =>
702 thm RS get_instantiated_allI ctxt arg thm) args thm))›
703 "Quantify over a variable in a theorem using GEN."
704
705attribute_setup "unvarify" =
706 ‹Scan.lift (Scan.repeat1 Args.var) >> (fn args => Thm.rule_attribute []
707 (fn ctxt => fn thm =>
708 let
709 fun get_inst_allI arg thm = thm RS get_instantiated_allI ctxt arg thm
710 val thm = fold get_inst_allI args thm
711 val thm = fold (K (fn thm => thm RS @{thm "∀E"(1)})) args thm
712 in
713 thm
714 end))›
715 "Generalize a statement about variables to a statement about denoting terms."
716
717
718
719AOT_theorem "cqt-basic:1": ‹∀α∀β φ{α,β} ≡ ∀β∀α φ{α,β}›
720 by (metis "≡I" "∀E"(2) "∀I" "→I")
721
722AOT_theorem "cqt-basic:2":
723 ‹∀α(φ{α} ≡ ψ{α}) ≡ (∀α(φ{α} → ψ{α}) & ∀α(ψ{α} → φ{α}))›
724proof (rule "≡I"; rule "→I")
725 AOT_assume ‹∀α(φ{α} ≡ ψ{α})›
726 AOT_hence ‹φ{α} ≡ ψ{α}› for α using "∀E"(2) by blast
727 AOT_hence ‹φ{α} → ψ{α}› and ‹ψ{α} → φ{α}› for α
728 using "≡E"(1,2) "→I" by blast+
729 AOT_thus ‹∀α(φ{α} → ψ{α}) & ∀α(ψ{α} → φ{α})›
730 by (auto intro: "&I" "∀I")
731next
732 AOT_assume ‹∀α(φ{α} → ψ{α}) & ∀α(ψ{α} → φ{α})›
733 AOT_hence ‹φ{α} → ψ{α}› and ‹ψ{α} → φ{α}› for α
734 using "∀E"(2) "&E" by blast+
735 AOT_hence ‹φ{α} ≡ ψ{α}› for α
736 using "≡I" by blast
737 AOT_thus ‹∀α(φ{α} ≡ ψ{α})› by (auto intro: "∀I")
738qed
739
740AOT_theorem "cqt-basic:3": ‹∀α(φ{α} ≡ ψ{α}) → (∀α φ{α} ≡ ∀α ψ{α})›
741proof(rule "→I")
742 AOT_assume ‹∀α(φ{α} ≡ ψ{α})›
743 AOT_hence 1: ‹φ{α} ≡ ψ{α}› for α using "∀E"(2) by blast
744 {
745 AOT_assume ‹∀α φ{α}›
746 AOT_hence ‹∀α ψ{α}› using 1 "∀I" "∀E"(4) "≡E" by metis
747 }
748 moreover {
749 AOT_assume ‹∀α ψ{α}›
750 AOT_hence ‹∀α φ{α}› using 1 "∀I" "∀E"(4) "≡E" by metis
751 }
752 ultimately AOT_show ‹∀α φ{α} ≡ ∀α ψ{α}›
753 using "≡I" "→I" by auto
754qed
755
756AOT_theorem "cqt-basic:4": ‹∀α(φ{α} & ψ{α}) → (∀α φ{α} & ∀α ψ{α})›
757proof(rule "→I")
758 AOT_assume 0: ‹∀α(φ{α} & ψ{α})›
759 AOT_have ‹φ{α}› and ‹ψ{α}› for α using "∀E"(2) 0 "&E" by blast+
760 AOT_thus ‹∀α φ{α} & ∀α ψ{α}›
761 by (auto intro: "∀I" "&I")
762qed
763
764AOT_theorem "cqt-basic:5": ‹(∀α⇩1...∀α⇩n(φ{α⇩1...α⇩n})) → φ{α⇩1...α⇩n}›
765 using "cqt-orig:3" by blast
766
767AOT_theorem "cqt-basic:6": ‹∀α∀α φ{α} ≡ ∀α φ{α}›
768 by (meson "≡I" "→I" GEN "cqt-orig:1[const_var]")
769
770AOT_theorem "cqt-basic:7": ‹(φ → ∀α ψ{α}) ≡ ∀α(φ → ψ{α})›
771 by (metis "→I" "vdash-properties:6" "rule-ui:3" "≡I" GEN)
772
773AOT_theorem "cqt-basic:8": ‹(∀α φ{α} ∨ ∀α ψ{α}) → ∀α (φ{α} ∨ ψ{α})›
774 by (simp add: "∨I"(3) "→I" GEN "cqt-orig:1[const_var]")
775
776AOT_theorem "cqt-basic:9":
777 ‹(∀α (φ{α} → ψ{α}) & ∀α (ψ{α} → χ{α})) → ∀α(φ{α} → χ{α})›
778proof -
779 {
780 AOT_assume ‹∀α (φ{α} → ψ{α})›
781 moreover AOT_assume ‹∀α (ψ{α} → χ{α})›
782 ultimately AOT_have ‹φ{α} → ψ{α}› and ‹ψ{α} → χ{α}› for α
783 using "∀E" by blast+
784 AOT_hence ‹φ{α} → χ{α}› for α by (metis "→E" "→I")
785 AOT_hence ‹∀α(φ{α} → χ{α})› using "∀I" by fast
786 }
787 thus ?thesis using "&I" "→I" "&E" by meson
788qed
789
790AOT_theorem "cqt-basic:10":
791 ‹(∀α(φ{α} ≡ ψ{α}) & ∀α(ψ{α} ≡ χ{α})) → ∀α (φ{α} ≡ χ{α})›
792proof(rule "→I"; rule "∀I")
793 fix β
794 AOT_assume ‹∀α(φ{α} ≡ ψ{α}) & ∀α(ψ{α} ≡ χ{α})›
795 AOT_hence ‹φ{β} ≡ ψ{β}› and ‹ψ{β} ≡ χ{β}› using "&E" "∀E" by blast+
796 AOT_thus ‹φ{β} ≡ χ{β}› using "≡I" "≡E" by blast
797qed
798
799AOT_theorem "cqt-basic:11": ‹∀α(φ{α} ≡ ψ{α}) ≡ ∀α (ψ{α} ≡ φ{α})›
800proof (rule "≡I"; rule "→I")
801 AOT_assume 0: ‹∀α(φ{α} ≡ ψ{α})›
802 {
803 fix α
804 AOT_have ‹φ{α} ≡ ψ{α}› using 0 "∀E" by blast
805 AOT_hence ‹ψ{α} ≡ φ{α}› using "≡I" "≡E" "→I" "→E" by metis
806 }
807 AOT_thus ‹∀α(ψ{α} ≡ φ{α})› using "∀I" by fast
808next
809 AOT_assume 0: ‹∀α(ψ{α} ≡ φ{α})›
810 {
811 fix α
812 AOT_have ‹ψ{α} ≡ φ{α}› using 0 "∀E" by blast
813 AOT_hence ‹φ{α} ≡ ψ{α}› using "≡I" "≡E" "→I" "→E" by metis
814 }
815 AOT_thus ‹∀α(φ{α} ≡ ψ{α})› using "∀I" by fast
816qed
817
818AOT_theorem "cqt-basic:12": ‹∀α φ{α} → ∀α (ψ{α} → φ{α})›
819 by (simp add: "∀E"(2) "→I" GEN)
820
821AOT_theorem "cqt-basic:13": ‹∀α φ{α} ≡ ∀β φ{β}›
822 using "≡I" "→I" by blast
823
824AOT_theorem "cqt-basic:14":
825 ‹(∀α⇩1...∀α⇩n (φ{α⇩1...α⇩n} → ψ{α⇩1...α⇩n})) →
826 ((∀α⇩1...∀α⇩n φ{α⇩1...α⇩n}) → (∀α⇩1...∀α⇩n ψ{α⇩1...α⇩n}))›
827 using "cqt:3"[axiom_inst] by auto
828
829AOT_theorem "cqt-basic:15":
830 ‹(∀α⇩1...∀α⇩n (φ → ψ{α⇩1...α⇩n})) → (φ → (∀α⇩1...∀α⇩n ψ{α⇩1...α⇩n}))›
831 using "cqt-orig:2" by auto
832
833AOT_theorem "universal-cor":
834 assumes ‹for arbitrary β: φ{β}›
835 shows ‹∀α φ{α}›
836 using GEN assms .
837
838AOT_theorem "existential:1":
839 assumes ‹φ{τ}› and ‹τ↓›
840 shows ‹∃α φ{α}›
841proof(rule "raa-cor:1")
842 AOT_assume ‹¬∃α φ{α}›
843 AOT_hence ‹∀α ¬φ{α}›
844 using "≡⇩d⇩fI" "conventions:4" RAA "&I" by blast
845 AOT_hence ‹¬φ{τ}› using assms(2) "∀E"(1) "→E" by blast
846 AOT_thus ‹φ{τ} & ¬φ{τ}› using assms(1) "&I" by blast
847qed
848
849AOT_theorem "existential:2[const_var]":
850 assumes ‹φ{β}›
851 shows ‹∃α φ{α}›
852 using "existential:1" "cqt:2[const_var]"[axiom_inst] assms by blast
853
854AOT_theorem "existential:2[lambda]":
855 assumes ‹φ{[λν⇩1...ν⇩n ψ{ν⇩1...ν⇩n}]}› and ‹INSTANCE_OF_CQT_2(ψ)›
856 shows ‹∃α φ{α}›
857 using "existential:1" "cqt:2[lambda]"[axiom_inst] assms by blast
858lemmas "∃I" = "existential:1" "existential:2[const_var]"
859 "existential:2[lambda]"
860
861AOT_theorem "instantiation":
862 assumes ‹for arbitrary β: φ{β} ❙⊢ ψ› and ‹∃α φ{α}›
863 shows ‹ψ›
864 by (metis (no_types, lifting) "≡⇩d⇩fE" GEN "raa-cor:3" "conventions:4" assms)
865lemmas "∃E" = "instantiation"
866
867AOT_theorem "cqt-further:1": ‹∀α φ{α} → ∃α φ{α}›
868 using "∀E"(4) "∃I"(2) "→I" by metis
869
870AOT_theorem "cqt-further:2": ‹¬∀α φ{α} → ∃α ¬φ{α}›
871 using "∀I" "∃I"(2) "→I" RAA by metis
872
873AOT_theorem "cqt-further:3": ‹∀α φ{α} ≡ ¬∃α ¬φ{α}›
874 using "∀E"(4) "∃E" "→I" RAA
875 by (metis "cqt-further:2" "≡I" "modus-tollens:1")
876
877AOT_theorem "cqt-further:4": ‹¬∃α φ{α} → ∀α ¬φ{α}›
878 using "∀I" "∃I"(2)"→I" RAA by metis
879
880AOT_theorem "cqt-further:5": ‹∃α (φ{α} & ψ{α}) → (∃α φ{α} & ∃α ψ{α})›
881 by (metis (no_types, lifting) "&E" "&I" "∃E" "∃I"(2) "→I")
882
883AOT_theorem "cqt-further:6": ‹∃α (φ{α} ∨ ψ{α}) → (∃α φ{α} ∨ ∃α ψ{α})›
884 by (metis (mono_tags, lifting) "∃E" "∃I"(2) "∨E"(3) "∨I"(1, 2) "→I" RAA(2))
885
886
887AOT_theorem "cqt-further:7": ‹∃α φ{α} ≡ ∃β φ{β}›
888 by (simp add: "oth-class-taut:3:a")
889
890AOT_theorem "cqt-further:8":
891 ‹(∀α φ{α} & ∀α ψ{α}) → ∀α (φ{α} ≡ ψ{α})›
892 by (metis (mono_tags, lifting) "&E" "≡I" "∀E"(2) "→I" GEN)
893
894AOT_theorem "cqt-further:9":
895 ‹(¬∃α φ{α} & ¬∃α ψ{α}) → ∀α (φ{α} ≡ ψ{α})›
896 by (metis (mono_tags, lifting) "&E" "≡I" "∃I"(2) "→I" GEN "raa-cor:4")
897
898AOT_theorem "cqt-further:10":
899 ‹(∃α φ{α} & ¬∃α ψ{α}) → ¬∀α (φ{α} ≡ ψ{α})›
900proof(rule "→I"; rule "raa-cor:2")
901 AOT_assume 0: ‹∃α φ{α} & ¬∃α ψ{α}›
902 then AOT_obtain α where ‹φ{α}› using "∃E" "&E"(1) by metis
903 moreover AOT_assume ‹∀α (φ{α} ≡ ψ{α})›
904 ultimately AOT_have ‹ψ{α}› using "∀E"(4) "≡E"(1) by blast
905 AOT_hence ‹∃α ψ{α}› using "∃I" by blast
906 AOT_thus ‹∃α ψ{α} & ¬∃α ψ{α}› using 0 "&E"(2) "&I" by blast
907qed
908
909AOT_theorem "cqt-further:11": ‹∃α∃β φ{α,β} ≡ ∃β∃α φ{α,β}›
910 using "≡I" "→I" "∃I"(2) "∃E" by metis
911
912subsection‹Logical Existence, Identity, and Truth›
913text‹\label{PLM: 9.7}›
914
915AOT_theorem "log-prop-prop:1": ‹[λ φ]↓›
916 using "cqt:2[lambda0]"[axiom_inst] by auto
917
918AOT_theorem "log-prop-prop:2": ‹φ↓›
919 by (rule "≡⇩d⇩fI"[OF "existence:3"]) "cqt:2[lambda]"
920
921AOT_theorem "exist-nec": ‹τ↓ → □τ↓›
922proof -
923 AOT_have ‹∀β □β↓›
924 by (simp add: GEN RN "cqt:2[const_var]"[axiom_inst])
925 AOT_thus ‹τ↓ → □τ↓›
926 using "cqt:1"[axiom_inst] "→E" by blast
927qed
928
929
930class AOT_Term_id = AOT_Term +
931 assumes "t=t-proper:1"[AOT]: ‹[v ⊨ τ = τ' → τ↓]›
932 and "t=t-proper:2"[AOT]: ‹[v ⊨ τ = τ' → τ'↓]›
933
934instance κ :: AOT_Term_id
935proof
936 AOT_modally_strict {
937 AOT_show ‹κ = κ' → κ↓› for κ κ'
938 proof(rule "→I")
939 AOT_assume ‹κ = κ'›
940 AOT_hence ‹O!κ ∨ A!κ›
941 by (rule "∨I"(3)[OF "≡⇩d⇩fE"[OF "identity:1"]])
942 (meson "→I" "∨I"(1) "&E"(1))+
943 AOT_thus ‹κ↓›
944 by (rule "∨E"(1))
945 (metis "cqt:5:a"[axiom_inst] "→I" "→E" "&E"(2))+
946 qed
947 }
948next
949 AOT_modally_strict {
950 AOT_show ‹κ = κ' → κ'↓› for κ κ'
951 proof(rule "→I")
952 AOT_assume ‹κ = κ'›
953 AOT_hence ‹O!κ' ∨ A!κ'›
954 by (rule "∨I"(3)[OF "≡⇩d⇩fE"[OF "identity:1"]])
955 (meson "→I" "∨I" "&E")+
956 AOT_thus ‹κ'↓›
957 by (rule "∨E"(1))
958 (metis "cqt:5:a"[axiom_inst] "→I" "→E" "&E"(2))+
959 qed
960 }
961qed
962
963instance rel :: (AOT_κs) AOT_Term_id
964proof
965 AOT_modally_strict {
966 AOT_show ‹Π = Π' → Π↓› for Π Π' :: ‹<'a>›
967 proof(rule "→I")
968 AOT_assume ‹Π = Π'›
969 AOT_thus ‹Π↓› using "≡⇩d⇩fE"[OF "identity:3"[of Π Π']] "&E" by blast
970 qed
971 }
972next
973 AOT_modally_strict {
974 AOT_show ‹Π = Π' → Π'↓› for Π Π' :: ‹<'a>›
975 proof(rule "→I")
976 AOT_assume ‹Π = Π'›
977 AOT_thus ‹Π'↓› using "≡⇩d⇩fE"[OF "identity:3"[of Π Π']] "&E" by blast
978 qed
979 }
980qed
981
982instance 𝗈 :: AOT_Term_id
983proof
984 AOT_modally_strict {
985 fix φ ψ
986 AOT_show ‹φ = ψ → φ↓›
987 proof(rule "→I")
988 AOT_assume ‹φ = ψ›
989 AOT_thus ‹φ↓› using "≡⇩d⇩fE"[OF "identity:4"[of φ ψ]] "&E" by blast
990 qed
991 }
992next
993 AOT_modally_strict {
994 fix φ ψ
995 AOT_show ‹φ = ψ → ψ↓›
996 proof(rule "→I")
997 AOT_assume ‹φ = ψ›
998 AOT_thus ‹ψ↓› using "≡⇩d⇩fE"[OF "identity:4"[of φ ψ]] "&E" by blast
999 qed
1000 }
1001qed
1002
1003instance prod :: (AOT_Term_id, AOT_Term_id) AOT_Term_id
1004proof
1005 AOT_modally_strict {
1006 fix τ τ' :: ‹'a×'b›
1007 AOT_show ‹τ = τ' → τ↓›
1008 proof (induct τ; induct τ'; rule "→I")
1009 fix τ⇩1 τ⇩1' :: 'a and τ⇩2 τ⇩2' :: 'b
1010 AOT_assume ‹«(τ⇩1, τ⇩2)» = «(τ⇩1', τ⇩2')»›
1011 AOT_hence ‹(τ⇩1 = τ⇩1') & (τ⇩2 = τ⇩2')› by (metis "≡⇩d⇩fE" tuple_identity_1)
1012 AOT_hence ‹τ⇩1↓› and ‹τ⇩2↓›
1013 using "t=t-proper:1" "&E" "vdash-properties:10" by blast+
1014 AOT_thus ‹«(τ⇩1, τ⇩2)»↓› by (metis "≡⇩d⇩fI" "&I" tuple_denotes)
1015 qed
1016 }
1017next
1018 AOT_modally_strict {
1019 fix τ τ' :: ‹'a×'b›
1020 AOT_show ‹τ = τ' → τ'↓›
1021 proof (induct τ; induct τ'; rule "→I")
1022 fix τ⇩1 τ⇩1' :: 'a and τ⇩2 τ⇩2' :: 'b
1023 AOT_assume ‹«(τ⇩1, τ⇩2)» = «(τ⇩1', τ⇩2')»›
1024 AOT_hence ‹(τ⇩1 = τ⇩1') & (τ⇩2 = τ⇩2')› by (metis "≡⇩d⇩fE" tuple_identity_1)
1025 AOT_hence ‹τ⇩1'↓› and ‹τ⇩2'↓›
1026 using "t=t-proper:2" "&E" "vdash-properties:10" by blast+
1027 AOT_thus ‹«(τ⇩1', τ⇩2')»↓› by (metis "≡⇩d⇩fI" "&I" tuple_denotes)
1028 qed
1029 }
1030qed
1031
1032
1034AOT_register_type_constraints
1035 Term: ‹_::AOT_Term_id› ‹_::AOT_Term_id›
1036AOT_register_type_constraints
1037 Individual: ‹κ› ‹_::{AOT_κs, AOT_Term_id}›
1038AOT_register_type_constraints
1039 Relation: ‹<_::{AOT_κs, AOT_Term_id}>›
1040
1041AOT_theorem "id-rel-nec-equiv:1":
1042 ‹Π = Π' → □∀x⇩1...∀x⇩n ([Π]x⇩1...x⇩n ≡ [Π']x⇩1...x⇩n)›
1043proof(rule "→I")
1044 AOT_assume assumption: ‹Π = Π'›
1045 AOT_hence ‹Π↓› and ‹Π'↓›
1046 using "t=t-proper:1" "t=t-proper:2" MP by blast+
1047 moreover AOT_have ‹∀F∀G (F = G → ((□∀x⇩1...∀x⇩n ([F]x⇩1...x⇩n ≡ [F]x⇩1...x⇩n)) →
1048 □∀x⇩1...∀x⇩n ([F]x⇩1...x⇩n ≡ [G]x⇩1...x⇩n)))›
1049 apply (rule GEN)+ using "l-identity"[axiom_inst] by force
1050 ultimately AOT_have ‹Π = Π' → ((□∀x⇩1...∀x⇩n ([Π]x⇩1...x⇩n ≡ [Π]x⇩1...x⇩n)) →
1051 □∀x⇩1...∀x⇩n ([Π]x⇩1...x⇩n ≡ [Π']x⇩1...x⇩n))›
1052 using "∀E"(1) by blast
1053 AOT_hence ‹(□∀x⇩1...∀x⇩n ([Π]x⇩1...x⇩n ≡ [Π]x⇩1...x⇩n)) →
1054 □∀x⇩1...∀x⇩n ([Π]x⇩1...x⇩n ≡ [Π']x⇩1...x⇩n)›
1055 using assumption "→E" by blast
1056 moreover AOT_have ‹□∀x⇩1...∀x⇩n ([Π]x⇩1...x⇩n ≡ [Π]x⇩1...x⇩n)›
1057 by (simp add: RN "oth-class-taut:3:a" "universal-cor")
1058 ultimately AOT_show ‹□∀x⇩1...∀x⇩n ([Π]x⇩1...x⇩n ≡ [Π']x⇩1...x⇩n)›
1059 using "→E" by blast
1060qed
1061
1062AOT_theorem "id-rel-nec-equiv:2": ‹φ = ψ → □(φ ≡ ψ)›
1063proof(rule "→I")
1064 AOT_assume assumption: ‹φ = ψ›
1065 AOT_hence ‹φ↓› and ‹ψ↓›
1066 using "t=t-proper:1" "t=t-proper:2" MP by blast+
1067 moreover AOT_have ‹∀p∀q (p = q → ((□(p ≡ p) → □(p ≡ q))))›
1068 apply (rule GEN)+ using "l-identity"[axiom_inst] by force
1069 ultimately AOT_have ‹φ = ψ → (□(φ ≡ φ) → □(φ ≡ ψ))›
1070 using "∀E"(1) by blast
1071 AOT_hence ‹□(φ ≡ φ) → □(φ ≡ ψ)›
1072 using assumption "→E" by blast
1073 moreover AOT_have ‹□(φ ≡ φ)›
1074 by (simp add: RN "oth-class-taut:3:a" "universal-cor")
1075 ultimately AOT_show ‹□(φ ≡ ψ)›
1076 using "→E" by blast
1077qed
1078
1079AOT_theorem "rule=E":
1080 assumes ‹φ{τ}› and ‹τ = σ›
1081 shows ‹φ{σ}›
1082proof -
1083 AOT_have ‹τ↓› and ‹σ↓›
1084 using assms(2) "t=t-proper:1" "t=t-proper:2" "→E" by blast+
1085 moreover AOT_have ‹∀α∀β(α = β → (φ{α} → φ{β}))›
1086 apply (rule GEN)+ using "l-identity"[axiom_inst] by blast
1087 ultimately AOT_have ‹τ = σ → (φ{τ} → φ{σ})›
1088 using "∀E"(1) by blast
1089 AOT_thus ‹φ{σ}› using assms "→E" by blast
1090qed
1091
1092AOT_theorem "propositions-lemma:1": ‹[λ φ] = φ›
1093proof -
1094 AOT_have ‹φ↓› by (simp add: "log-prop-prop:2")
1095 moreover AOT_have ‹∀p [λ p] = p›
1096 using "lambda-predicates:3[zero]"[axiom_inst] "∀I" by fast
1097 ultimately AOT_show ‹[λ φ] = φ›
1098 using "∀E" by blast
1099qed
1100
1101AOT_theorem "propositions-lemma:2": ‹[λ φ] ≡ φ›
1102proof -
1103 AOT_have ‹[λ φ] ≡ [λ φ]› by (simp add: "oth-class-taut:3:a")
1104 AOT_thus ‹[λ φ] ≡ φ› using "propositions-lemma:1" "rule=E" by blast
1105qed
1106
1107text‹propositions-lemma:3 through propositions-lemma:5 hold implicitly›
1108
1109AOT_theorem "propositions-lemma:6": ‹(φ ≡ ψ) ≡ ([λ φ] ≡ [λ ψ])›
1110 by (metis "≡E"(1) "≡E"(5) "Associativity of ≡" "propositions-lemma:2")
1111
1112text‹dr-alphabetic-rules holds implicitly›
1113
1114AOT_theorem "oa-exist:1": ‹O!↓›
1115proof -
1116 AOT_have ‹[λx ◇[E!]x]↓› by "cqt:2[lambda]"
1117 AOT_hence 1: ‹O! = [λx ◇[E!]x]›
1118 using "df-rules-terms[4]"[OF "oa:1", THEN "&E"(1)] "→E" by blast
1119 AOT_show ‹O!↓› using "t=t-proper:1"[THEN "→E", OF 1] by simp
1120qed
1121
1122AOT_theorem "oa-exist:2": ‹A!↓›
1123proof -
1124 AOT_have ‹[λx ¬◇[E!]x]↓› by "cqt:2[lambda]"
1125 AOT_hence 1: ‹A! = [λx ¬◇[E!]x]›
1126 using "df-rules-terms[4]"[OF "oa:2", THEN "&E"(1)] "→E" by blast
1127 AOT_show ‹A!↓› using "t=t-proper:1"[THEN "→E", OF 1] by simp
1128qed
1129
1130AOT_theorem "oa-exist:3": ‹O!x ∨ A!x›
1131proof(rule "raa-cor:1")
1132 AOT_assume ‹¬(O!x ∨ A!x)›
1133 AOT_hence A: ‹¬O!x› and B: ‹¬A!x›
1134 using "Disjunction Addition"(1) "modus-tollens:1"
1135 "∨I"(2) "raa-cor:5" by blast+
1136 AOT_have C: ‹O! = [λx ◇[E!]x]›
1137 by (rule "df-rules-terms[4]"[OF "oa:1", THEN "&E"(1), THEN "→E"]) "cqt:2"
1138 AOT_have D: ‹A! = [λx ¬◇[E!]x]›
1139 by (rule "df-rules-terms[4]"[OF "oa:2", THEN "&E"(1), THEN "→E"]) "cqt:2"
1140 AOT_have E: ‹¬[λx ◇[E!]x]x›
1141 using A C "rule=E" by fast
1142 AOT_have F: ‹¬[λx ¬◇[E!]x]x›
1143 using B D "rule=E" by fast
1144 AOT_have G: ‹[λx ◇[E!]x]x ≡ ◇[E!]x›
1145 by (rule "lambda-predicates:2"[axiom_inst, THEN "→E"]) "cqt:2"
1146 AOT_have H: ‹[λx ¬◇[E!]x]x ≡ ¬◇[E!]x›
1147 by (rule "lambda-predicates:2"[axiom_inst, THEN "→E"]) "cqt:2"
1148 AOT_show ‹¬◇[E!]x & ¬¬◇[E!]x› using G E "≡E" H F "≡E" "&I" by metis
1149qed
1150
1151AOT_theorem "p-identity-thm2:1": ‹F = G ≡ □∀x(x[F] ≡ x[G])›
1152proof -
1153 AOT_have ‹F = G ≡ F↓ & G↓ & □∀x(x[F] ≡ x[G])›
1154 using "identity:2" "df-rules-formulas[3]" "df-rules-formulas[4]"
1155 "→E" "&E" "≡I" "→I" by blast
1156 moreover AOT_have ‹F↓› and ‹G↓›
1157 by (auto simp: "cqt:2[const_var]"[axiom_inst])
1158 ultimately AOT_show ‹F = G ≡ □∀x(x[F] ≡ x[G])›
1159 using "≡S"(1) "&I" by blast
1160qed
1161
1162AOT_theorem "p-identity-thm2:2[2]":
1163 ‹F = G ≡ ∀y⇩1([λx [F]xy⇩1] = [λx [G]xy⇩1] & [λx [F]y⇩1x] = [λx [G]y⇩1x])›
1164proof -
1165 AOT_have ‹F = G ≡ F↓ & G↓ &
1166 ∀y⇩1([λx [F]xy⇩1] = [λx [G]xy⇩1] & [λx [F]y⇩1x] = [λx [G]y⇩1x])›
1167 using "identity:3[2]" "df-rules-formulas[3]" "df-rules-formulas[4]"
1168 "→E" "&E" "≡I" "→I" by blast
1169 moreover AOT_have ‹F↓› and ‹G↓›
1170 by (auto simp: "cqt:2[const_var]"[axiom_inst])
1171 ultimately show ?thesis
1172 using "≡S"(1) "&I" by blast
1173qed
1174
1175AOT_theorem "p-identity-thm2:2[3]":
1176 ‹F = G ≡ ∀y⇩1∀y⇩2([λx [F]xy⇩1y⇩2] = [λx [G]xy⇩1y⇩2] &
1177 [λx [F]y⇩1xy⇩2] = [λx [G]y⇩1xy⇩2] &
1178 [λx [F]y⇩1y⇩2x] = [λx [G]y⇩1y⇩2x])›
1179proof -
1180 AOT_have ‹F = G ≡ F↓ & G↓ & ∀y⇩1∀y⇩2([λx [F]xy⇩1y⇩2] = [λx [G]xy⇩1y⇩2] &
1181 [λx [F]y⇩1xy⇩2] = [λx [G]y⇩1xy⇩2] &
1182 [λx [F]y⇩1y⇩2x] = [λx [G]y⇩1y⇩2x])›
1183 using "identity:3[3]" "df-rules-formulas[3]" "df-rules-formulas[4]"
1184 "→E" "&E" "≡I" "→I" by blast
1185 moreover AOT_have ‹F↓› and ‹G↓›
1186 by (auto simp: "cqt:2[const_var]"[axiom_inst])
1187 ultimately show ?thesis
1188 using "≡S"(1) "&I" by blast
1189qed
1190
1191AOT_theorem "p-identity-thm2:2[4]":
1192 ‹F = G ≡ ∀y⇩1∀y⇩2∀y⇩3([λx [F]xy⇩1y⇩2y⇩3] = [λx [G]xy⇩1y⇩2y⇩3] &
1193 [λx [F]y⇩1xy⇩2y⇩3] = [λx [G]y⇩1xy⇩2y⇩3] &
1194 [λx [F]y⇩1y⇩2xy⇩3] = [λx [G]y⇩1y⇩2xy⇩3] &
1195 [λx [F]y⇩1y⇩2y⇩3x] = [λx [G]y⇩1y⇩2y⇩3x])›
1196proof -
1197 AOT_have ‹F = G ≡ F↓ & G↓ & ∀y⇩1∀y⇩2∀y⇩3([λx [F]xy⇩1y⇩2y⇩3] = [λx [G]xy⇩1y⇩2y⇩3] &
1198 [λx [F]y⇩1xy⇩2y⇩3] = [λx [G]y⇩1xy⇩2y⇩3] &
1199 [λx [F]y⇩1y⇩2xy⇩3] = [λx [G]y⇩1y⇩2xy⇩3] &
1200 [λx [F]y⇩1y⇩2y⇩3x] = [λx [G]y⇩1y⇩2y⇩3x])›
1201 using "identity:3[4]" "df-rules-formulas[3]" "df-rules-formulas[4]"
1202 "→E" "&E" "≡I" "→I" by blast
1203 moreover AOT_have ‹F↓› and ‹G↓›
1204 by (auto simp: "cqt:2[const_var]"[axiom_inst])
1205 ultimately show ?thesis
1206 using "≡S"(1) "&I" by blast
1207qed
1208
1209AOT_theorem "p-identity-thm2:2":
1210 ‹F = G ≡ ∀x⇩1...∀x⇩n «AOT_sem_proj_id x⇩1x⇩n (λ τ . «[F]τ») (λ τ . «[G]τ»)»›
1211proof -
1212 AOT_have ‹F = G ≡ F↓ & G↓ &
1213 ∀x⇩1...∀x⇩n «AOT_sem_proj_id x⇩1x⇩n (λ τ . «[F]τ») (λ τ . «[G]τ»)»›
1214 using "identity:3" "df-rules-formulas[3]" "df-rules-formulas[4]"
1215 "→E" "&E" "≡I" "→I" by blast
1216 moreover AOT_have ‹F↓› and ‹G↓›
1217 by (auto simp: "cqt:2[const_var]"[axiom_inst])
1218 ultimately show ?thesis
1219 using "≡S"(1) "&I" by blast
1220qed
1221
1222AOT_theorem "p-identity-thm2:3":
1223 ‹p = q ≡ [λx p] = [λx q]›
1224proof -
1225 AOT_have ‹p = q ≡ p↓ & q↓ & [λx p] = [λx q]›
1226 using "identity:4" "df-rules-formulas[3]" "df-rules-formulas[4]"
1227 "→E" "&E" "≡I" "→I" by blast
1228 moreover AOT_have ‹p↓› and ‹q↓›
1229 by (auto simp: "cqt:2[const_var]"[axiom_inst])
1230 ultimately show ?thesis
1231 using "≡S"(1) "&I" by blast
1232qed
1233
1234class AOT_Term_id_2 = AOT_Term_id + assumes "id-eq:1": ‹[v ⊨ α = α]›
1235
1236instance κ :: AOT_Term_id_2
1237proof
1238 AOT_modally_strict {
1239 fix x
1240 {
1241 AOT_assume ‹O!x›
1242 moreover AOT_have ‹□∀F([F]x ≡ [F]x)›
1243 using RN GEN "oth-class-taut:3:a" by fast
1244 ultimately AOT_have ‹O!x & O!x & □∀F([F]x ≡ [F]x)› using "&I" by simp
1245 }
1246 moreover {
1247 AOT_assume ‹A!x›
1248 moreover AOT_have ‹□∀F(x[F] ≡ x[F])›
1249 using RN GEN "oth-class-taut:3:a" by fast
1250 ultimately AOT_have ‹A!x & A!x & □∀F(x[F] ≡ x[F])› using "&I" by simp
1251 }
1252 ultimately AOT_have ‹(O!x & O!x & □∀F([F]x ≡ [F]x)) ∨
1253 (A!x & A!x & □∀F(x[F] ≡ x[F]))›
1254 using "oa-exist:3" "∨I"(1) "∨I"(2) "∨E"(3) "raa-cor:1" by blast
1255 AOT_thus ‹x = x›
1256 using "identity:1"[THEN "df-rules-formulas[4]"] "→E" by blast
1257 }
1258qed
1259
1260instance rel :: ("{AOT_κs,AOT_Term_id_2}") AOT_Term_id_2
1261proof
1262 AOT_modally_strict {
1263 fix F :: "<'a> AOT_var"
1264 AOT_have 0: ‹[λx⇩1...x⇩n [F]x⇩1...x⇩n] = F›
1265 by (simp add: "lambda-predicates:3"[axiom_inst])
1266 AOT_have ‹[λx⇩1...x⇩n [F]x⇩1...x⇩n]↓›
1267 by "cqt:2[lambda]"
1268 AOT_hence ‹[λx⇩1...x⇩n [F]x⇩1...x⇩n] = [λx⇩1...x⇩n [F]x⇩1...x⇩n]›
1269 using "lambda-predicates:1"[axiom_inst] "→E" by blast
1270 AOT_show ‹F = F› using "rule=E" 0 by force
1271 }
1272qed
1273
1274instance 𝗈 :: AOT_Term_id_2
1275proof
1276 AOT_modally_strict {
1277 fix p
1278 AOT_have 0: ‹[λ p] = p›
1279 by (simp add: "lambda-predicates:3[zero]"[axiom_inst])
1280 AOT_have ‹[λ p]↓›
1281 by (rule "cqt:2[lambda0]"[axiom_inst])
1282 AOT_hence ‹[λ p] = [λ p]›
1283 using "lambda-predicates:1[zero]"[axiom_inst] "→E" by blast
1284 AOT_show ‹p = p› using "rule=E" 0 by force
1285 }
1286qed
1287
1288instance prod :: (AOT_Term_id_2, AOT_Term_id_2) AOT_Term_id_2
1289proof
1290 AOT_modally_strict {
1291 fix α :: ‹('a×'b) AOT_var›
1292 AOT_show ‹α = α›
1293 proof (induct)
1294 AOT_show ‹τ = τ› if ‹τ↓› for τ :: ‹'a×'b›
1295 using that
1296 proof (induct τ)
1297 fix τ⇩1 :: 'a and τ⇩2 :: 'b
1298 AOT_assume ‹«(τ⇩1,τ⇩2)»↓›
1299 AOT_hence ‹τ⇩1↓› and ‹τ⇩2↓›
1300 using "≡⇩d⇩fE" "&E" tuple_denotes by blast+
1301 AOT_hence ‹τ⇩1 = τ⇩1› and ‹τ⇩2 = τ⇩2›
1302 using "id-eq:1"[unvarify α] by blast+
1303 AOT_thus ‹«(τ⇩1, τ⇩2)» = «(τ⇩1, τ⇩2)»›
1304 by (metis "≡⇩d⇩fI" "&I" tuple_identity_1)
1305 qed
1306 qed
1307 }
1308qed
1309
1310AOT_register_type_constraints
1311 Term: ‹_::AOT_Term_id_2› ‹_::AOT_Term_id_2›
1312AOT_register_type_constraints
1313 Individual: ‹κ› ‹_::{AOT_κs, AOT_Term_id_2}›
1314AOT_register_type_constraints
1315 Relation: ‹<_::{AOT_κs, AOT_Term_id_2}>›
1316
1317AOT_theorem "id-eq:2": ‹α = β → β = α›
1318 by (meson "rule=E" "deduction-theorem")
1319
1320AOT_theorem "id-eq:3": ‹α = β & β = γ → α = γ›
1321 using "rule=E" "→I" "&E" by blast
1322
1323AOT_theorem "id-eq:4": ‹α = β ≡ ∀γ (α = γ ≡ β = γ)›
1324proof (rule "≡I"; rule "→I")
1325 AOT_assume 0: ‹α = β›
1326 AOT_hence 1: ‹β = α› using "id-eq:2" "→E" by blast
1327 AOT_show ‹∀γ (α = γ ≡ β = γ)›
1328 by (rule GEN) (metis "≡I" "→I" 0 "1" "rule=E")
1329next
1330 AOT_assume ‹∀γ (α = γ ≡ β = γ)›
1331 AOT_hence ‹α = α ≡ β = α› using "∀E"(2) by blast
1332 AOT_hence ‹α = α → β = α› using "≡E"(1) "→I" by blast
1333 AOT_hence ‹β = α› using "id-eq:1" "→E" by blast
1334 AOT_thus ‹α = β› using "id-eq:2" "→E" by blast
1335qed
1336
1337AOT_theorem "rule=I:1":
1338 assumes ‹τ↓›
1339 shows ‹τ = τ›
1340proof -
1341 AOT_have ‹∀α (α = α)›
1342 by (rule GEN) (metis "id-eq:1")
1343 AOT_thus ‹τ = τ› using assms "∀E" by blast
1344qed
1345
1346AOT_theorem "rule=I:2[const_var]": "α = α"
1347 using "id-eq:1".
1348
1349AOT_theorem "rule=I:2[lambda]":
1350 assumes ‹INSTANCE_OF_CQT_2(φ)›
1351 shows "[λν⇩1...ν⇩n φ{ν⇩1...ν⇩n}] = [λν⇩1...ν⇩n φ{ν⇩1...ν⇩n}]"
1352proof -
1353 AOT_have ‹∀α (α = α)›
1354 by (rule GEN) (metis "id-eq:1")
1355 moreover AOT_have ‹[λν⇩1...ν⇩n φ{ν⇩1...ν⇩n}]↓›
1356 using assms by (rule "cqt:2[lambda]"[axiom_inst])
1357 ultimately AOT_show ‹[λν⇩1...ν⇩n φ{ν⇩1...ν⇩n}] = [λν⇩1...ν⇩n φ{ν⇩1...ν⇩n}]›
1358 using assms "∀E" by blast
1359qed
1360
1361lemmas "=I" = "rule=I:1" "rule=I:2[const_var]" "rule=I:2[lambda]"
1362
1363AOT_theorem "rule-id-df:1":
1364 assumes ‹τ{α⇩1...α⇩n} =⇩d⇩f σ{α⇩1...α⇩n}› and ‹σ{τ⇩1...τ⇩n}↓›
1365 shows ‹τ{τ⇩1...τ⇩n} = σ{τ⇩1...τ⇩n}›
1366proof -
1367 AOT_have ‹σ{τ⇩1...τ⇩n}↓ → τ{τ⇩1...τ⇩n} = σ{τ⇩1...τ⇩n}›
1368 using "df-rules-terms[3]" assms(1) "&E" by blast
1369 AOT_thus ‹τ{τ⇩1...τ⇩n} = σ{τ⇩1...τ⇩n}›
1370 using assms(2) "→E" by blast
1371qed
1372
1373AOT_theorem "rule-id-df:1[zero]":
1374 assumes ‹τ =⇩d⇩f σ› and ‹σ↓›
1375 shows ‹τ = σ›
1376proof -
1377 AOT_have ‹σ↓ → τ = σ›
1378 using "df-rules-terms[4]" assms(1) "&E" by blast
1379 AOT_thus ‹τ = σ›
1380 using assms(2) "→E" by blast
1381qed
1382
1383AOT_theorem "rule-id-df:2:a":
1384 assumes ‹τ{α⇩1...α⇩n} =⇩d⇩f σ{α⇩1...α⇩n}› and ‹σ{τ⇩1...τ⇩n}↓› and ‹φ{τ{τ⇩1...τ⇩n}}›
1385 shows ‹φ{σ{τ⇩1...τ⇩n}}›
1386proof -
1387 AOT_have ‹τ{τ⇩1...τ⇩n} = σ{τ⇩1...τ⇩n}› using "rule-id-df:1" assms(1,2) by blast
1388 AOT_thus ‹φ{σ{τ⇩1...τ⇩n}}› using assms(3) "rule=E" by blast
1389qed
1390
1391AOT_theorem "rule-id-df:2:a[2]":
1392 assumes ‹τ{«(α⇩1,α⇩2)»} =⇩d⇩f σ{«(α⇩1,α⇩2)»}›
1393 and ‹σ{«(τ⇩1,τ⇩2)»}↓›
1394 and ‹φ{τ{«(τ⇩1,τ⇩2)»}}›
1395 shows ‹φ{σ{«(τ⇩1::'a::AOT_Term_id_2,τ⇩2::'b::AOT_Term_id_2)»}}›
1396proof -
1397 AOT_have ‹τ{«(τ⇩1,τ⇩2)»} = σ{«(τ⇩1,τ⇩2)»}›
1398 using "rule-id-df:1" assms(1,2) by auto
1399 AOT_thus ‹φ{σ{«(τ⇩1,τ⇩2)»}}› using assms(3) "rule=E" by blast
1400qed
1401
1402AOT_theorem "rule-id-df:2:a[zero]":
1403 assumes ‹τ =⇩d⇩f σ› and ‹σ↓› and ‹φ{τ}›
1404 shows ‹φ{σ}›
1405proof -
1406 AOT_have ‹τ = σ› using "rule-id-df:1[zero]" assms(1,2) by blast
1407 AOT_thus ‹φ{σ}› using assms(3) "rule=E" by blast
1408qed
1409
1410lemmas "=⇩d⇩fE" = "rule-id-df:2:a" "rule-id-df:2:a[zero]"
1411
1412AOT_theorem "rule-id-df:2:b":
1413 assumes ‹τ{α⇩1...α⇩n} =⇩d⇩f σ{α⇩1...α⇩n}› and ‹σ{τ⇩1...τ⇩n}↓› and ‹φ{σ{τ⇩1...τ⇩n}}›
1414 shows ‹φ{τ{τ⇩1...τ⇩n}}›
1415proof -
1416 AOT_have ‹τ{τ⇩1...τ⇩n} = σ{τ⇩1...τ⇩n}›
1417 using "rule-id-df:1" assms(1,2) by blast
1418 AOT_hence ‹σ{τ⇩1...τ⇩n} = τ{τ⇩1...τ⇩n}›
1419 using "rule=E" "=I"(1) "t=t-proper:1" "→E" by fast
1420 AOT_thus ‹φ{τ{τ⇩1...τ⇩n}}› using assms(3) "rule=E" by blast
1421qed
1422
1423AOT_theorem "rule-id-df:2:b[2]":
1424 assumes ‹τ{«(α⇩1,α⇩2)»} =⇩d⇩f σ{«(α⇩1,α⇩2)»}›
1425 and ‹σ{«(τ⇩1,τ⇩2)»}↓›
1426 and ‹φ{σ{«(τ⇩1,τ⇩2)»}}›
1427 shows ‹φ{τ{«(τ⇩1::'a::AOT_Term_id_2,τ⇩2::'b::AOT_Term_id_2)»}}›
1428proof -
1429 AOT_have ‹τ{«(τ⇩1,τ⇩2)»} = σ{«(τ⇩1,τ⇩2)»}›
1430 using "=I"(1) "rule-id-df:2:a[2]" RAA(1) assms(1,2) "→I" by metis
1431 AOT_hence ‹σ{«(τ⇩1,τ⇩2)»} = τ{«(τ⇩1,τ⇩2)»}›
1432 using "rule=E" "=I"(1) "t=t-proper:1" "→E" by fast
1433 AOT_thus ‹φ{τ{«(τ⇩1,τ⇩2)»}}› using assms(3) "rule=E" by blast
1434qed
1435
1436AOT_theorem "rule-id-df:2:b[zero]":
1437 assumes ‹τ =⇩d⇩f σ› and ‹σ↓› and ‹φ{σ}›
1438 shows ‹φ{τ}›
1439proof -
1440 AOT_have ‹τ = σ› using "rule-id-df:1[zero]" assms(1,2) by blast
1441 AOT_hence ‹σ = τ›
1442 using "rule=E" "=I"(1) "t=t-proper:1" "→E" by fast
1443 AOT_thus ‹φ{τ}› using assms(3) "rule=E" by blast
1444qed
1445
1446lemmas "=⇩d⇩fI" = "rule-id-df:2:b" "rule-id-df:2:b[zero]"
1447
1448AOT_theorem "free-thms:1": ‹τ↓ ≡ ∃β (β = τ)›
1449 by (metis "∃E" "rule=I:1" "t=t-proper:2" "→I" "∃I"(1) "≡I" "→E")
1450
1451AOT_theorem "free-thms:2": ‹∀α φ{α} → (∃β (β = τ) → φ{τ})›
1452 by (metis "∃E" "rule=E" "cqt:2[const_var]"[axiom_inst] "→I" "∀E"(1))
1453
1454AOT_theorem "free-thms:3[const_var]": ‹∃β (β = α)›
1455 by (meson "∃I"(2) "id-eq:1")
1456
1457AOT_theorem "free-thms:3[lambda]":
1458 assumes ‹INSTANCE_OF_CQT_2(φ)›
1459 shows ‹∃β (β = [λν⇩1...ν⇩n φ{ν⇩1...ν⇩n}])›
1460 by (meson "=I"(3) assms "cqt:2[lambda]"[axiom_inst] "existential:1")
1461
1462AOT_theorem "free-thms:4[rel]":
1463 ‹([Π]κ⇩1...κ⇩n ∨ κ⇩1...κ⇩n[Π]) → ∃β (β = Π)›
1464 by (metis "rule=I:1" "&E"(1) "∨E"(1) "cqt:5:a"[axiom_inst]
1465 "cqt:5:b"[axiom_inst] "→I" "∃I"(1))
1466
1467AOT_theorem "free-thms:4[vars]":
1468 ‹([Π]κ⇩1...κ⇩n ∨ κ⇩1...κ⇩n[Π]) → ∃β⇩1...∃β⇩n (β⇩1...β⇩n = κ⇩1...κ⇩n)›
1469 by (metis "rule=I:1" "&E"(2) "∨E"(1) "cqt:5:a"[axiom_inst]
1470 "cqt:5:b"[axiom_inst] "→I" "∃I"(1))
1471
1472AOT_theorem "free-thms:4[1,rel]":
1473 ‹([Π]κ ∨ κ[Π]) → ∃β (β = Π)›
1474 by (metis "rule=I:1" "&E"(1) "∨E"(1) "cqt:5:a"[axiom_inst]
1475 "cqt:5:b"[axiom_inst] "→I" "∃I"(1))
1476AOT_theorem "free-thms:4[1,1]":
1477 ‹([Π]κ ∨ κ[Π]) → ∃β (β = κ)›
1478 by (metis "rule=I:1" "&E"(2) "∨E"(1) "cqt:5:a"[axiom_inst]
1479 "cqt:5:b"[axiom_inst] "→I" "∃I"(1))
1480
1481AOT_theorem "free-thms:4[2,rel]":
1482 ‹([Π]κ⇩1κ⇩2 ∨ κ⇩1κ⇩2[Π]) → ∃β (β = Π)›
1483 by (metis "rule=I:1" "&E"(1) "∨E"(1) "cqt:5:a[2]"[axiom_inst]
1484 "cqt:5:b[2]"[axiom_inst] "→I" "∃I"(1))
1485AOT_theorem "free-thms:4[2,1]":
1486 ‹([Π]κ⇩1κ⇩2 ∨ κ⇩1κ⇩2[Π]) → ∃β (β = κ⇩1)›
1487 by (metis "rule=I:1" "&E" "∨E"(1) "cqt:5:a[2]"[axiom_inst]
1488 "cqt:5:b[2]"[axiom_inst] "→I" "∃I"(1))
1489AOT_theorem "free-thms:4[2,2]":
1490 ‹([Π]κ⇩1κ⇩2 ∨ κ⇩1κ⇩2[Π]) → ∃β (β = κ⇩2)›
1491 by (metis "rule=I:1" "&E"(2) "∨E"(1) "cqt:5:a[2]"[axiom_inst]
1492 "cqt:5:b[2]"[axiom_inst] "→I" "∃I"(1))
1493AOT_theorem "free-thms:4[3,rel]":
1494 ‹([Π]κ⇩1κ⇩2κ⇩3 ∨ κ⇩1κ⇩2κ⇩3[Π]) → ∃β (β = Π)›
1495 by (metis "rule=I:1" "&E"(1) "∨E"(1) "cqt:5:a[3]"[axiom_inst]
1496 "cqt:5:b[3]"[axiom_inst] "→I" "∃I"(1))
1497AOT_theorem "free-thms:4[3,1]":
1498 ‹([Π]κ⇩1κ⇩2κ⇩3 ∨ κ⇩1κ⇩2κ⇩3[Π]) → ∃β (β = κ⇩1)›
1499 by (metis "rule=I:1" "&E" "∨E"(1) "cqt:5:a[3]"[axiom_inst]
1500 "cqt:5:b[3]"[axiom_inst] "→I" "∃I"(1))
1501AOT_theorem "free-thms:4[3,2]":
1502 ‹([Π]κ⇩1κ⇩2κ⇩3 ∨ κ⇩1κ⇩2κ⇩3[Π]) → ∃β (β = κ⇩2)›
1503 by (metis "rule=I:1" "&E" "∨E"(1) "cqt:5:a[3]"[axiom_inst]
1504 "cqt:5:b[3]"[axiom_inst] "→I" "∃I"(1))
1505AOT_theorem "free-thms:4[3,3]":
1506 ‹([Π]κ⇩1κ⇩2κ⇩3 ∨ κ⇩1κ⇩2κ⇩3[Π]) → ∃β (β = κ⇩3)›
1507 by (metis "rule=I:1" "&E"(2) "∨E"(1) "cqt:5:a[3]"[axiom_inst]
1508 "cqt:5:b[3]"[axiom_inst] "→I" "∃I"(1))
1509AOT_theorem "free-thms:4[4,rel]":
1510 ‹([Π]κ⇩1κ⇩2κ⇩3κ⇩4 ∨ κ⇩1κ⇩2κ⇩3κ⇩4[Π]) → ∃β (β = Π)›
1511 by (metis "rule=I:1" "&E"(1) "∨E"(1) "cqt:5:a[4]"[axiom_inst]
1512 "cqt:5:b[4]"[axiom_inst] "→I" "∃I"(1))
1513AOT_theorem "free-thms:4[4,1]":
1514 ‹([Π]κ⇩1κ⇩2κ⇩3κ⇩4 ∨ κ⇩1κ⇩2κ⇩3κ⇩4[Π]) → ∃β (β = κ⇩1)›
1515 by (metis "rule=I:1" "&E" "∨E"(1) "cqt:5:a[4]"[axiom_inst]
1516 "cqt:5:b[4]"[axiom_inst] "→I" "∃I"(1))
1517AOT_theorem "free-thms:4[4,2]":
1518 ‹([Π]κ⇩1κ⇩2κ⇩3κ⇩4 ∨ κ⇩1κ⇩2κ⇩3κ⇩4[Π]) → ∃β (β = κ⇩2)›
1519 by (metis "rule=I:1" "&E" "∨E"(1) "cqt:5:a[4]"[axiom_inst]
1520 "cqt:5:b[4]"[axiom_inst] "→I" "∃I"(1))
1521AOT_theorem "free-thms:4[4,3]":
1522 ‹([Π]κ⇩1κ⇩2κ⇩3κ⇩4 ∨ κ⇩1κ⇩2κ⇩3κ⇩4[Π]) → ∃β (β = κ⇩3)›
1523 by (metis "rule=I:1" "&E" "∨E"(1) "cqt:5:a[4]"[axiom_inst]
1524 "cqt:5:b[4]"[axiom_inst] "→I" "∃I"(1))
1525AOT_theorem "free-thms:4[4,4]":
1526 ‹([Π]κ⇩1κ⇩2κ⇩3κ⇩4 ∨ κ⇩1κ⇩2κ⇩3κ⇩4[Π]) → ∃β (β = κ⇩4)›
1527 by (metis "rule=I:1" "&E"(2) "∨E"(1) "cqt:5:a[4]"[axiom_inst]
1528 "cqt:5:b[4]"[axiom_inst] "→I" "∃I"(1))
1529
1530AOT_theorem "ex:1:a": ‹∀α α↓›
1531 by (rule GEN) (fact "cqt:2[const_var]"[axiom_inst])
1532AOT_theorem "ex:1:b": ‹∀α∃β(β = α)›
1533 by (rule GEN) (fact "free-thms:3[const_var]")
1534
1535AOT_theorem "ex:2:a": ‹□α↓›
1536 by (rule RN) (fact "cqt:2[const_var]"[axiom_inst])
1537AOT_theorem "ex:2:b": ‹□∃β(β = α)›
1538 by (rule RN) (fact "free-thms:3[const_var]")
1539
1540AOT_theorem "ex:3:a": ‹□∀α α↓›
1541 by (rule RN) (fact "ex:1:a")
1542AOT_theorem "ex:3:b": ‹□∀α∃β(β = α)›
1543 by (rule RN) (fact "ex:1:b")
1544
1545AOT_theorem "ex:4:a": ‹∀α □α↓›
1546 by (rule GEN; rule RN) (fact "cqt:2[const_var]"[axiom_inst])
1547AOT_theorem "ex:4:b": ‹∀α□∃β(β = α)›
1548 by (rule GEN; rule RN) (fact "free-thms:3[const_var]")
1549
1550AOT_theorem "ex:5:a": ‹□∀α □α↓›
1551 by (rule RN) (simp add: "ex:4:a")
1552AOT_theorem "ex:5:b": ‹□∀α□∃β(β = α)›
1553 by (rule RN) (simp add: "ex:4:b")
1554
1555AOT_theorem "all-self=:1": ‹□∀α(α = α)›
1556 by (rule RN; rule GEN) (fact "id-eq:1")
1557AOT_theorem "all-self=:2": ‹∀α□(α = α)›
1558 by (rule GEN; rule RN) (fact "id-eq:1")
1559
1560AOT_theorem "id-nec:1": ‹α = β → □(α = β)›
1561proof(rule "→I")
1562 AOT_assume ‹α = β›
1563 moreover AOT_have ‹□(α = α)›
1564 by (rule RN) (fact "id-eq:1")
1565 ultimately AOT_show ‹□(α = β)› using "rule=E" by fast
1566qed
1567
1568AOT_theorem "id-nec:2": ‹τ = σ → □(τ = σ)›
1569proof(rule "→I")
1570 AOT_assume asm: ‹τ = σ›
1571 moreover AOT_have ‹τ↓›
1572 using calculation "t=t-proper:1" "→E" by blast
1573 moreover AOT_have ‹□(τ = τ)›
1574 using calculation "all-self=:2" "∀E"(1) by blast
1575 ultimately AOT_show ‹□(τ = σ)› using "rule=E" by fast
1576qed
1577
1578AOT_theorem "term-out:1": ‹φ{α} ≡ ∃β (β = α & φ{β})›
1579proof (rule "≡I"; rule "→I")
1580 AOT_assume asm: ‹φ{α}›
1581 AOT_show ‹∃β (β = α & φ{β})›
1582 by (rule "∃I"(2)[where β=α]; rule "&I")
1583 (auto simp: "id-eq:1" asm)
1584next
1585 AOT_assume 0: ‹∃β (β = α & φ{β})›
1586 AOT_obtain β where ‹β = α & φ{β}›
1587 using "∃E"[rotated, OF 0] by blast
1588 AOT_thus ‹φ{α}› using "&E" "rule=E" by blast
1589qed
1590
1591AOT_theorem "term-out:2": ‹τ↓ → (φ{τ} ≡ ∃α(α = τ & φ{α}))›
1592proof(rule "→I")
1593 AOT_assume ‹τ↓›
1594 moreover AOT_have ‹∀α (φ{α} ≡ ∃β (β = α & φ{β}))›
1595 by (rule GEN) (fact "term-out:1")
1596 ultimately AOT_show ‹φ{τ} ≡ ∃α(α = τ & φ{α})›
1597 using "∀E" by blast
1598qed
1599
1600AOT_theorem "term-out:3":
1601 ‹(φ{α} & ∀β(φ{β} → β = α)) ≡ ∀β(φ{β} ≡ β = α)›
1602 apply (rule "≡I"; rule "→I")
1603 apply (frule "&E"(1))
1604 apply (drule "&E"(2))
1605 apply (rule GEN; rule "≡I"; rule "→I")
1606 using "rule-ui:2[const_var]" "vdash-properties:5"
1607 apply blast
1608 apply (meson "rule=E" "id-eq:1")
1609 apply (rule "&I")
1610 using "id-eq:1" "≡E"(2) "rule-ui:3"
1611 apply blast
1612 apply (rule GEN; rule "→I")
1613 using "≡E"(1) "rule-ui:2[const_var]"
1614 by blast
1615
1616
1617AOT_theorem "term-out:4":
1618 ‹(φ{β} & ∀α(φ{α} → α = β)) ≡ ∀α(φ{α} ≡ α = β)›
1619 using "term-out:3" .
1620
1621
1622AOT_define AOT_exists_unique :: ‹α ⇒ φ ⇒ φ› "uniqueness:1":
1623 ‹«AOT_exists_unique φ» ≡⇩d⇩f ∃α (φ{α} & ∀β (φ{β} → β = α))›
1624syntax (input) "_AOT_exists_unique" :: ‹α ⇒ φ ⇒ φ› ("∃!_ _" [1,40])
1625syntax (output) "_AOT_exists_unique" :: ‹α ⇒ φ ⇒ φ› ("∃!_'(_')" [1,40])
1626AOT_syntax_print_translations
1627 "_AOT_exists_unique τ φ" <= "CONST AOT_exists_unique (_abs τ φ)"
1628syntax
1629 "_AOT_exists_unique_ellipse" :: ‹id_position ⇒ id_position ⇒ φ ⇒ φ›
1630 (‹∃!_...∃!_ _› [1,40])
1631parse_ast_translation‹
1632[(\<^syntax_const>‹_AOT_exists_unique_ellipse›,
1633 fn ctx => fn [a,b,c] => Ast.mk_appl (Ast.Constant "AOT_exists_unique")
1634 [parseEllipseList "_AOT_vars" ctx [a,b],c]),
1635 (\<^syntax_const>‹_AOT_exists_unique›,
1636 AOT_restricted_binder
1637 \<^const_name>‹AOT_exists_unique›
1638 \<^const_syntax>‹AOT_conj›)]›
1639print_translation‹AOT_syntax_print_translations [
1640 AOT_preserve_binder_abs_tr'
1641 \<^const_syntax>‹AOT_exists_unique›
1642 \<^syntax_const>‹_AOT_exists_unique›
1643 (\<^syntax_const>‹_AOT_exists_unique_ellipse›, true)
1644 \<^const_name>‹AOT_conj›,
1645 AOT_binder_trans
1646 @{theory}
1647 @{binding "AOT_exists_unique_binder"}
1648 \<^syntax_const>‹_AOT_exists_unique›
1649]›
1650
1651
1652context AOT_meta_syntax
1653begin
1654notation AOT_exists_unique (binder "❙∃❙!" 20)
1655end
1656context AOT_no_meta_syntax
1657begin
1658no_notation AOT_exists_unique (binder "❙∃❙!" 20)
1659end
1660
1661AOT_theorem "uniqueness:2": ‹∃!α φ{α} ≡ ∃α∀β(φ{β} ≡ β = α)›
1662proof(rule "≡I"; rule "→I")
1663 AOT_assume ‹∃!α φ{α}›
1664 AOT_hence ‹∃α (φ{α} & ∀β (φ{β} → β = α))›
1665 using "uniqueness:1" "≡⇩d⇩fE" by blast
1666 then AOT_obtain α where ‹φ{α} & ∀β (φ{β} → β = α)›
1667 using "instantiation"[rotated] by blast
1668 AOT_hence ‹∀β(φ{β} ≡ β = α)›
1669 using "term-out:3" "≡E" by blast
1670 AOT_thus ‹∃α∀β(φ{β} ≡ β = α)›
1671 using "∃I" by fast
1672next
1673 AOT_assume ‹∃α∀β(φ{β} ≡ β = α)›
1674 then AOT_obtain α where ‹∀β (φ{β} ≡ β = α)›
1675 using "instantiation"[rotated] by blast
1676 AOT_hence ‹φ{α} & ∀β (φ{β} → β = α)›
1677 using "term-out:3" "≡E" by blast
1678 AOT_hence ‹∃α (φ{α} & ∀β (φ{β} → β = α))›
1679 using "∃I" by fast
1680 AOT_thus ‹∃!α φ{α}›
1681 using "uniqueness:1" "≡⇩d⇩fI" by blast
1682qed
1683
1684AOT_theorem "uni-most": ‹∃!α φ{α} → ∀β∀γ((φ{β} & φ{γ}) → β = γ)›
1685proof(rule "→I"; rule GEN; rule GEN; rule "→I")
1686 fix β γ
1687 AOT_assume ‹∃!α φ{α}›
1688 AOT_hence ‹∃α∀β(φ{β} ≡ β = α)›
1689 using "uniqueness:2" "≡E" by blast
1690 then AOT_obtain α where ‹∀β(φ{β} ≡ β = α)›
1691 using "instantiation"[rotated] by blast
1692 moreover AOT_assume ‹φ{β} & φ{γ}›
1693 ultimately AOT_have ‹β = α› and ‹γ = α›
1694 using "∀E"(2) "&E" "≡E"(1,2) by blast+
1695 AOT_thus ‹β = γ›
1696 by (metis "rule=E" "id-eq:2" "→E")
1697qed
1698
1699AOT_theorem "nec-exist-!": ‹∀α(φ{α} → □φ{α}) → (∃!α φ{α} → ∃!α □φ{α})›
1700proof (rule "→I"; rule "→I")
1701 AOT_assume a: ‹∀α(φ{α} → □φ{α})›
1702 AOT_assume ‹∃!α φ{α}›
1703 AOT_hence ‹∃α (φ{α} & ∀β (φ{β} → β = α))›
1704 using "uniqueness:1" "≡⇩d⇩fE" by blast
1705 then AOT_obtain α where ξ: ‹φ{α} & ∀β (φ{β} → β = α)›
1706 using "instantiation"[rotated] by blast
1707 AOT_have ‹□φ{α}›
1708 using ξ a "&E" "∀E" "→E" by fast
1709 moreover AOT_have ‹∀β (□φ{β} → β = α)›
1710 apply (rule GEN; rule "→I")
1711 using ξ[THEN "&E"(2), THEN "∀E"(2), THEN "→E"]
1712 "qml:2"[axiom_inst, THEN "→E"] by blast
1713 ultimately AOT_have ‹(□φ{α} & ∀β (□φ{β} → β = α))›
1714 using "&I" by blast
1715 AOT_thus ‹∃!α □φ{α}›
1716 using "uniqueness:1" "≡⇩d⇩fI" "∃I" by fast
1717qed
1718
1719subsection‹The Theory of Actuality and Descriptions›
1720text‹\label{PLM: 9.8}›
1721
1722AOT_theorem "act-cond": ‹❙𝒜(φ → ψ) → (❙𝒜φ → ❙𝒜ψ)›
1723 using "→I" "≡E"(1) "logic-actual-nec:2"[axiom_inst] by blast
1724
1725AOT_theorem "nec-imp-act": ‹□φ → ❙𝒜φ›
1726 by (metis "act-cond" "contraposition:1[2]" "≡E"(4)
1727 "qml:2"[THEN act_closure, axiom_inst]
1728 "qml-act:2"[axiom_inst] RAA(1) "→E" "→I")
1729
1730AOT_theorem "act-conj-act:1": ‹❙𝒜(❙𝒜φ → φ)›
1731 using "→I" "≡E"(2) "logic-actual-nec:2"[axiom_inst]
1732 "logic-actual-nec:4"[axiom_inst] by blast
1733
1734AOT_theorem "act-conj-act:2": ‹❙𝒜(φ → ❙𝒜φ)›
1735 by (metis "→I" "≡E"(2, 4) "logic-actual-nec:2"[axiom_inst]
1736 "logic-actual-nec:4"[axiom_inst] RAA(1))
1737
1738AOT_theorem "act-conj-act:3": ‹(❙𝒜φ & ❙𝒜ψ) → ❙𝒜(φ & ψ)›
1739proof -
1740 AOT_have ‹□(φ → (ψ → (φ & ψ)))›
1741 by (rule RN) (fact Adjunction)
1742 AOT_hence ‹❙𝒜(φ → (ψ → (φ & ψ)))›
1743 using "nec-imp-act" "→E" by blast
1744 AOT_hence ‹❙𝒜φ → ❙𝒜(ψ → (φ & ψ))›
1745 using "act-cond" "→E" by blast
1746 moreover AOT_have ‹❙𝒜(ψ → (φ & ψ)) → (❙𝒜ψ → ❙𝒜(φ & ψ))›
1747 by (fact "act-cond")
1748 ultimately AOT_have ‹❙𝒜φ → (❙𝒜ψ → ❙𝒜(φ & ψ))›
1749 using "→I" "→E" by metis
1750 AOT_thus ‹(❙𝒜φ & ❙𝒜ψ) → ❙𝒜(φ & ψ)›
1751 by (metis Importation "→E")
1752qed
1753
1754AOT_theorem "act-conj-act:4": ‹❙𝒜(❙𝒜φ ≡ φ)›
1755proof -
1756 AOT_have ‹(❙𝒜(❙𝒜φ → φ) & ❙𝒜(φ → ❙𝒜φ)) → ❙𝒜((❙𝒜φ → φ) & (φ → ❙𝒜φ))›
1757 by (fact "act-conj-act:3")
1758 moreover AOT_have ‹❙𝒜(❙𝒜φ → φ) & ❙𝒜(φ → ❙𝒜φ)›
1759 using "&I" "act-conj-act:1" "act-conj-act:2" by simp
1760 ultimately AOT_have ζ: ‹❙𝒜((❙𝒜φ → φ) & (φ → ❙𝒜φ))›
1761 using "→E" by blast
1762 AOT_have ‹❙𝒜(((❙𝒜φ → φ) & (φ → ❙𝒜φ)) → (❙𝒜φ ≡ φ))›
1763 using "conventions:3"[THEN "df-rules-formulas[2]",
1764 THEN act_closure, axiom_inst] by blast
1765 AOT_hence ‹❙𝒜((❙𝒜φ → φ) & (φ → ❙𝒜φ)) → ❙𝒜(❙𝒜φ ≡ φ)›
1766 using "act-cond" "→E" by blast
1767 AOT_thus ‹❙𝒜(❙𝒜φ ≡ φ)› using ζ "→E" by blast
1768qed
1769
1770
1771inductive arbitrary_actualization for φ where
1772 ‹arbitrary_actualization φ «❙𝒜φ»›
1773| ‹arbitrary_actualization φ «❙𝒜ψ»› if ‹arbitrary_actualization φ ψ›
1774declare arbitrary_actualization.cases[AOT]
1775 arbitrary_actualization.induct[AOT]
1776 arbitrary_actualization.simps[AOT]
1777 arbitrary_actualization.intros[AOT]
1778syntax arbitrary_actualization :: ‹φ' ⇒ φ' ⇒ AOT_prop›
1779 ("ARBITRARY'_ACTUALIZATION'(_,_')")
1780
1781notepad
1782begin
1783 AOT_modally_strict {
1784 fix φ
1785 AOT_have ‹ARBITRARY_ACTUALIZATION(❙𝒜φ ≡ φ, ❙𝒜(❙𝒜φ ≡ φ))›
1786 using AOT_PLM.arbitrary_actualization.intros by metis
1787 AOT_have ‹ARBITRARY_ACTUALIZATION(❙𝒜φ ≡ φ, ❙𝒜❙𝒜(❙𝒜φ ≡ φ))›
1788 using AOT_PLM.arbitrary_actualization.intros by metis
1789 AOT_have ‹ARBITRARY_ACTUALIZATION(❙𝒜φ ≡ φ, ❙𝒜❙𝒜❙𝒜(❙𝒜φ ≡ φ))›
1790 using AOT_PLM.arbitrary_actualization.intros by metis
1791 }
1792end
1793
1794
1795AOT_theorem "closure-act:1":
1796 assumes ‹ARBITRARY_ACTUALIZATION(❙𝒜φ ≡ φ, ψ)›
1797 shows ‹ψ›
1798using assms proof(induct)
1799 case 1
1800 AOT_show ‹❙𝒜(❙𝒜φ ≡ φ)›
1801 by (simp add: "act-conj-act:4")
1802next
1803 case (2 ψ)
1804 AOT_thus ‹❙𝒜ψ›
1805 by (metis arbitrary_actualization.simps "≡E"(1)
1806 "logic-actual-nec:4"[axiom_inst])
1807qed
1808
1809AOT_theorem "closure-act:2": ‹∀α ❙𝒜(❙𝒜φ{α} ≡ φ{α})›
1810 by (simp add: "act-conj-act:4" "∀I")
1811
1812AOT_theorem "closure-act:3": ‹❙𝒜∀α ❙𝒜(❙𝒜φ{α} ≡ φ{α})›
1813 by (metis (no_types, lifting) "act-conj-act:4" "≡E"(1,2) "∀I"
1814 "logic-actual-nec:3"[axiom_inst]
1815 "logic-actual-nec:4"[axiom_inst])
1816
1817AOT_theorem "closure-act:4": ‹❙𝒜∀α⇩1...∀α⇩n ❙𝒜(❙𝒜φ{α⇩1...α⇩n} ≡ φ{α⇩1...α⇩n})›
1818 using "closure-act:3" .
1819
1820AOT_act_theorem "RA[1]":
1821 assumes ‹❙⊢ φ›
1822 shows ‹❙⊢ ❙𝒜φ›
1823
1826 using "¬¬E" assms "≡E"(3) "logic-actual"[act_axiom_inst]
1827 "logic-actual-nec:1"[axiom_inst] "modus-tollens:2" by blast
1828AOT_theorem "RA[2]":
1829 assumes ‹❙⊢⇩□ φ›
1830 shows ‹❙⊢⇩□ ❙𝒜φ›
1831
1833 using RN assms "nec-imp-act" "vdash-properties:5" by blast
1834AOT_theorem "RA[3]":
1835 assumes ‹Γ ❙⊢⇩□ φ›
1836 shows ‹❙𝒜Γ ❙⊢⇩□ ❙𝒜φ›
1837 text‹This rule is only derivable from the semantics,
1838 but apparently no proof actually relies on it.
1839 If this turns out to be required, it is valid to derive it from the
1840 semantics just like RN, but we refrain from doing so, unless necessary.›
1841
1842 oops
1843
1844AOT_act_theorem "ANeg:1": ‹¬❙𝒜φ ≡ ¬φ›
1845 by (simp add: "RA[1]" "contraposition:1[1]" "deduction-theorem"
1846 "≡I" "logic-actual"[act_axiom_inst])
1847
1848AOT_act_theorem "ANeg:2": ‹¬❙𝒜¬φ ≡ φ›
1849 using "ANeg:1" "≡I" "≡E"(5) "useful-tautologies:1"
1850 "useful-tautologies:2" by blast
1851
1852AOT_theorem "Act-Basic:1": ‹❙𝒜φ ∨ ❙𝒜¬φ›
1853 by (meson "∨I"(1,2) "≡E"(2) "logic-actual-nec:1"[axiom_inst] "raa-cor:1")
1854
1855AOT_theorem "Act-Basic:2": ‹❙𝒜(φ & ψ) ≡ (❙𝒜φ & ❙𝒜ψ)›
1856proof (rule "≡I"; rule "→I")
1857 AOT_assume ‹❙𝒜(φ & ψ)›
1858 moreover AOT_have ‹❙𝒜((φ & ψ) → φ)›
1859 by (simp add: "RA[2]" "Conjunction Simplification"(1))
1860 moreover AOT_have ‹❙𝒜((φ & ψ) → ψ)›
1861 by (simp add: "RA[2]" "Conjunction Simplification"(2))
1862 ultimately AOT_show ‹❙𝒜φ & ❙𝒜ψ›
1863 using "act-cond"[THEN "→E", THEN "→E"] "&I" by metis
1864next
1865 AOT_assume ‹❙𝒜φ & ❙𝒜ψ›
1866 AOT_thus ‹❙𝒜(φ & ψ)›
1867 using "act-conj-act:3" "vdash-properties:6" by blast
1868qed
1869
1870AOT_theorem "Act-Basic:3": ‹❙𝒜(φ ≡ ψ) ≡ (❙𝒜(φ → ψ) & ❙𝒜(ψ → φ))›
1871proof (rule "≡I"; rule "→I")
1872 AOT_assume ‹❙𝒜(φ ≡ ψ)›
1873 moreover AOT_have ‹❙𝒜((φ ≡ ψ) → (φ → ψ))›
1874 by (simp add: "RA[2]" "deduction-theorem" "≡E"(1))
1875 moreover AOT_have ‹❙𝒜((φ ≡ ψ) → (ψ → φ))›
1876 by (simp add: "RA[2]" "deduction-theorem" "≡E"(2))
1877 ultimately AOT_show ‹❙𝒜(φ → ψ) & ❙𝒜(ψ → φ)›
1878 using "act-cond"[THEN "→E", THEN "→E"] "&I" by metis
1879next
1880 AOT_assume ‹❙𝒜(φ → ψ) & ❙𝒜(ψ → φ)›
1881 AOT_hence ‹❙𝒜((φ → ψ) & (ψ → φ))›
1882 by (metis "act-conj-act:3" "vdash-properties:10")
1883 moreover AOT_have ‹❙𝒜(((φ → ψ) & (ψ → φ)) → (φ ≡ ψ))›
1884 by (simp add: "conventions:3" "RA[2]" "df-rules-formulas[2]"
1885 "vdash-properties:1[2]")
1886 ultimately AOT_show ‹❙𝒜(φ ≡ ψ)›
1887 using "act-cond"[THEN "→E", THEN "→E"] by metis
1888qed
1889
1890AOT_theorem "Act-Basic:4": ‹(❙𝒜(φ → ψ) & ❙𝒜(ψ → φ)) ≡ (❙𝒜φ ≡ ❙𝒜ψ)›
1891proof (rule "≡I"; rule "→I")
1892 AOT_assume 0: ‹❙𝒜(φ → ψ) & ❙𝒜(ψ → φ)›
1893 AOT_show ‹❙𝒜φ ≡ ❙𝒜ψ›
1894 using 0 "&E" "act-cond"[THEN "→E", THEN "→E"] "≡I" "→I" by metis
1895next
1896 AOT_assume ‹❙𝒜φ ≡ ❙𝒜ψ›
1897 AOT_thus ‹❙𝒜(φ → ψ) & ❙𝒜(ψ → φ)›
1898 by (metis "→I" "logic-actual-nec:2"[axiom_inst] "≡E"(1,2) "&I")
1899qed
1900
1901AOT_theorem "Act-Basic:5": ‹❙𝒜(φ ≡ ψ) ≡ (❙𝒜φ ≡ ❙𝒜ψ)›
1902 using "Act-Basic:3" "Act-Basic:4" "≡E"(5) by blast
1903
1904AOT_theorem "Act-Basic:6": ‹❙𝒜φ ≡ □❙𝒜φ›
1905 by (simp add: "≡I" "qml:2"[axiom_inst] "qml-act:1"[axiom_inst])
1906
1907AOT_theorem "Act-Basic:7": ‹❙𝒜□φ → □❙𝒜φ›
1908 by (metis "Act-Basic:6" "→I" "→E" "≡E"(1,2) "nec-imp-act"
1909 "qml-act:2"[axiom_inst])
1910
1911AOT_theorem "Act-Basic:8": ‹□φ → □❙𝒜φ›
1912 using "Hypothetical Syllogism" "nec-imp-act" "qml-act:1"[axiom_inst] by blast
1913
1914AOT_theorem "Act-Basic:9": ‹❙𝒜(φ ∨ ψ) ≡ (❙𝒜φ ∨ ❙𝒜ψ)›
1915proof (rule "≡I"; rule "→I")
1916 AOT_assume ‹❙𝒜(φ ∨ ψ)›
1917 AOT_thus ‹❙𝒜φ ∨ ❙𝒜ψ›
1918 proof (rule "raa-cor:3")
1919 AOT_assume ‹¬(❙𝒜φ ∨ ❙𝒜ψ)›
1920 AOT_hence ‹¬❙𝒜φ & ¬❙𝒜ψ›
1921 by (metis "≡E"(1) "oth-class-taut:5:d")
1922 AOT_hence ‹❙𝒜¬φ & ❙𝒜¬ψ›
1923 using "logic-actual-nec:1"[axiom_inst, THEN "≡E"(2)] "&E" "&I" by metis
1924 AOT_hence ‹❙𝒜(¬φ & ¬ψ)›
1925 using "≡E" "Act-Basic:2" by metis
1926 moreover AOT_have ‹❙𝒜((¬φ & ¬ψ) ≡ ¬(φ ∨ ψ))›
1927 using "RA[2]" "≡E"(6) "oth-class-taut:3:a" "oth-class-taut:5:d" by blast
1928 moreover AOT_have ‹❙𝒜(¬φ & ¬ψ) ≡ ❙𝒜(¬(φ ∨ ψ))›
1929 using calculation(2) by (metis "Act-Basic:5" "≡E"(1))
1930 ultimately AOT_have ‹❙𝒜(¬(φ ∨ ψ))› using "≡E" by blast
1931 AOT_thus ‹¬❙𝒜(φ ∨ ψ)›
1932 using "logic-actual-nec:1"[axiom_inst, THEN "≡E"(1)] by auto
1933 qed
1934next
1935 AOT_assume ‹❙𝒜φ ∨ ❙𝒜ψ›
1936 AOT_thus ‹❙𝒜(φ ∨ ψ)›
1937 by (meson "RA[2]" "act-cond" "∨I"(1) "∨E"(1) "Disjunction Addition"(1,2))
1938qed
1939
1940AOT_theorem "Act-Basic:10": ‹❙𝒜∃α φ{α} ≡ ∃α ❙𝒜φ{α}›
1941proof -
1942 AOT_have θ: ‹¬❙𝒜∀α ¬φ{α} ≡ ¬∀α ❙𝒜¬φ{α}›
1943 by (rule "oth-class-taut:4:b"[THEN "≡E"(1)])
1944 (metis "logic-actual-nec:3"[axiom_inst])
1945 AOT_have ξ: ‹¬∀α ❙𝒜¬φ{α} ≡ ¬∀α ¬❙𝒜φ{α}›
1946 by (rule "oth-class-taut:4:b"[THEN "≡E"(1)])
1947 (rule "logic-actual-nec:1"[THEN universal_closure,
1948 axiom_inst, THEN "cqt-basic:3"[THEN "→E"]])
1949 AOT_have ‹❙𝒜(∃α φ{α}) ≡ ❙𝒜(¬∀α ¬φ{α})›
1950 using "conventions:4"[THEN "df-rules-formulas[1]",
1951 THEN act_closure, axiom_inst]
1952 "conventions:4"[THEN "df-rules-formulas[2]",
1953 THEN act_closure, axiom_inst]
1954 "Act-Basic:4"[THEN "≡E"(1)] "&I" "Act-Basic:5"[THEN "≡E"(2)] by metis
1955 also AOT_have ‹… ≡ ¬❙𝒜∀α ¬φ{α}›
1956 by (simp add: "logic-actual-nec:1" "vdash-properties:1[2]")
1957 also AOT_have ‹… ≡ ¬∀α ❙𝒜 ¬φ{α}› using θ by blast
1958 also AOT_have ‹… ≡ ¬∀α ¬❙𝒜 φ{α}› using ξ by blast
1959 also AOT_have ‹… ≡ ∃α ❙𝒜 φ{α}›
1960 using "conventions:4"[THEN "≡Df"] by (metis "≡E"(6) "oth-class-taut:3:a")
1961 finally AOT_show ‹❙𝒜∃α φ{α} ≡ ∃α ❙𝒜φ{α}› .
1962qed
1963
1964
1965AOT_theorem "Act-Basic:11":
1966 ‹❙𝒜∀α(φ{α} ≡ ψ{α}) ≡ ∀α(❙𝒜φ{α} ≡ ❙𝒜ψ{α})›
1967proof(rule "≡I"; rule "→I")
1968 AOT_assume ‹❙𝒜∀α(φ{α} ≡ ψ{α})›
1969 AOT_hence ‹∀α❙𝒜(φ{α} ≡ ψ{α})›
1970 using "logic-actual-nec:3"[axiom_inst, THEN "≡E"(1)] by blast
1971 AOT_hence ‹❙𝒜(φ{α} ≡ ψ{α})› for α using "∀E" by blast
1972 AOT_hence ‹❙𝒜φ{α} ≡ ❙𝒜ψ{α}› for α by (metis "Act-Basic:5" "≡E"(1))
1973 AOT_thus ‹∀α(❙𝒜φ{α} ≡ ❙𝒜ψ{α})› by (rule "∀I")
1974next
1975 AOT_assume ‹∀α(❙𝒜φ{α} ≡ ❙𝒜ψ{α})›
1976 AOT_hence ‹❙𝒜φ{α} ≡ ❙𝒜ψ{α}› for α using "∀E" by blast
1977 AOT_hence ‹❙𝒜(φ{α} ≡ ψ{α})› for α by (metis "Act-Basic:5" "≡E"(2))
1978 AOT_hence ‹∀α ❙𝒜(φ{α} ≡ ψ{α})› by (rule "∀I")
1979 AOT_thus ‹❙𝒜∀α(φ{α} ≡ ψ{α})›
1980 using "logic-actual-nec:3"[axiom_inst, THEN "≡E"(2)] by fast
1981qed
1982
1983AOT_act_theorem "act-quant-uniq":
1984 ‹∀β(❙𝒜φ{β} ≡ β = α) ≡ ∀β(φ{β} ≡ β = α)›
1985proof(rule "≡I"; rule "→I")
1986 AOT_assume ‹∀β(❙𝒜φ{β} ≡ β = α)›
1987 AOT_hence ‹❙𝒜φ{β} ≡ β = α› for β using "∀E" by blast
1988 AOT_hence ‹φ{β} ≡ β = α› for β
1989 using "≡I" "→I" "RA[1]" "≡E"(1,2) "logic-actual"[act_axiom_inst] "→E"
1990 by metis
1991 AOT_thus ‹∀β(φ{β} ≡ β = α)› by (rule "∀I")
1992next
1993 AOT_assume ‹∀β(φ{β} ≡ β = α)›
1994 AOT_hence ‹φ{β} ≡ β = α› for β using "∀E" by blast
1995 AOT_hence ‹❙𝒜φ{β} ≡ β = α› for β
1996 using "≡I" "→I" "RA[1]" "≡E"(1,2) "logic-actual"[act_axiom_inst] "→E"
1997 by metis
1998 AOT_thus ‹∀β(❙𝒜φ{β} ≡ β = α)› by (rule "∀I")
1999qed
2000
2001AOT_act_theorem "fund-cont-desc": ‹x = ❙ιx(φ{x}) ≡ ∀z(φ{z} ≡ z = x)›
2002 using descriptions[axiom_inst] "act-quant-uniq" "≡E"(5) by fast
2003
2004AOT_act_theorem hintikka: ‹x = ❙ιx(φ{x}) ≡ (φ{x} & ∀z (φ{z} → z = x))›
2005 using "Commutativity of ≡"[THEN "≡E"(1)] "term-out:3"
2006 "fund-cont-desc" "≡E"(5) by blast
2007
2008
2009locale russell_axiom =
2010 fixes ψ
2011 assumes ψ_denotes_asm: "[v ⊨ ψ{κ}] ⟹ [v ⊨ κ↓]"
2012begin
2013AOT_act_theorem "russell-axiom":
2014 ‹ψ{❙ιx φ{x}} ≡ ∃x(φ{x} & ∀z(φ{z} → z = x) & ψ{x})›
2015proof -
2016 AOT_have b: ‹∀x (x = ❙ιx φ{x} ≡ (φ{x} & ∀z(φ{z} → z = x)))›
2017 using hintikka "∀I" by fast
2018 show ?thesis
2019 proof(rule "≡I"; rule "→I")
2020 AOT_assume c: ‹ψ{❙ιx φ{x}}›
2021 AOT_hence d: ‹❙ιx φ{x}↓›
2022 using ψ_denotes_asm by blast
2023 AOT_hence ‹∃y (y = ❙ιx φ{x})›
2024 by (metis "rule=I:1" "existential:1")
2025 then AOT_obtain a where a_def: ‹a = ❙ιx φ{x}›
2026 using "instantiation"[rotated] by blast
2027 moreover AOT_have ‹a = ❙ιx φ{x} ≡ (φ{a} & ∀z(φ{z} → z = a))›
2028 using b "∀E" by blast
2029 ultimately AOT_have ‹φ{a} & ∀z(φ{z} → z = a)›
2030 using "≡E" by blast
2031 moreover AOT_have ‹ψ{a}›
2032 proof -
2033 AOT_have 1: ‹∀x∀y(x = y → y = x)›
2034 by (simp add: "id-eq:2" "universal-cor")
2035 AOT_have ‹a = ❙ιx φ{x} → ❙ιx φ{x} = a›
2036 by (rule "∀E"(1)[where τ="«❙ιx φ{x}»"]; rule "∀E"(2)[where β=a])
2037 (auto simp: 1 d "universal-cor")
2038 AOT_thus ‹ψ{a}›
2039 using a_def c "rule=E" "→E" by blast
2040 qed
2041 ultimately AOT_have ‹φ{a} & ∀z(φ{z} → z = a) & ψ{a}› by (rule "&I")
2042 AOT_thus ‹∃x(φ{x} & ∀z(φ{z} → z = x) & ψ{x})› by (rule "∃I")
2043 next
2044 AOT_assume ‹∃x(φ{x} & ∀z(φ{z} → z = x) & ψ{x})›
2045 then AOT_obtain b where g: ‹φ{b} & ∀z(φ{z} → z = b) & ψ{b}›
2046 using "instantiation"[rotated] by blast
2047 AOT_hence h: ‹b = ❙ιx φ{x} ≡ (φ{b} & ∀z(φ{z} → z = b))›
2048 using b "∀E" by blast
2049 AOT_have ‹φ{b} & ∀z(φ{z} → z = b)› and j: ‹ψ{b}›
2050 using g "&E" by blast+
2051 AOT_hence ‹b = ❙ιx φ{x}› using h "≡E" by blast
2052 AOT_thus ‹ψ{❙ιx φ{x}}› using j "rule=E" by blast
2053 qed
2054qed
2055end
2056
2057interpretation "russell-axiom[exe,1]": russell_axiom ‹λ κ . «[Π]κ»›
2058 by standard (metis "cqt:5:a[1]"[axiom_inst, THEN "→E"] "&E"(2))
2059interpretation "russell-axiom[exe,2,1,1]": russell_axiom ‹λ κ . «[Π]κκ'»›
2060 by standard (metis "cqt:5:a[2]"[axiom_inst, THEN "→E"] "&E")
2061interpretation "russell-axiom[exe,2,1,2]": russell_axiom ‹λ κ . «[Π]κ'κ»›
2062 by standard (metis "cqt:5:a[2]"[axiom_inst, THEN "→E"] "&E"(2))
2063interpretation "russell-axiom[exe,2,2]": russell_axiom ‹λ κ . «[Π]κκ»›
2064 by standard (metis "cqt:5:a[2]"[axiom_inst, THEN "→E"] "&E"(2))
2065interpretation "russell-axiom[exe,3,1,1]": russell_axiom ‹λ κ . «[Π]κκ'κ''»›
2066 by standard (metis "cqt:5:a[3]"[axiom_inst, THEN "→E"] "&E")
2067interpretation "russell-axiom[exe,3,1,2]": russell_axiom ‹λ κ . «[Π]κ'κκ''»›
2068 by standard (metis "cqt:5:a[3]"[axiom_inst, THEN "→E"] "&E")
2069interpretation "russell-axiom[exe,3,1,3]": russell_axiom ‹λ κ . «[Π]κ'κ''κ»›
2070 by standard (metis "cqt:5:a[3]"[axiom_inst, THEN "→E"] "&E"(2))
2071interpretation "russell-axiom[exe,3,2,1]": russell_axiom ‹λ κ . «[Π]κκκ'»›
2072 by standard (metis "cqt:5:a[3]"[axiom_inst, THEN "→E"] "&E")
2073interpretation "russell-axiom[exe,3,2,2]": russell_axiom ‹λ κ . «[Π]κκ'κ»›
2074 by standard (metis "cqt:5:a[3]"[axiom_inst, THEN "→E"] "&E"(2))
2075interpretation "russell-axiom[exe,3,2,3]": russell_axiom ‹λ κ . «[Π]κ'κκ»›
2076 by standard (metis "cqt:5:a[3]"[axiom_inst, THEN "→E"] "&E"(2))
2077interpretation "russell-axiom[exe,3,3]": russell_axiom ‹λ κ . «[Π]κκκ»›
2078 by standard (metis "cqt:5:a[3]"[axiom_inst, THEN "→E"] "&E"(2))
2079
2080interpretation "russell-axiom[enc,1]": russell_axiom ‹λ κ . «κ[Π]»›
2081 by standard (metis "cqt:5:b[1]"[axiom_inst, THEN "→E"] "&E"(2))
2082interpretation "russell-axiom[enc,2,1]": russell_axiom ‹λ κ . «κκ'[Π]»›
2083 by standard (metis "cqt:5:b[2]"[axiom_inst, THEN "→E"] "&E")
2084interpretation "russell-axiom[enc,2,2]": russell_axiom ‹λ κ . «κ'κ[Π]»›
2085 by standard (metis "cqt:5:b[2]"[axiom_inst, THEN "→E"] "&E"(2))
2086interpretation "russell-axiom[enc,2,3]": russell_axiom ‹λ κ . «κκ[Π]»›
2087 by standard (metis "cqt:5:b[2]"[axiom_inst, THEN "→E"] "&E"(2))
2088interpretation "russell-axiom[enc,3,1,1]": russell_axiom ‹λ κ . «κκ'κ''[Π]»›
2089 by standard (metis "cqt:5:b[3]"[axiom_inst, THEN "→E"] "&E")
2090interpretation "russell-axiom[enc,3,1,2]": russell_axiom ‹λ κ . «κ'κκ''[Π]»›
2091 by standard (metis "cqt:5:b[3]"[axiom_inst, THEN "→E"] "&E")
2092interpretation "russell-axiom[enc,3,1,3]": russell_axiom ‹λ κ . «κ'κ''κ[Π]»›
2093 by standard (metis "cqt:5:b[3]"[axiom_inst, THEN "→E"] "&E"(2))
2094interpretation "russell-axiom[enc,3,2,1]": russell_axiom ‹λ κ . «κκκ'[Π]»›
2095 by standard (metis "cqt:5:b[3]"[axiom_inst, THEN "→E"] "&E")
2096interpretation "russell-axiom[enc,3,2,2]": russell_axiom ‹λ κ . «κκ'κ[Π]»›
2097 by standard (metis "cqt:5:b[3]"[axiom_inst, THEN "→E"] "&E"(2))
2098interpretation "russell-axiom[enc,3,2,3]": russell_axiom ‹λ κ . «κ'κκ[Π]»›
2099 by standard (metis "cqt:5:b[3]"[axiom_inst, THEN "→E"] "&E"(2))
2100interpretation "russell-axiom[enc,3,3]": russell_axiom ‹λ κ . «κκκ[Π]»›
2101 by standard (metis "cqt:5:b[3]"[axiom_inst, THEN "→E"] "&E"(2))
2102
2103AOT_act_theorem "!-exists:1": ‹❙ιx φ{x}↓ ≡ ∃!x φ{x}›
2104proof(rule "≡I"; rule "→I")
2105 AOT_assume ‹❙ιx φ{x}↓›
2106 AOT_hence ‹∃y (y = ❙ιx φ{x})› by (metis "rule=I:1" "existential:1")
2107 then AOT_obtain a where ‹a = ❙ιx φ{x}›
2108 using "instantiation"[rotated] by blast
2109 AOT_hence ‹φ{a} & ∀z (φ{z} → z = a)›
2110 using hintikka "≡E" by blast
2111 AOT_hence ‹∃x (φ{x} & ∀z (φ{z} → z = x))›
2112 by (rule "∃I")
2113 AOT_thus ‹∃!x φ{x}›
2114 using "uniqueness:1"[THEN "≡⇩d⇩fI"] by blast
2115next
2116 AOT_assume ‹∃!x φ{x}›
2117 AOT_hence ‹∃x (φ{x} & ∀z (φ{z} → z = x))›
2118 using "uniqueness:1"[THEN "≡⇩d⇩fE"] by blast
2119 then AOT_obtain b where ‹φ{b} & ∀z (φ{z} → z = b)›
2120 using "instantiation"[rotated] by blast
2121 AOT_hence ‹b = ❙ιx φ{x}›
2122 using hintikka "≡E" by blast
2123 AOT_thus ‹❙ιx φ{x}↓›
2124 by (metis "t=t-proper:2" "vdash-properties:6")
2125qed
2126
2127AOT_act_theorem "!-exists:2": ‹∃y(y=❙ιx φ{x}) ≡ ∃!x φ{x}›
2128 using "!-exists:1" "free-thms:1" "≡E"(6) by blast
2129
2130AOT_act_theorem "y-in:1": ‹x = ❙ιx φ{x} → φ{x}›
2131 using "&E"(1) "→I" hintikka "≡E"(1) by blast
2132
2133
2134AOT_act_theorem "y-in:2": ‹z = ❙ιx φ{x} → φ{z}› using "y-in:1".
2135
2136AOT_act_theorem "y-in:3": ‹❙ιx φ{x}↓ → φ{❙ιx φ{x}}›
2137proof(rule "→I")
2138 AOT_assume ‹❙ιx φ{x}↓›
2139 AOT_hence ‹∃y (y = ❙ιx φ{x})›
2140 by (metis "rule=I:1" "existential:1")
2141 then AOT_obtain a where ‹a = ❙ιx φ{x}›
2142 using "instantiation"[rotated] by blast
2143 moreover AOT_have ‹φ{a}›
2144 using calculation hintikka "≡E"(1) "&E" by blast
2145 ultimately AOT_show ‹φ{❙ιx φ{x}}› using "rule=E" by blast
2146qed
2147
2148AOT_act_theorem "y-in:4": ‹∃y (y = ❙ιx φ{x}) → φ{❙ιx φ{x}}›
2149 using "y-in:3"[THEN "→E"] "free-thms:1"[THEN "≡E"(2)] "→I" by blast
2150
2151
2152AOT_theorem "act-quant-nec":
2153 ‹∀β (❙𝒜φ{β} ≡ β = α) ≡ ∀β(❙𝒜❙𝒜φ{β} ≡ β = α)›
2154proof(rule "≡I"; rule "→I")
2155 AOT_assume ‹∀β (❙𝒜φ{β} ≡ β = α)›
2156 AOT_hence ‹❙𝒜φ{β} ≡ β = α› for β using "∀E" by blast
2157 AOT_hence ‹❙𝒜❙𝒜φ{β} ≡ β = α› for β
2158 by (metis "Act-Basic:5" "act-conj-act:4" "≡E"(1) "≡E"(5))
2159 AOT_thus ‹∀β(❙𝒜❙𝒜φ{β} ≡ β = α)›
2160 by (rule "∀I")
2161next
2162 AOT_assume ‹∀β(❙𝒜❙𝒜φ{β} ≡ β = α)›
2163 AOT_hence ‹❙𝒜❙𝒜φ{β} ≡ β = α› for β using "∀E" by blast
2164 AOT_hence ‹❙𝒜φ{β} ≡ β = α› for β
2165 by (metis "Act-Basic:5" "act-conj-act:4" "≡E"(1) "≡E"(6))
2166 AOT_thus ‹∀β (❙𝒜φ{β} ≡ β = α)›
2167 by (rule "∀I")
2168qed
2169
2170AOT_theorem "equi-desc-descA:1": ‹x = ❙ιx φ{x} ≡ x = ❙ιx(❙𝒜φ{x})›
2171proof -
2172 AOT_have ‹x = ❙ιx φ{x} ≡ ∀z (❙𝒜φ{z} ≡ z = x)›
2173 using descriptions[axiom_inst] by blast
2174 also AOT_have ‹... ≡ ∀z (❙𝒜❙𝒜φ{z} ≡ z = x)›
2175 proof(rule "≡I"; rule "→I"; rule "∀I")
2176 AOT_assume ‹∀z (❙𝒜φ{z} ≡ z = x)›
2177 AOT_hence ‹❙𝒜φ{a} ≡ a = x› for a
2178 using "∀E" by blast
2179 AOT_thus ‹❙𝒜❙𝒜φ{a} ≡ a = x› for a
2180 by (metis "Act-Basic:5" "act-conj-act:4" "≡E"(1) "≡E"(5))
2181 next
2182 AOT_assume ‹∀z (❙𝒜❙𝒜φ{z} ≡ z = x)›
2183 AOT_hence ‹❙𝒜❙𝒜φ{a} ≡ a = x› for a
2184 using "∀E" by blast
2185 AOT_thus ‹❙𝒜φ{a} ≡ a = x› for a
2186 by (metis "Act-Basic:5" "act-conj-act:4" "≡E"(1) "≡E"(6))
2187 qed
2188 also AOT_have ‹... ≡ x = ❙ιx(❙𝒜φ{x})›
2189 using "Commutativity of ≡"[THEN "≡E"(1)] descriptions[axiom_inst] by fast
2190 finally show ?thesis .
2191qed
2192
2193AOT_theorem "equi-desc-descA:2": ‹❙ιx φ{x}↓ → ❙ιx φ{x} = ❙ιx(❙𝒜φ{x})›
2194proof(rule "→I")
2195 AOT_assume ‹❙ιx φ{x}↓›
2196 AOT_hence ‹∃y (y = ❙ιx φ{x})›
2197 by (metis "rule=I:1" "existential:1")
2198 then AOT_obtain a where ‹a = ❙ιx φ{x}›
2199 using "instantiation"[rotated] by blast
2200 moreover AOT_have ‹a = ❙ιx(❙𝒜φ{x})›
2201 using calculation "equi-desc-descA:1"[THEN "≡E"(1)] by blast
2202 ultimately AOT_show ‹❙ιx φ{x} = ❙ιx(❙𝒜φ{x})›
2203 using "rule=E" by fast
2204qed
2205
2206AOT_theorem "nec-hintikka-scheme":
2207 ‹x = ❙ιx φ{x} ≡ ❙𝒜φ{x} & ∀z(❙𝒜φ{z} → z = x)›
2208proof -
2209 AOT_have ‹x = ❙ιx φ{x} ≡ ∀z(❙𝒜φ{z} ≡ z = x)›
2210 using descriptions[axiom_inst] by blast
2211 also AOT_have ‹… ≡ (❙𝒜φ{x} & ∀z(❙𝒜φ{z} → z = x))›
2212 using "Commutativity of ≡"[THEN "≡E"(1)] "term-out:3" by fast
2213 finally show ?thesis.
2214qed
2215
2216AOT_theorem "equiv-desc-eq:1":
2217 ‹❙𝒜∀x(φ{x} ≡ ψ{x}) → ∀x (x = ❙ιx φ{x} ≡ x = ❙ιx ψ{x})›
2218proof(rule "→I"; rule "∀I")
2219 fix β
2220 AOT_assume ‹❙𝒜∀x(φ{x} ≡ ψ{x})›
2221 AOT_hence ‹❙𝒜(φ{x} ≡ ψ{x})› for x
2222 using "logic-actual-nec:3"[axiom_inst, THEN "≡E"(1)] "∀E"(2) by blast
2223 AOT_hence 0: ‹❙𝒜φ{x} ≡ ❙𝒜ψ{x}› for x
2224 by (metis "Act-Basic:5" "≡E"(1))
2225 AOT_have ‹β = ❙ιx φ{x} ≡ ❙𝒜φ{β} & ∀z(❙𝒜φ{z} → z = β)›
2226 using "nec-hintikka-scheme" by blast
2227 also AOT_have ‹... ≡ ❙𝒜ψ{β} & ∀z(❙𝒜ψ{z} → z = β)›
2228 proof (rule "≡I"; rule "→I")
2229 AOT_assume 1: ‹❙𝒜φ{β} & ∀z(❙𝒜φ{z} → z = β)›
2230 AOT_hence ‹❙𝒜φ{z} → z = β› for z
2231 using "&E" "∀E" by blast
2232 AOT_hence ‹❙𝒜ψ{z} → z = β› for z
2233 using 0 "≡E" "→I" "→E" by metis
2234 AOT_hence ‹∀z(❙𝒜ψ{z} → z = β)›
2235 using "∀I" by fast
2236 moreover AOT_have ‹❙𝒜ψ{β}›
2237 using "&E" 0[THEN "≡E"(1)] 1 by blast
2238 ultimately AOT_show ‹❙𝒜ψ{β} & ∀z(❙𝒜ψ{z} → z = β)›
2239 using "&I" by blast
2240 next
2241 AOT_assume 1: ‹❙𝒜ψ{β} & ∀z(❙𝒜ψ{z} → z = β)›
2242 AOT_hence ‹❙𝒜ψ{z} → z = β› for z
2243 using "&E" "∀E" by blast
2244 AOT_hence ‹❙𝒜φ{z} → z = β› for z
2245 using 0 "≡E" "→I" "→E" by metis
2246 AOT_hence ‹∀z(❙𝒜φ{z} → z = β)›
2247 using "∀I" by fast
2248 moreover AOT_have ‹❙𝒜φ{β}›
2249 using "&E" 0[THEN "≡E"(2)] 1 by blast
2250 ultimately AOT_show ‹❙𝒜φ{β} & ∀z(❙𝒜φ{z} → z = β)›
2251 using "&I" by blast
2252 qed
2253 also AOT_have ‹... ≡ β = ❙ιx ψ{x}›
2254 using "Commutativity of ≡"[THEN "≡E"(1)] "nec-hintikka-scheme" by blast
2255 finally AOT_show ‹β = ❙ιx φ{x} ≡ β = ❙ιx ψ{x}› .
2256qed
2257
2258AOT_theorem "equiv-desc-eq:2":
2259 ‹❙ιx φ{x}↓ & ❙𝒜∀x(φ{x} ≡ ψ{x}) → ❙ιx φ{x} = ❙ιx ψ{x}›
2260proof(rule "→I")
2261 AOT_assume ‹❙ιx φ{x}↓ & ❙𝒜∀x(φ{x} ≡ ψ{x})›
2262 AOT_hence 0: ‹∃y (y = ❙ιx φ{x})› and
2263 1: ‹∀x (x = ❙ιx φ{x} ≡ x = ❙ιx ψ{x})›
2264 using "&E" "free-thms:1"[THEN "≡E"(1)] "equiv-desc-eq:1" "→E" by blast+
2265 then AOT_obtain a where ‹a = ❙ιx φ{x}›
2266 using "instantiation"[rotated] by blast
2267 moreover AOT_have ‹a = ❙ιx ψ{x}›
2268 using calculation 1 "∀E" "≡E"(1) by fast
2269 ultimately AOT_show ‹❙ιx φ{x} = ❙ιx ψ{x}›
2270 using "rule=E" by fast
2271qed
2272
2273AOT_theorem "equiv-desc-eq:3":
2274 ‹❙ιx φ{x}↓ & □∀x(φ{x} ≡ ψ{x}) → ❙ιx φ{x} = ❙ιx ψ{x}›
2275 using "→I" "equiv-desc-eq:2"[THEN "→E", OF "&I"] "&E"
2276 "nec-imp-act"[THEN "→E"] by metis
2277
2278
2279AOT_theorem "equiv-desc-eq:4": ‹❙ιx φ{x}↓ → □❙ιx φ{x}↓›
2280proof(rule "→I")
2281 AOT_assume ‹❙ιx φ{x}↓›
2282 AOT_hence ‹∃y (y = ❙ιx φ{x})›
2283 by (metis "rule=I:1" "existential:1")
2284 then AOT_obtain a where ‹a = ❙ιx φ{x}›
2285 using "instantiation"[rotated] by blast
2286 AOT_thus ‹□❙ιx φ{x}↓›
2287 using "ex:2:a" "rule=E" by fast
2288qed
2289
2290AOT_theorem "equiv-desc-eq:5": ‹❙ιx φ{x}↓ → ∃y □(y = ❙ιx φ{x})›
2291proof(rule "→I")
2292 AOT_assume ‹❙ιx φ{x}↓›
2293 AOT_hence ‹∃y (y = ❙ιx φ{x})›
2294 by (metis "rule=I:1" "existential:1")
2295 then AOT_obtain a where ‹a = ❙ιx φ{x}›
2296 using "instantiation"[rotated] by blast
2297 AOT_hence ‹□(a = ❙ιx φ{x})›
2298 by (metis "id-nec:2" "vdash-properties:10")
2299 AOT_thus ‹∃y □(y = ❙ιx φ{x})›
2300 by (rule "∃I")
2301qed
2302
2303AOT_act_theorem "equiv-desc-eq2:1":
2304 ‹∀x (φ{x} ≡ ψ{x}) → ∀x (x = ❙ιx φ{x} ≡ x = ❙ιx ψ{x})›
2305 using "→I" "logic-actual"[act_axiom_inst, THEN "→E"]
2306 "equiv-desc-eq:1"[THEN "→E"]
2307 "RA[1]" "deduction-theorem" by blast
2308
2309AOT_act_theorem "equiv-desc-eq2:2":
2310 ‹❙ιx φ{x}↓ & ∀x (φ{x} ≡ ψ{x}) → ❙ιx φ{x} = ❙ιx ψ{x}›
2311 using "→I" "logic-actual"[act_axiom_inst, THEN "→E"]
2312 "equiv-desc-eq:2"[THEN "→E", OF "&I"]
2313 "RA[1]" "deduction-theorem" "&E" by metis
2314
2315context russell_axiom
2316begin
2317AOT_theorem "nec-russell-axiom":
2318 ‹ψ{❙ιx φ{x}} ≡ ∃x(❙𝒜φ{x} & ∀z(❙𝒜φ{z} → z = x) & ψ{x})›
2319proof -
2320 AOT_have b: ‹∀x (x = ❙ιx φ{x} ≡ (❙𝒜φ{x} & ∀z(❙𝒜φ{z} → z = x)))›
2321 using "nec-hintikka-scheme" "∀I" by fast
2322 show ?thesis
2323 proof(rule "≡I"; rule "→I")
2324 AOT_assume c: ‹ψ{❙ιx φ{x}}›
2325 AOT_hence d: ‹❙ιx φ{x}↓›
2326 using ψ_denotes_asm by blast
2327 AOT_hence ‹∃y (y = ❙ιx φ{x})›
2328 by (metis "rule=I:1" "existential:1")
2329 then AOT_obtain a where a_def: ‹a = ❙ιx φ{x}›
2330 using "instantiation"[rotated] by blast
2331 moreover AOT_have ‹a = ❙ιx φ{x} ≡ (❙𝒜φ{a} & ∀z(❙𝒜φ{z} → z = a))›
2332 using b "∀E" by blast
2333 ultimately AOT_have ‹❙𝒜φ{a} & ∀z(❙𝒜φ{z} → z = a)›
2334 using "≡E" by blast
2335 moreover AOT_have ‹ψ{a}›
2336 proof -
2337 AOT_have 1: ‹∀x∀y(x = y → y = x)›
2338 by (simp add: "id-eq:2" "universal-cor")
2339 AOT_have ‹a = ❙ιx φ{x} → ❙ιx φ{x} = a›
2340 by (rule "∀E"(1)[where τ="«❙ιx φ{x}»"]; rule "∀E"(2)[where β=a])
2341 (auto simp: d "universal-cor" 1)
2342 AOT_thus ‹ψ{a}›
2343 using a_def c "rule=E" "→E" by metis
2344 qed
2345 ultimately AOT_have ‹❙𝒜φ{a} & ∀z(❙𝒜φ{z} → z = a) & ψ{a}›
2346 by (rule "&I")
2347 AOT_thus ‹∃x(❙𝒜φ{x} & ∀z(❙𝒜φ{z} → z = x) & ψ{x})›
2348 by (rule "∃I")
2349 next
2350 AOT_assume ‹∃x(❙𝒜φ{x} & ∀z(❙𝒜φ{z} → z = x) & ψ{x})›
2351 then AOT_obtain b where g: ‹❙𝒜φ{b} & ∀z(❙𝒜φ{z} → z = b) & ψ{b}›
2352 using "instantiation"[rotated] by blast
2353 AOT_hence h: ‹b = ❙ιx φ{x} ≡ (❙𝒜φ{b} & ∀z(❙𝒜φ{z} → z = b))›
2354 using b "∀E" by blast
2355 AOT_have ‹❙𝒜φ{b} & ∀z(❙𝒜φ{z} → z = b)› and j: ‹ψ{b}›
2356 using g "&E" by blast+
2357 AOT_hence ‹b = ❙ιx φ{x}›
2358 using h "≡E" by blast
2359 AOT_thus ‹ψ{❙ιx φ{x}}›
2360 using j "rule=E" by blast
2361 qed
2362qed
2363end
2364
2365AOT_theorem "actual-desc:1": ‹❙ιx φ{x}↓ ≡ ∃!x ❙𝒜φ{x}›
2366proof (rule "≡I"; rule "→I")
2367 AOT_assume ‹❙ιx φ{x}↓›
2368 AOT_hence ‹∃y (y = ❙ιx φ{x})›
2369 by (metis "rule=I:1" "existential:1")
2370 then AOT_obtain a where ‹a = ❙ιx φ{x}›
2371 using "instantiation"[rotated] by blast
2372 moreover AOT_have ‹a = ❙ιx φ{x} ≡ ∀z(❙𝒜φ{z} ≡ z = a)›
2373 using descriptions[axiom_inst] by blast
2374 ultimately AOT_have ‹∀z(❙𝒜φ{z} ≡ z = a)›
2375 using "≡E" by blast
2376 AOT_hence ‹∃x∀z(❙𝒜φ{z} ≡ z = x)› by (rule "∃I")
2377 AOT_thus ‹∃!x ❙𝒜φ{x}›
2378 using "uniqueness:2"[THEN "≡E"(2)] by fast
2379next
2380 AOT_assume ‹∃!x ❙𝒜φ{x}›
2381 AOT_hence ‹∃x∀z(❙𝒜φ{z} ≡ z = x)›
2382 using "uniqueness:2"[THEN "≡E"(1)] by fast
2383 then AOT_obtain a where ‹∀z(❙𝒜φ{z} ≡ z = a)›
2384 using "instantiation"[rotated] by blast
2385 moreover AOT_have ‹a = ❙ιx φ{x} ≡ ∀z(❙𝒜φ{z} ≡ z = a)›
2386 using descriptions[axiom_inst] by blast
2387 ultimately AOT_have ‹a = ❙ιx φ{x}›
2388 using "≡E" by blast
2389 AOT_thus ‹❙ιx φ{x}↓›
2390 by (metis "t=t-proper:2" "vdash-properties:6")
2391qed
2392
2393AOT_theorem "actual-desc:2": ‹x = ❙ιx φ{x} → ❙𝒜φ{x}›
2394 using "&E"(1) "contraposition:1[2]" "≡E"(1) "nec-hintikka-scheme"
2395 "reductio-aa:2" "vdash-properties:9" by blast
2396
2397
2398AOT_theorem "actual-desc:3": ‹z = ❙ιx φ{x} → ❙𝒜φ{z}›
2399 using "actual-desc:2".
2400
2401AOT_theorem "actual-desc:4": ‹❙ιx φ{x}↓ → ❙𝒜φ{❙ιx φ{x}}›
2402proof(rule "→I")
2403 AOT_assume ‹❙ιx φ{x}↓›
2404 AOT_hence ‹∃y (y = ❙ιx φ{x})› by (metis "rule=I:1" "existential:1")
2405 then AOT_obtain a where ‹a = ❙ιx φ{x}› using "instantiation"[rotated] by blast
2406 AOT_thus ‹❙𝒜φ{❙ιx φ{x}}›
2407 using "actual-desc:2" "rule=E" "→E" by fast
2408qed
2409
2410AOT_theorem "actual-desc:5": ‹❙ιx φ{x} = ❙ιx ψ{x} → ❙𝒜∀x(φ{x} ≡ ψ{x})›
2411proof(rule "→I")
2412 AOT_assume 0: ‹❙ιx φ{x} = ❙ιx ψ{x}›
2413 AOT_hence φ_down: ‹❙ιx φ{x}↓› and ψ_down: ‹❙ιx ψ{x}↓›
2414 using "t=t-proper:1" "t=t-proper:2" "vdash-properties:6" by blast+
2415 AOT_hence ‹∃y (y = ❙ιx φ{x})› and ‹∃y (y = ❙ιx ψ{x})›
2416 by (metis "rule=I:1" "existential:1")+
2417 then AOT_obtain a and b where a_eq: ‹a = ❙ιx φ{x}› and b_eq: ‹b = ❙ιx ψ{x}›
2418 using "instantiation"[rotated] by metis
2419
2420 AOT_have ‹∀α∀β (α = β → β = α)›
2421 by (rule "∀I"; rule "∀I"; rule "id-eq:2")
2422 AOT_hence ‹∀β (❙ιx φ{x} = β → β = ❙ιx φ{x})›
2423 using "∀E" φ_down by blast
2424 AOT_hence ‹❙ιx φ{x} = ❙ιx ψ{x} → ❙ιx ψ{x} = ❙ιx φ{x}›
2425 using "∀E" ψ_down by blast
2426 AOT_hence 1: ‹❙ιx ψ{x} = ❙ιx φ{x}› using 0
2427 "→E" by blast
2428
2429 AOT_have ‹❙𝒜φ{x} ≡ ❙𝒜ψ{x}› for x
2430 proof(rule "≡I"; rule "→I")
2431 AOT_assume ‹❙𝒜φ{x}›
2432 moreover AOT_have ‹❙𝒜φ{x} → x = a› for x
2433 using "nec-hintikka-scheme"[THEN "≡E"(1), OF a_eq, THEN "&E"(2)]
2434 "∀E" by blast
2435 ultimately AOT_have ‹x = a›
2436 using "→E" by blast
2437 AOT_hence ‹x = ❙ιx φ{x}›
2438 using a_eq "rule=E" by blast
2439 AOT_hence ‹x = ❙ιx ψ{x}›
2440 using 0 "rule=E" by blast
2441 AOT_thus ‹❙𝒜ψ{x}›
2442 by (metis "actual-desc:3" "vdash-properties:6")
2443 next
2444 AOT_assume ‹❙𝒜ψ{x}›
2445 moreover AOT_have ‹❙𝒜ψ{x} → x = b› for x
2446 using "nec-hintikka-scheme"[THEN "≡E"(1), OF b_eq, THEN "&E"(2)]
2447 "∀E" by blast
2448 ultimately AOT_have ‹x = b›
2449 using "→E" by blast
2450 AOT_hence ‹x = ❙ιx ψ{x}›
2451 using b_eq "rule=E" by blast
2452 AOT_hence ‹x = ❙ιx φ{x}›
2453 using 1 "rule=E" by blast
2454 AOT_thus ‹❙𝒜φ{x}›
2455 by (metis "actual-desc:3" "vdash-properties:6")
2456 qed
2457 AOT_hence ‹❙𝒜(φ{x} ≡ ψ{x})› for x
2458 by (metis "Act-Basic:5" "≡E"(2))
2459 AOT_hence ‹∀x ❙𝒜(φ{x} ≡ ψ{x})›
2460 by (rule "∀I")
2461 AOT_thus ‹❙𝒜∀x (φ{x} ≡ ψ{x})›
2462 using "logic-actual-nec:3"[axiom_inst, THEN "≡E"(2)] by fast
2463qed
2464
2465AOT_theorem "!box-desc:1": ‹∃!x □φ{x} → ∀y (y = ❙ιx φ{x} → φ{y})›
2466proof(rule "→I")
2467 AOT_assume ‹∃!x □φ{x}›
2468 AOT_hence ζ: ‹∃x (□φ{x} & ∀z (□φ{z} → z = x))›
2469 using "uniqueness:1"[THEN "≡⇩d⇩fE"] by blast
2470 then AOT_obtain b where θ: ‹□φ{b} & ∀z (□φ{z} → z = b)›
2471 using "instantiation"[rotated] by blast
2472 AOT_show ‹∀y (y = ❙ιx φ{x} → φ{y})›
2473 proof(rule GEN; rule "→I")
2474 fix y
2475 AOT_assume ‹y = ❙ιx φ{x}›
2476 AOT_hence ‹❙𝒜φ{y} & ∀z (❙𝒜φ{z} → z = y)›
2477 using "nec-hintikka-scheme"[THEN "≡E"(1)] by blast
2478 AOT_hence ‹❙𝒜φ{b} → b = y›
2479 using "&E" "∀E" by blast
2480 moreover AOT_have ‹❙𝒜φ{b}›
2481 using θ[THEN "&E"(1)] by (metis "nec-imp-act" "→E")
2482 ultimately AOT_have ‹b = y›
2483 using "→E" by blast
2484 moreover AOT_have ‹φ{b}›
2485 using θ[THEN "&E"(1)] by (metis "qml:2"[axiom_inst] "→E")
2486 ultimately AOT_show ‹φ{y}›
2487 using "rule=E" by blast
2488 qed
2489qed
2490
2491AOT_theorem "!box-desc:2":
2492 ‹∀x (φ{x} → □φ{x}) → (∃!x φ{x} → ∀y (y = ❙ιx φ{x} → φ{y}))›
2493proof(rule "→I"; rule "→I")
2494 AOT_assume ‹∀x (φ{x} → □φ{x})›
2495 moreover AOT_assume ‹∃!x φ{x}›
2496 ultimately AOT_have ‹∃!x □φ{x}›
2497 using "nec-exist-!"[THEN "→E", THEN "→E"] by blast
2498 AOT_thus ‹∀y (y = ❙ιx φ{x} → φ{y})›
2499 using "!box-desc:1" "→E" by blast
2500qed
2501
2502
2503AOT_theorem "dr-alphabetic-thm": ‹❙ιν φ{ν}↓ → ❙ιν φ{ν} = ❙ιμ φ{μ}›
2504 by (simp add: "rule=I:1" "→I")
2505
2506subsection‹The Theory of Necessity›
2507text‹\label{PLM: 9.9}›
2508
2509AOT_theorem "RM:1[prem]":
2510 assumes ‹Γ ❙⊢⇩□ φ → ψ›
2511 shows ‹□Γ ❙⊢⇩□ □φ → □ψ›
2512proof -
2513 AOT_have ‹□Γ ❙⊢⇩□ □(φ → ψ)›
2514 using "RN[prem]" assms by blast
2515 AOT_thus ‹□Γ ❙⊢⇩□ □φ → □ψ›
2516 by (metis "qml:1"[axiom_inst] "→E")
2517qed
2518
2519AOT_theorem "RM:1":
2520 assumes ‹❙⊢⇩□ φ → ψ›
2521 shows ‹❙⊢⇩□ □φ → □ψ›
2522 using "RM:1[prem]" assms by blast
2523
2524lemmas RM = "RM:1"
2525
2526AOT_theorem "RM:2[prem]":
2527 assumes ‹Γ ❙⊢⇩□ φ → ψ›
2528 shows ‹□Γ ❙⊢⇩□ ◇φ → ◇ψ›
2529proof -
2530 AOT_have ‹Γ ❙⊢⇩□ ¬ψ → ¬φ›
2531 using assms
2532 by (simp add: "contraposition:1[1]")
2533 AOT_hence ‹□Γ ❙⊢⇩□ □¬ψ → □¬φ›
2534 using "RM:1[prem]" by blast
2535 AOT_thus ‹□Γ ❙⊢⇩□ ◇φ → ◇ψ›
2536 by (meson "≡⇩d⇩fE" "≡⇩d⇩fI" "conventions:5" "→I" "modus-tollens:1")
2537qed
2538
2539AOT_theorem "RM:2":
2540 assumes ‹❙⊢⇩□ φ → ψ›
2541 shows ‹❙⊢⇩□ ◇φ → ◇ψ›
2542 using "RM:2[prem]" assms by blast
2543
2544lemmas "RM◇" = "RM:2"
2545
2546AOT_theorem "RM:3[prem]":
2547 assumes ‹Γ ❙⊢⇩□ φ ≡ ψ›
2548 shows ‹□Γ ❙⊢⇩□ □φ ≡ □ψ›
2549proof -
2550 AOT_have ‹Γ ❙⊢⇩□ φ → ψ› and ‹Γ ❙⊢⇩□ ψ → φ›
2551 using assms "≡E" "→I" by metis+
2552 AOT_hence ‹□Γ ❙⊢⇩□ □φ → □ψ› and ‹□Γ ❙⊢⇩□ □ψ → □φ›
2553 using "RM:1[prem]" by metis+
2554 AOT_thus ‹□Γ ❙⊢⇩□ □φ ≡ □ψ›
2555 by (simp add: "≡I")
2556qed
2557
2558AOT_theorem "RM:3":
2559 assumes ‹❙⊢⇩□ φ ≡ ψ›
2560 shows ‹❙⊢⇩□ □φ ≡ □ψ›
2561 using "RM:3[prem]" assms by blast
2562
2563lemmas RE = "RM:3"
2564
2565AOT_theorem "RM:4[prem]":
2566 assumes ‹Γ ❙⊢⇩□ φ ≡ ψ›
2567 shows ‹□Γ ❙⊢⇩□ ◇φ ≡ ◇ψ›
2568proof -
2569 AOT_have ‹Γ ❙⊢⇩□ φ → ψ› and ‹Γ ❙⊢⇩□ ψ → φ›
2570 using assms "≡E" "→I" by metis+
2571 AOT_hence ‹□Γ ❙⊢⇩□ ◇φ → ◇ψ› and ‹□Γ ❙⊢⇩□ ◇ψ → ◇φ›
2572 using "RM:2[prem]" by metis+
2573 AOT_thus ‹□Γ ❙⊢⇩□ ◇φ ≡ ◇ψ›
2574 by (simp add: "≡I")
2575qed
2576
2577AOT_theorem "RM:4":
2578 assumes ‹❙⊢⇩□ φ ≡ ψ›
2579 shows ‹❙⊢⇩□ ◇φ ≡ ◇ψ›
2580 using "RM:4[prem]" assms by blast
2581
2582lemmas "RE◇" = "RM:4"
2583
2584AOT_theorem "KBasic:1": ‹□φ → □(ψ → φ)›
2585 by (simp add: RM "pl:1"[axiom_inst])
2586
2587AOT_theorem "KBasic:2": ‹□¬φ → □(φ → ψ)›
2588 by (simp add: RM "useful-tautologies:3")
2589
2590AOT_theorem "KBasic:3": ‹□(φ & ψ) ≡ (□φ & □ψ)›
2591proof (rule "≡I"; rule "→I")
2592 AOT_assume ‹□(φ & ψ)›
2593 AOT_thus ‹□φ & □ψ›
2594 by (meson RM "&I" "Conjunction Simplification"(1, 2) "→E")
2595next
2596 AOT_have ‹□φ → □(ψ → (φ & ψ))›
2597 by (simp add: "RM:1" Adjunction)
2598 AOT_hence ‹□φ → (□ψ → □(φ & ψ))›
2599 by (metis "Hypothetical Syllogism" "qml:1"[axiom_inst])
2600 moreover AOT_assume ‹□φ & □ψ›
2601 ultimately AOT_show ‹□(φ & ψ)›
2602 using "→E" "&E" by blast
2603qed
2604
2605AOT_theorem "KBasic:4": ‹□(φ ≡ ψ) ≡ (□(φ → ψ) & □(ψ → φ))›
2606proof -
2607 AOT_have θ: ‹□((φ → ψ) & (ψ → φ)) ≡ (□(φ → ψ) & □(ψ → φ))›
2608 by (fact "KBasic:3")
2609 AOT_modally_strict {
2610 AOT_have ‹(φ ≡ ψ) ≡ ((φ → ψ) & (ψ → φ))›
2611 by (fact "conventions:3"[THEN "≡Df"])
2612 }
2613 AOT_hence ξ: ‹□(φ ≡ ψ) ≡ □((φ → ψ) & (ψ → φ))›
2614 by (rule RE)
2615 with ξ and θ AOT_show ‹□(φ ≡ ψ) ≡ (□(φ → ψ) & □(ψ → φ))›
2616 using "≡E"(5) by blast
2617qed
2618
2619AOT_theorem "KBasic:5": ‹(□(φ → ψ) & □(ψ → φ)) → (□φ ≡ □ψ)›
2620proof -
2621 AOT_have ‹□(φ → ψ) → (□φ → □ψ)›
2622 by (fact "qml:1"[axiom_inst])
2623 moreover AOT_have ‹□(ψ → φ) → (□ψ → □φ)›
2624 by (fact "qml:1"[axiom_inst])
2625 ultimately AOT_have ‹(□(φ → ψ) & □(ψ → φ)) → ((□φ → □ψ) & (□ψ → □φ))›
2626 by (metis "&I" MP "Double Composition")
2627 moreover AOT_have ‹((□φ → □ψ) & (□ψ → □φ)) → (□φ ≡ □ψ)›
2628 using "conventions:3"[THEN "≡⇩d⇩fI"] "→I" by blast
2629 ultimately AOT_show ‹(□(φ → ψ) & □(ψ → φ)) → (□φ ≡ □ψ)›
2630 by (metis "Hypothetical Syllogism")
2631qed
2632
2633AOT_theorem "KBasic:6": ‹□(φ ≡ ψ) → (□φ ≡ □ψ)›
2634 using "KBasic:4" "KBasic:5" "deduction-theorem" "≡E"(1) "→E" by blast
2635AOT_theorem "KBasic:7": ‹((□φ & □ψ) ∨ (□¬φ & □¬ψ)) → □(φ ≡ ψ)›
2636proof (rule "→I"; drule "∨E"(1); (rule "→I")?)
2637 AOT_assume ‹□φ & □ψ›
2638 AOT_hence ‹□φ› and ‹□ψ› using "&E" by blast+
2639 AOT_hence ‹□(φ → ψ)› and ‹□(ψ → φ)› using "KBasic:1" "→E" by blast+
2640 AOT_hence ‹□(φ → ψ) & □(ψ → φ)› using "&I" by blast
2641 AOT_thus ‹□(φ ≡ ψ)› by (metis "KBasic:4" "≡E"(2))
2642next
2643 AOT_assume ‹□¬φ & □¬ψ›
2644 AOT_hence 0: ‹□(¬φ & ¬ψ)› using "KBasic:3"[THEN "≡E"(2)] by blast
2645 AOT_modally_strict {
2646 AOT_have ‹(¬φ & ¬ψ) → (φ ≡ ψ)›
2647 by (metis "&E"(1) "&E"(2) "deduction-theorem" "≡I" "reductio-aa:1")
2648 }
2649 AOT_hence ‹□(¬φ & ¬ψ) → □(φ ≡ ψ)›
2650 by (rule RM)
2651 AOT_thus ‹□(φ ≡ ψ)› using 0 "→E" by blast
2652qed(auto)
2653
2654AOT_theorem "KBasic:8": ‹□(φ & ψ) → □(φ ≡ ψ)›
2655 by (meson "RM:1" "&E"(1) "&E"(2) "deduction-theorem" "≡I")
2656AOT_theorem "KBasic:9": ‹□(¬φ & ¬ψ) → □(φ ≡ ψ)›
2657 by (metis "RM:1" "&E"(1) "&E"(2) "deduction-theorem" "≡I" "raa-cor:4")
2658AOT_theorem "KBasic:10": ‹□φ ≡ □¬¬φ›
2659 by (simp add: "RM:3" "oth-class-taut:3:b")
2660AOT_theorem "KBasic:11": ‹¬□φ ≡ ◇¬φ›
2661proof (rule "≡I"; rule "→I")
2662 AOT_show ‹◇¬φ› if ‹¬□φ›
2663 using that "≡⇩d⇩fI" "conventions:5" "KBasic:10" "≡E"(3) by blast
2664next
2665 AOT_show ‹¬□φ› if ‹◇¬φ›
2666 using "≡⇩d⇩fE" "conventions:5" "KBasic:10" "≡E"(4) that by blast
2667qed
2668AOT_theorem "KBasic:12": ‹□φ ≡ ¬◇¬φ›
2669proof (rule "≡I"; rule "→I")
2670 AOT_show ‹¬◇¬φ› if ‹□φ›
2671 using "¬¬I" "KBasic:11" "≡E"(3) that by blast
2672next
2673 AOT_show ‹□φ› if ‹¬◇¬φ›
2674 using "KBasic:11" "≡E"(1) "reductio-aa:1" that by blast
2675qed
2676AOT_theorem "KBasic:13": ‹□(φ → ψ) → (◇φ → ◇ψ)›
2677proof -
2678 AOT_have ‹φ → ψ ❙⊢⇩□ φ → ψ› by blast
2679 AOT_hence ‹□(φ → ψ) ❙⊢⇩□ ◇φ → ◇ψ›
2680 using "RM:2[prem]" by blast
2681 AOT_thus ‹□(φ → ψ) → (◇φ → ◇ψ)› using "→I" by blast
2682qed
2683lemmas "K◇" = "KBasic:13"
2684AOT_theorem "KBasic:14": ‹◇□φ ≡ ¬□◇¬φ›
2685 by (meson "RE◇" "KBasic:11" "KBasic:12" "≡E"(6) "oth-class-taut:3:a")
2686AOT_theorem "KBasic:15": ‹(□φ ∨ □ψ) → □(φ ∨ ψ)›
2687proof -
2688 AOT_modally_strict {
2689 AOT_have ‹φ → (φ ∨ ψ)› and ‹ψ → (φ ∨ ψ)›
2690 by (auto simp: "Disjunction Addition"(1) "Disjunction Addition"(2))
2691 }
2692 AOT_hence ‹□φ → □(φ ∨ ψ)› and ‹□ψ → □(φ ∨ ψ)›
2693 using RM by blast+
2694 AOT_thus ‹(□φ ∨ □ψ) → □(φ ∨ ψ)›
2695 by (metis "∨E"(1) "deduction-theorem")
2696qed
2697
2698AOT_theorem "KBasic:16": ‹(□φ & ◇ψ) → ◇(φ & ψ)›
2699 by (meson "KBasic:13" "RM:1" Adjunction "Hypothetical Syllogism"
2700 Importation "→E")
2701
2702AOT_theorem "rule-sub-lem:1:a":
2703 assumes ‹❙⊢⇩□ □(ψ ≡ χ)›
2704 shows ‹❙⊢⇩□ ¬ψ ≡ ¬χ›
2705 using "qml:2"[axiom_inst, THEN "→E", OF assms]
2706 "≡E"(1) "oth-class-taut:4:b" by blast
2707
2708AOT_theorem "rule-sub-lem:1:b":
2709 assumes ‹❙⊢⇩□ □(ψ ≡ χ)›
2710 shows ‹❙⊢⇩□ (ψ → Θ) ≡ (χ → Θ)›
2711 using "qml:2"[axiom_inst, THEN "→E", OF assms]
2712 using "oth-class-taut:4:c" "vdash-properties:6" by blast
2713
2714AOT_theorem "rule-sub-lem:1:c":
2715 assumes ‹❙⊢⇩□ □(ψ ≡ χ)›
2716 shows ‹❙⊢⇩□ (Θ → ψ) ≡ (Θ → χ)›
2717 using "qml:2"[axiom_inst, THEN "→E", OF assms]
2718 using "oth-class-taut:4:d" "vdash-properties:6" by blast
2719
2720AOT_theorem "rule-sub-lem:1:d":
2721 assumes ‹for arbitrary α: ❙⊢⇩□ □(ψ{α} ≡ χ{α})›
2722 shows ‹❙⊢⇩□ ∀α ψ{α} ≡ ∀α χ{α}›
2723proof -
2724 AOT_modally_strict {
2725 AOT_have ‹∀α (ψ{α} ≡ χ{α})›
2726 using "qml:2"[axiom_inst, THEN "→E", OF assms] "∀I" by fast
2727 AOT_hence 0: ‹ψ{α} ≡ χ{α}› for α using "∀E" by blast
2728 AOT_show ‹∀α ψ{α} ≡ ∀α χ{α}›
2729 proof (rule "≡I"; rule "→I")
2730 AOT_assume ‹∀α ψ{α}›
2731 AOT_hence ‹ψ{α}› for α using "∀E" by blast
2732 AOT_hence ‹χ{α}› for α using 0 "≡E" by blast
2733 AOT_thus ‹∀α χ{α}› by (rule "∀I")
2734 next
2735 AOT_assume ‹∀α χ{α}›
2736 AOT_hence ‹χ{α}› for α using "∀E" by blast
2737 AOT_hence ‹ψ{α}› for α using 0 "≡E" by blast
2738 AOT_thus ‹∀α ψ{α}› by (rule "∀I")
2739 qed
2740 }
2741qed
2742
2743AOT_theorem "rule-sub-lem:1:e":
2744 assumes ‹❙⊢⇩□ □(ψ ≡ χ)›
2745 shows ‹❙⊢⇩□ [λ ψ] ≡ [λ χ]›
2746 using "qml:2"[axiom_inst, THEN "→E", OF assms]
2747 using "≡E"(1) "propositions-lemma:6" by blast
2748
2749AOT_theorem "rule-sub-lem:1:f":
2750 assumes ‹❙⊢⇩□ □(ψ ≡ χ)›
2751 shows ‹❙⊢⇩□ ❙𝒜ψ ≡ ❙𝒜χ›
2752 using "qml:2"[axiom_inst, THEN "→E", OF assms, THEN "RA[2]"]
2753 by (metis "Act-Basic:5" "≡E"(1))
2754
2755AOT_theorem "rule-sub-lem:1:g":
2756 assumes ‹❙⊢⇩□ □(ψ ≡ χ)›
2757 shows ‹❙⊢⇩□ □ψ ≡ □χ›
2758 using "KBasic:6" assms "vdash-properties:6" by blast
2759
2760text‹Note that instead of deriving @{text "rule-sub-lem:2"},
2761 @{text "rule-sub-lem:3"}, @{text "rule-sub-lem:4"},
2762 and @{text "rule-sub-nec"}, we construct substitution methods instead.›
2763
2764class AOT_subst =
2765 fixes AOT_subst :: "('a ⇒ 𝗈) ⇒ bool"
2766 and AOT_subst_cond :: "'a ⇒ 'a ⇒ bool"
2767 assumes AOT_subst:
2768 "AOT_subst φ ⟹ AOT_subst_cond ψ χ ⟹ [v ⊨ «φ ψ» ≡ «φ χ»]"
2769
2770named_theorems AOT_substI
2771
2772instantiation 𝗈 :: AOT_subst
2773begin
2774
2775inductive AOT_subst_𝗈 where
2776 AOT_subst_𝗈_id[AOT_substI]:
2777 ‹AOT_subst_𝗈 (λφ. φ)›
2778 | AOT_subst_𝗈_const[AOT_substI]:
2779 ‹AOT_subst_𝗈 (λφ. ψ)›
2780 | AOT_subst_𝗈_not[AOT_substI]:
2781 ‹AOT_subst_𝗈 Θ ⟹ AOT_subst_𝗈 (λ φ. «¬Θ{φ}»)›
2782 | AOT_subst_𝗈_imp[AOT_substI]:
2783 ‹AOT_subst_𝗈 Θ ⟹ AOT_subst_𝗈 Ξ ⟹ AOT_subst_𝗈 (λ φ. «Θ{φ} → Ξ{φ}»)›
2784 | AOT_subst_𝗈_lambda0[AOT_substI]:
2785 ‹AOT_subst_𝗈 Θ ⟹ AOT_subst_𝗈 (λ φ. (AOT_lambda0 (Θ φ)))›
2786 | AOT_subst_𝗈_act[AOT_substI]:
2787 ‹AOT_subst_𝗈 Θ ⟹ AOT_subst_𝗈 (λ φ. «❙𝒜Θ{φ}»)›
2788 | AOT_subst_𝗈_box[AOT_substI]:
2789 ‹AOT_subst_𝗈 Θ ⟹ AOT_subst_𝗈 (λ φ. «□Θ{φ}»)›
2790 | AOT_subst_𝗈_by_def[AOT_substI]:
2791 ‹(⋀ ψ . AOT_model_equiv_def (Θ ψ) (Ξ ψ)) ⟹
2792 AOT_subst_𝗈 Ξ ⟹ AOT_subst_𝗈 Θ›
2793
2794
2795definition AOT_subst_cond_𝗈 where
2796 ‹AOT_subst_cond_𝗈 ≡ λ ψ χ . ∀ v . [v ⊨ ψ ≡ χ]›
2797
2798instance
2799proof
2800 fix ψ χ :: 𝗈 and φ :: ‹𝗈 ⇒ 𝗈›
2801 assume cond: ‹AOT_subst_cond ψ χ›
2802 assume ‹AOT_subst φ›
2803 moreover AOT_have ‹❙⊢⇩□ ψ ≡ χ›
2804 using cond unfolding AOT_subst_cond_𝗈_def by blast
2805 ultimately AOT_show ‹❙⊢⇩□ φ{ψ} ≡ φ{χ}›
2806 proof (induct arbitrary: ψ χ)
2807 case AOT_subst_𝗈_id
2808 thus ?case
2809 using "≡E"(2) "oth-class-taut:4:b" "rule-sub-lem:1:a" by blast
2810 next
2811 case (AOT_subst_𝗈_const ψ)
2812 thus ?case
2813 by (simp add: "oth-class-taut:3:a")
2814 next
2815 case (AOT_subst_𝗈_not Θ)
2816 thus ?case
2817 by (simp add: RN "rule-sub-lem:1:a")
2818 next
2819 case (AOT_subst_𝗈_imp Θ Ξ)
2820 thus ?case
2821 by (meson RN "≡E"(5) "rule-sub-lem:1:b" "rule-sub-lem:1:c")
2822 next
2823 case (AOT_subst_𝗈_lambda0 Θ)
2824 thus ?case
2825 by (simp add: RN "rule-sub-lem:1:e")
2826 next
2827 case (AOT_subst_𝗈_act Θ)
2828 thus ?case
2829 by (simp add: RN "rule-sub-lem:1:f")
2830 next
2831 case (AOT_subst_𝗈_box Θ)
2832 thus ?case
2833 by (simp add: RN "rule-sub-lem:1:g")
2834 next
2835 case (AOT_subst_𝗈_by_def Θ Ξ)
2836 AOT_modally_strict {
2837 AOT_have ‹Ξ{ψ} ≡ Ξ{χ}›
2838 using AOT_subst_𝗈_by_def by simp
2839 AOT_thus ‹Θ{ψ} ≡ Θ{χ}›
2840 using "≡Df"[OF AOT_subst_𝗈_by_def(1), of _ ψ]
2841 "≡Df"[OF AOT_subst_𝗈_by_def(1), of _ χ]
2842 by (metis "≡E"(6) "oth-class-taut:3:a")
2843 }
2844 qed
2845qed
2846end
2847
2848instantiation "fun" :: (AOT_Term_id_2, AOT_subst) AOT_subst
2849begin
2850
2851definition AOT_subst_cond_fun :: ‹('a ⇒ 'b) ⇒ ('a ⇒ 'b) ⇒ bool› where
2852 ‹AOT_subst_cond_fun ≡ λ φ ψ . ∀ α . AOT_subst_cond (φ (AOT_term_of_var α))
2853 (ψ (AOT_term_of_var α))›
2854
2855inductive AOT_subst_fun :: ‹(('a ⇒ 'b) ⇒ 𝗈) ⇒ bool› where
2856 AOT_subst_fun_const[AOT_substI]:
2857 ‹AOT_subst_fun (λφ. ψ)›
2858 | AOT_subst_fun_id[AOT_substI]:
2859 ‹AOT_subst Ψ ⟹ AOT_subst_fun (λφ. Ψ (φ (AOT_term_of_var α)))›
2860 | AOT_subst_fun_all[AOT_substI]:
2861 ‹AOT_subst Ψ ⟹ (⋀ α . AOT_subst_fun (Θ (AOT_term_of_var α))) ⟹
2862 AOT_subst_fun (λφ :: 'a ⇒ 'b. Ψ «∀α «Θ (α::'a) φ»»)›
2863 | AOT_subst_fun_not[AOT_substI]:
2864 ‹AOT_subst Ψ ⟹ AOT_subst_fun (λφ. «¬«Ψ φ»»)›
2865 | AOT_subst_fun_imp[AOT_substI]:
2866 ‹AOT_subst Ψ ⟹ AOT_subst Θ ⟹ AOT_subst_fun (λφ. ««Ψ φ» → «Θ φ»»)›
2867 | AOT_subst_fun_lambda0[AOT_substI]:
2868 ‹AOT_subst Θ ⟹ AOT_subst_fun (λ φ. (AOT_lambda0 (Θ φ)))›
2869 | AOT_subst_fun_act[AOT_substI]:
2870 ‹AOT_subst Θ ⟹ AOT_subst_fun (λ φ. «❙𝒜«Θ φ»»)›
2871 | AOT_subst_fun_box[AOT_substI]:
2872 ‹AOT_subst Θ ⟹ AOT_subst_fun (λ φ. «□«Θ φ»»)›
2873 | AOT_subst_fun_def[AOT_substI]:
2874 ‹(⋀ φ . AOT_model_equiv_def (Θ φ) (Ψ φ)) ⟹
2875 AOT_subst_fun Ψ ⟹ AOT_subst_fun Θ›
2876
2877instance proof
2878 fix ψ χ :: ‹'a ⇒ 'b› and φ :: ‹('a ⇒ 'b) ⇒ 𝗈›
2879 assume ‹AOT_subst φ›
2880 moreover assume cond: ‹AOT_subst_cond ψ χ›
2881 ultimately AOT_show ‹❙⊢⇩□ «φ ψ» ≡ «φ χ»›
2882 proof(induct)
2883 case (AOT_subst_fun_const ψ)
2884 then show ?case by (simp add: "oth-class-taut:3:a")
2885 next
2886 case (AOT_subst_fun_id Ψ x)
2887 then show ?case by (simp add: AOT_subst AOT_subst_cond_fun_def)
2888 next
2889 next
2890 case (AOT_subst_fun_all Ψ Θ)
2891 AOT_have ‹❙⊢⇩□ □(Θ{α, «ψ»} ≡ Θ{α, «χ»})› for α
2892 using AOT_subst_fun_all.hyps(3) AOT_subst_fun_all.prems RN by presburger
2893 thus ?case using AOT_subst[OF AOT_subst_fun_all(1)]
2894 by (simp add: RN "rule-sub-lem:1:d"
2895 AOT_subst_cond_fun_def AOT_subst_cond_𝗈_def)
2896 next
2897 case (AOT_subst_fun_not Ψ)
2898 then show ?case by (simp add: RN "rule-sub-lem:1:a")
2899 next
2900 case (AOT_subst_fun_imp Ψ Θ)
2901 then show ?case
2902 unfolding AOT_subst_cond_fun_def AOT_subst_cond_𝗈_def
2903 by (meson "≡E"(5) "oth-class-taut:4:c" "oth-class-taut:4:d" "→E")
2904 next
2905 case (AOT_subst_fun_lambda0 Θ)
2906 then show ?case by (simp add: RN "rule-sub-lem:1:e")
2907 next
2908 case (AOT_subst_fun_act Θ)
2909 then show ?case by (simp add: RN "rule-sub-lem:1:f")
2910 next
2911 case (AOT_subst_fun_box Θ)
2912 then show ?case by (simp add: RN "rule-sub-lem:1:g")
2913 next
2914 case (AOT_subst_fun_def Θ Ψ)
2915 then show ?case
2916 by (meson "df-rules-formulas[3]" "df-rules-formulas[4]" "≡I" "≡E"(5))
2917 qed
2918qed
2919end
2920
2921ML‹
2922fun prove_AOT_subst_tac ctxt = REPEAT (SUBGOAL (fn (trm,_) => let
2923 fun findHeadConst (Const x) = SOME x
2924 | findHeadConst (A $ _) = findHeadConst A
2925 | findHeadConst _ = NONE
2926 fun findDef (Const (\<^const_name>‹AOT_model_equiv_def›, _) $ lhs $ _)
2927 = findHeadConst lhs
2928 | findDef (A $ B) = (case findDef A of SOME x => SOME x | _ => findDef B)
2929 | findDef (Abs (_,_,c)) = findDef c
2930 | findDef _ = NONE
2931 val const_opt = (findDef trm)
2932 val defs = case const_opt of SOME const => List.filter (fn thm => let
2933 val concl = Thm.concl_of thm
2934 val thmconst = (findDef concl)
2935 in case thmconst of SOME (c,_) => fst const = c | _ => false end)
2936 (AOT_Definitions.get ctxt)
2937 | _ => []
2938 val tac = case defs of
2939 [] => safe_step_tac (ctxt addSIs @{thms AOT_substI}) 1
2940 | _ => resolve_tac ctxt defs 1
2941 in tac end) 1)
2942fun getSubstThm ctxt reversed phi p q = let
2943val p_ty = Term.type_of p
2944val abs = HOLogic.mk_Trueprop (@{const AOT_subst(_)} $ phi)
2945val abs = Syntax.check_term ctxt abs
2946val substThm = Goal.prove ctxt [] [] abs
2947 (fn {context=ctxt, prems=_} => prove_AOT_subst_tac ctxt)
2948val substThm = substThm RS @{thm AOT_subst}
2949in if reversed then let
2950 val substThm = Drule.instantiate_normalize
2951 (TVars.empty, Vars.make [((("χ", 0), p_ty), Thm.cterm_of ctxt p),
2952 ((("ψ", 0), p_ty), Thm.cterm_of ctxt q)]) substThm
2953 val substThm = substThm RS @{thm "≡E"(1)}
2954 in substThm end
2955else
2956 let
2957 val substThm = Drule.instantiate_normalize
2958 (TVars.empty, Vars.make [((("ψ", 0), p_ty), Thm.cterm_of ctxt p),
2959 ((("χ", 0), p_ty), Thm.cterm_of ctxt q)]) substThm
2960 val substThm = substThm RS @{thm "≡E"(2)}
2961 in substThm end end
2962›
2963
2964method_setup AOT_subst = ‹
2965Scan.option (Scan.lift (Args.parens (Args.$$$ "reverse"))) --
2966Scan.lift (Parse.embedded_inner_syntax -- Parse.embedded_inner_syntax) --
2967Scan.option (Scan.lift (Args.$$$ "for" -- Args.colon) |--
2968Scan.repeat1 (Scan.lift (Parse.embedded_inner_syntax) --
2969Scan.option (Scan.lift (Args.$$$ "::" |-- Parse.embedded_inner_syntax))))
2970>> (fn ((reversed,(raw_p,raw_q)),raw_bounds) => (fn ctxt =>
2971(Method.SIMPLE_METHOD (Subgoal.FOCUS (fn {context = ctxt, params = _,
2972 prems = prems, asms = asms, concl = concl, schematics = _} =>
2973let
2974val thms = prems
2975val ctxt' = ctxt
2976val ctxt = Context_Position.set_visible false ctxt
2977val raw_bounds = case raw_bounds of SOME bounds => bounds | _ => []
2978
2979val ctxt = (fold (fn (bound, ty) => fn ctxt =>
2980 let
2981 val bound = AOT_read_term @{nonterminal τ'} ctxt bound
2982 val ty = Option.map (Syntax.read_typ ctxt) ty
2983 val ctxt = case ty of SOME ty => let
2984 val bound = Const ("_type_constraint_", Type ("fun", [ty,ty])) $ bound
2985 val bound = Syntax.check_term ctxt bound
2986 in Variable.declare_term bound ctxt end | _ => ctxt
2987 in ctxt end)) raw_bounds ctxt
2988
2989val p = AOT_read_term @{nonterminal φ'} ctxt raw_p
2990val p = Syntax.check_term ctxt p
2991val ctxt = Variable.declare_term p ctxt
2992val q = AOT_read_term @{nonterminal φ'} ctxt raw_q
2993val q = Syntax.check_term ctxt q
2994val ctxt = Variable.declare_term q ctxt
2995
2996val bounds = (map (fn (bound, _) =>
2997 Syntax.check_term ctxt (AOT_read_term @{nonterminal τ'} ctxt bound)
2998)) raw_bounds
2999val p = fold (fn bound => fn p =>
3000 Term.abs ("α", Term.type_of bound) (Term.abstract_over (bound,p)))
3001 bounds p
3002val p = Syntax.check_term ctxt p
3003val p_ty = Term.type_of p
3004
3005val pat = @{const Trueprop} $
3006 (@{const AOT_model_valid_in} $ Var (("w",0), @{typ w}) $
3007 (Var (("φ",0), Type (\<^type_name>‹fun›, [p_ty, @{typ 𝗈}])) $ p))
3008val univ = Unify.matchers (Context.Proof ctxt) [(pat, Thm.term_of concl)]
3009val univ = hd (Seq.list_of univ)
3010val phi = the (Envir.lookup univ
3011 (("φ",0), Type (\<^type_name>‹fun›, [p_ty, @{typ 𝗈}])))
3012
3013val q = fold (fn bound => fn q =>
3014 Term.abs ("α", Term.type_of bound) (Term.abstract_over (bound,q))) bounds q
3015val q = Syntax.check_term ctxt q
3016
3017
3018val ctxt = Context_Position.restore_visible ctxt' ctxt
3019val ctxt' = ctxt
3020fun unsource str = fst (Input.source_content (Syntax.read_input str))
3021val (_,ctxt') = Proof_Context.add_fixes (map (fn (str,_) =>
3022 (Binding.make (unsource str, Position.none), NONE, Mixfix.NoSyn)) raw_bounds)
3023 ctxt'
3024val _ = (map (fn (x,_) =>
3025 Syntax.check_term ctxt (AOT_read_term @{nonterminal τ'} ctxt' x)))
3026 raw_bounds
3027val _ = AOT_read_term @{nonterminal φ'} ctxt' raw_p
3028val _ = AOT_read_term @{nonterminal φ'} ctxt' raw_q
3029val reversed = case reversed of SOME _ => true | _ => false
3030val simpThms = [@{thm AOT_subst_cond_𝗈_def}, @{thm AOT_subst_cond_fun_def}]
3031in
3032resolve_tac ctxt [getSubstThm ctxt reversed phi p q] 1
3033THEN simp_tac (ctxt addsimps simpThms) 1
3034THEN (REPEAT (resolve_tac ctxt [@{thm allI}] 1))
3035THEN (TRY (resolve_tac ctxt thms 1))
3036end
3037) ctxt 1))))
3038›
3039
3040method_setup AOT_subst_def = ‹
3041Scan.option (Scan.lift (Args.parens (Args.$$$ "reverse"))) --
3042Attrib.thm
3043>> (fn (reversed,fact) => (fn ctxt =>
3044(Method.SIMPLE_METHOD (Subgoal.FOCUS (fn {context = ctxt, params = _,
3045 prems = prems, asms = asms, concl = concl, schematics = _} =>
3046let
3047val c = Thm.concl_of fact
3048val (lhs, rhs) = case c of (\<^const>‹Trueprop› $
3049 (\<^const>‹AOT_model_equiv_def› $ lhs $ rhs)) => (lhs, rhs)
3050 | _ => raise Fail "Definition expected."
3051val substCond = HOLogic.mk_Trueprop
3052 (Const (\<^const_name>‹AOT_subst_cond›, dummyT) $ lhs $ rhs)
3053val substCond = Syntax.check_term
3054 (Proof_Context.set_mode Proof_Context.mode_schematic ctxt)
3055 substCond
3056val simpThms = [@{thm AOT_subst_cond_𝗈_def},
3057 @{thm AOT_subst_cond_fun_def},
3058 fact RS @{thm "≡Df"}]
3059val substCondThm = Goal.prove ctxt [] [] substCond
3060 (fn {context=ctxt, prems=prems} =>
3061 (SUBGOAL (fn (trm,int) =>
3062 auto_tac (ctxt addsimps simpThms)) 1))
3063val substThm = substCondThm RSN (2,@{thm AOT_subst})
3064in
3065resolve_tac ctxt [substThm RS
3066 (case reversed of NONE => @{thm "≡E"(2)} | _ => @{thm "≡E"(1)})] 1
3067THEN prove_AOT_subst_tac ctxt
3068THEN (TRY (resolve_tac ctxt prems 1))
3069end
3070) ctxt 1))))
3071›
3072
3073method_setup AOT_subst_thm = ‹
3074Scan.option (Scan.lift (Args.parens (Args.$$$ "reverse"))) --
3075Attrib.thm
3076>> (fn (reversed,fact) => (fn ctxt =>
3077(Method.SIMPLE_METHOD (Subgoal.FOCUS (fn {context = ctxt, params = _,
3078 prems = prems, asms = asms, concl = concl, schematics = _} =>
3079let
3080val c = Thm.concl_of fact
3081val (lhs, rhs) = case c of
3082 (\<^const>‹Trueprop› $
3083 (\<^const>‹AOT_model_valid_in› $ _ $
3084 (\<^const>‹AOT_equiv› $ lhs $ rhs))) => (lhs, rhs)
3085 | _ => raise Fail "Equivalence expected."
3086
3087val substCond = HOLogic.mk_Trueprop
3088 (Const (\<^const_name>‹AOT_subst_cond›, dummyT) $ lhs $ rhs)
3089val substCond = Syntax.check_term
3090 (Proof_Context.set_mode Proof_Context.mode_schematic ctxt)
3091 substCond
3092val simpThms = [@{thm AOT_subst_cond_𝗈_def},
3093 @{thm AOT_subst_cond_fun_def},
3094 fact]
3095val substCondThm = Goal.prove ctxt [] [] substCond
3096 (fn {context=ctxt, prems=prems} =>
3097 (SUBGOAL (fn (trm,int) => auto_tac (ctxt addsimps simpThms)) 1))
3098val substThm = substCondThm RSN (2,@{thm AOT_subst})
3099in
3100resolve_tac ctxt [substThm RS
3101 (case reversed of NONE => @{thm "≡E"(2)} | _ => @{thm "≡E"(1)})] 1
3102THEN prove_AOT_subst_tac ctxt
3103THEN (TRY (resolve_tac ctxt prems 1))
3104end
3105) ctxt 1))))
3106›
3107
3108AOT_theorem "":
3109 assumes ‹❙⊢⇩□ A!x ≡ ¬◇E!x› and ‹¬A!x›
3110 shows ‹¬¬◇E!x›
3111 by (AOT_subst (reverse) ‹¬◇E!x› ‹A!x›)
3112 (auto simp: assms)
3113
3114AOT_theorem "":
3115 assumes ‹❙⊢⇩□ A!x ≡ ¬◇E!x› and ‹¬¬◇E!x›
3116 shows ‹¬A!x›
3117 by (AOT_subst ‹A!x› ‹¬◇E!x›)
3118 (auto simp: assms)
3119
3120AOT_theorem "":
3121 assumes ‹❙⊢⇩□ [R]xy ≡ ([R]xy & ([Q]a ∨ ¬[Q]a))›
3122 and ‹p → [R]xy›
3123 shows ‹p → [R]xy & ([Q]a ∨ ¬[Q]a)›
3124 by (AOT_subst_thm (reverse) assms(1)) (simp add: assms(2))
3125
3126AOT_theorem "":
3127 assumes ‹❙⊢⇩□ [R]xy ≡ ([R]xy & ([Q]a ∨ ¬[Q]a))›
3128 and ‹p → [R]xy & ([Q]a ∨ ¬[Q]a)›
3129 shows ‹p → [R]xy›
3130 by (AOT_subst_thm assms(1)) (simp add: assms(2))
3131
3132AOT_theorem "":
3133 assumes ‹for arbitrary x: ❙⊢⇩□ A!x ≡ ¬◇E!x›
3134 and ‹∃x A!x›
3135 shows ‹∃x ¬◇E!x›
3136 by (AOT_subst (reverse) ‹¬◇E!x› ‹A!x› for: x)
3137 (auto simp: assms)
3138
3139AOT_theorem "":
3140 assumes ‹for arbitrary x: ❙⊢⇩□ A!x ≡ ¬◇E!x›
3141 and ‹∃x ¬◇E!x›
3142 shows ‹∃x A!x›
3143 by (AOT_subst ‹A!x› ‹¬◇E!x› for: x)
3144 (auto simp: assms)
3145
3146AOT_theorem "":
3147 assumes ‹❙⊢⇩□ ¬¬[P]x ≡ [P]x› and ‹❙𝒜¬¬[P]x›
3148 shows ‹❙𝒜[P]x›
3149 by (AOT_subst_thm (reverse) assms(1)) (simp add: assms(2))
3150
3151AOT_theorem "":
3152 assumes ‹❙⊢⇩□ ¬¬[P]x ≡ [P]x› and ‹❙𝒜[P]x›
3153 shows ‹❙𝒜¬¬[P]x›
3154 by (AOT_subst_thm assms(1)) (simp add: assms(2))
3155
3156AOT_theorem "":
3157 assumes ‹❙⊢⇩□ (φ → ψ) ≡ (¬ψ → ¬φ)› and ‹□(φ → ψ)›
3158 shows ‹□(¬ψ → ¬φ)›
3159 by (AOT_subst_thm (reverse) assms(1)) (simp add: assms(2))
3160
3161AOT_theorem "":
3162 assumes ‹❙⊢⇩□ (φ → ψ) ≡ (¬ψ → ¬φ)› and ‹□(¬ψ → ¬φ)›
3163 shows ‹□(φ → ψ)›
3164 by (AOT_subst_thm assms(1)) (simp add: assms(2))
3165
3166AOT_theorem "":
3167 assumes ‹❙⊢⇩□ ψ ≡ χ› and ‹□(φ → ψ)›
3168 shows ‹□(φ → χ)›
3169 by (AOT_subst_thm (reverse) assms(1)) (simp add: assms(2))
3170
3171AOT_theorem "":
3172 assumes ‹❙⊢⇩□ ψ ≡ χ› and ‹□(φ → χ)›
3173 shows ‹□(φ → ψ)›
3174 by (AOT_subst_thm assms(1)) (simp add: assms(2))
3175
3176AOT_theorem "":
3177 assumes ‹❙⊢⇩□ φ ≡ ¬¬φ› and ‹□(φ → φ)›
3178 shows ‹□(¬¬φ → φ)›
3179 by (AOT_subst_thm (reverse) assms(1)) (simp add: assms(2))
3180
3181AOT_theorem "":
3182 assumes ‹❙⊢⇩□ φ ≡ ¬¬φ› and ‹□(¬¬φ → φ)›
3183 shows ‹□(φ → φ)›
3184 by (AOT_subst_thm assms(1)) (simp add: assms(2))
3185
3186AOT_theorem "KBasic2:1": ‹□¬φ ≡ ¬◇φ›
3187 by (meson "conventions:5" "contraposition:2"
3188 "Hypothetical Syllogism" "df-rules-formulas[3]"
3189 "df-rules-formulas[4]" "≡I" "useful-tautologies:1")
3190
3191AOT_theorem "KBasic2:2": ‹◇(φ ∨ ψ) ≡ (◇φ ∨ ◇ψ)›
3192proof -
3193 AOT_have ‹◇(φ ∨ ψ) ≡ ◇¬(¬φ & ¬ψ)›
3194 by (simp add: "RE◇" "oth-class-taut:5:b")
3195 also AOT_have ‹… ≡ ¬□(¬φ & ¬ψ)›
3196 using "KBasic:11" "≡E"(6) "oth-class-taut:3:a" by blast
3197 also AOT_have ‹… ≡ ¬(□¬φ & □¬ψ)›
3198 using "KBasic:3" "≡E"(1) "oth-class-taut:4:b" by blast
3199 also AOT_have ‹… ≡ ¬(¬◇φ & ¬◇ψ)›
3200 using "KBasic2:1"
3201 by (AOT_subst ‹□¬φ› ‹¬◇φ›; AOT_subst ‹□¬ψ› ‹¬◇ψ›;
3202 auto simp: "oth-class-taut:3:a")
3203 also AOT_have ‹… ≡ ¬¬(◇φ ∨ ◇ψ)›
3204 using "≡E"(6) "oth-class-taut:3:b" "oth-class-taut:5:b" by blast
3205 also AOT_have ‹… ≡ ◇φ ∨ ◇ψ›
3206 by (simp add: "≡I" "useful-tautologies:1" "useful-tautologies:2")
3207 finally show ?thesis .
3208qed
3209
3210AOT_theorem "KBasic2:3": ‹◇(φ & ψ) → (◇φ & ◇ψ)›
3211 by (metis "RM◇" "&I" "Conjunction Simplification"(1,2)
3212 "→I" "modus-tollens:1" "reductio-aa:1")
3213
3214AOT_theorem "KBasic2:4": ‹◇(φ → ψ) ≡ (□φ → ◇ψ)›
3215proof -
3216 AOT_have ‹◇(φ → ψ) ≡ ◇(¬φ ∨ ψ)›
3217 by (AOT_subst ‹φ → ψ› ‹¬φ ∨ ψ›)
3218 (auto simp: "oth-class-taut:1:c" "oth-class-taut:3:a")
3219 also AOT_have ‹... ≡ ◇¬φ ∨ ◇ψ›
3220 by (simp add: "KBasic2:2")
3221 also AOT_have ‹... ≡ ¬□φ ∨ ◇ψ›
3222 by (AOT_subst ‹¬□φ› ‹◇¬φ›)
3223 (auto simp: "KBasic:11" "oth-class-taut:3:a")
3224 also AOT_have ‹... ≡ □φ → ◇ψ›
3225 using "≡E"(6) "oth-class-taut:1:c" "oth-class-taut:3:a" by blast
3226 finally show ?thesis .
3227qed
3228
3229AOT_theorem "KBasic2:5": ‹◇◇φ ≡ ¬□□¬φ›
3230 using "conventions:5"[THEN "≡Df"]
3231 by (AOT_subst ‹◇φ› ‹¬□¬φ›;
3232 AOT_subst ‹◇¬□¬φ› ‹¬□¬¬□¬φ›;
3233 AOT_subst (reverse) ‹¬¬□¬φ› ‹□¬φ›)
3234 (auto simp: "oth-class-taut:3:b" "oth-class-taut:3:a")
3235
3236
3237AOT_theorem "KBasic2:6": ‹□(φ ∨ ψ) → (□φ ∨ ◇ψ)›
3238proof(rule "→I"; rule "raa-cor:1")
3239 AOT_assume ‹□(φ ∨ ψ)›
3240 AOT_hence ‹□(¬φ → ψ)›
3241 using "conventions:2"[THEN "≡Df"]
3242 by (AOT_subst (reverse) ‹¬φ → ψ› ‹φ ∨ ψ›) simp
3243 AOT_hence 1: ‹◇¬φ → ◇ψ›
3244 using "KBasic:13" "vdash-properties:10" by blast
3245 AOT_assume ‹¬(□φ ∨ ◇ψ)›
3246 AOT_hence ‹¬□φ› and ‹¬◇ψ›
3247 using "&E" "≡E"(1) "oth-class-taut:5:d" by blast+
3248 AOT_thus ‹◇ψ & ¬◇ψ›
3249 using "&I"(1) 1[THEN "→E"] "KBasic:11" "≡E"(4) "raa-cor:3" by blast
3250qed
3251
3252AOT_theorem "KBasic2:7": ‹(□(φ ∨ ψ) & ◇¬φ) → ◇ψ›
3253proof(rule "→I"; frule "&E"(1); drule "&E"(2))
3254 AOT_assume ‹□(φ ∨ ψ)›
3255 AOT_hence 1: ‹□φ ∨ ◇ψ›
3256 using "KBasic2:6" "∨I"(2) "∨E"(1) by blast
3257 AOT_assume ‹◇¬φ›
3258 AOT_hence ‹¬□φ› using "KBasic:11" "≡E"(2) by blast
3259 AOT_thus ‹◇ψ› using 1 "∨E"(2) by blast
3260qed
3261
3262AOT_theorem "T-S5-fund:1": ‹φ → ◇φ›
3263 by (meson "≡⇩d⇩fI" "conventions:5" "contraposition:2"
3264 "Hypothetical Syllogism" "→I" "qml:2"[axiom_inst])
3265lemmas "T◇" = "T-S5-fund:1"
3266
3267AOT_theorem "T-S5-fund:2": ‹◇□φ → □φ›
3268proof(rule "→I")
3269 AOT_assume ‹◇□φ›
3270 AOT_hence ‹¬□◇¬φ›
3271 using "KBasic:14" "≡E"(4) "raa-cor:3" by blast
3272 moreover AOT_have ‹◇¬φ → □◇¬φ›
3273 by (fact "qml:3"[axiom_inst])
3274 ultimately AOT_have ‹¬◇¬φ›
3275 using "modus-tollens:1" by blast
3276 AOT_thus ‹□φ› using "KBasic:12" "≡E"(2) by blast
3277qed
3278lemmas "5◇" = "T-S5-fund:2"
3279
3280AOT_theorem "Act-Sub:1": ‹❙𝒜φ ≡ ¬❙𝒜¬φ›
3281 by (AOT_subst ‹❙𝒜¬φ› ‹¬❙𝒜φ›)
3282 (auto simp: "logic-actual-nec:1"[axiom_inst] "oth-class-taut:3:b")
3283
3284AOT_theorem "Act-Sub:2": ‹◇φ ≡ ❙𝒜◇φ›
3285 using "conventions:5"[THEN "≡Df"]
3286 by (AOT_subst ‹◇φ› ‹¬□¬φ›)
3287 (metis "deduction-theorem" "≡I" "≡E"(1) "≡E"(2) "≡E"(3)
3288 "logic-actual-nec:1"[axiom_inst] "qml-act:2"[axiom_inst])
3289
3290AOT_theorem "Act-Sub:3": ‹❙𝒜φ → ◇φ›
3291 using "conventions:5"[THEN "≡Df"]
3292 by (AOT_subst ‹◇φ› ‹¬□¬φ›)
3293 (metis "Act-Sub:1" "→I" "≡E"(4) "nec-imp-act" "reductio-aa:2" "→E")
3294
3295AOT_theorem "Act-Sub:4": ‹❙𝒜φ ≡ ◇❙𝒜φ›
3296proof (rule "≡I"; rule "→I")
3297 AOT_assume ‹❙𝒜φ›
3298 AOT_thus ‹◇❙𝒜φ› using "T◇" "vdash-properties:10" by blast
3299next
3300 AOT_assume ‹◇❙𝒜φ›
3301 AOT_hence ‹¬□¬❙𝒜φ›
3302 using "≡⇩d⇩fE" "conventions:5" by blast
3303 AOT_hence ‹¬□❙𝒜¬φ›
3304 by (AOT_subst ‹❙𝒜¬φ› ‹¬❙𝒜φ›)
3305 (simp add: "logic-actual-nec:1"[axiom_inst])
3306 AOT_thus ‹❙𝒜φ›
3307 using "Act-Basic:1" "Act-Basic:6" "∨E"(3) "≡E"(4)
3308 "reductio-aa:1" by blast
3309qed
3310
3311AOT_theorem "Act-Sub:5": ‹◇❙𝒜φ → ❙𝒜◇φ›
3312 by (metis "Act-Sub:2" "Act-Sub:3" "Act-Sub:4" "→I" "≡E"(1) "≡E"(2) "→E")
3313
3314AOT_theorem "S5Basic:1": ‹◇φ ≡ □◇φ›
3315 by (simp add: "≡I" "qml:2"[axiom_inst] "qml:3"[axiom_inst])
3316
3317AOT_theorem "S5Basic:2": ‹□φ ≡ ◇□φ›
3318 by (simp add: "T◇" "5◇" "≡I")
3319
3320AOT_theorem "S5Basic:3": ‹φ → □◇φ›
3321 using "T◇" "Hypothetical Syllogism" "qml:3"[axiom_inst] by blast
3322lemmas "B" = "S5Basic:3"
3323
3324AOT_theorem "S5Basic:4": ‹◇□φ → φ›
3325 using "5◇" "Hypothetical Syllogism" "qml:2"[axiom_inst] by blast
3326lemmas "B◇" = "S5Basic:4"
3327
3328AOT_theorem "S5Basic:5": ‹□φ → □□φ›
3329 using "RM:1" "B" "5◇" "Hypothetical Syllogism" by blast
3330lemmas "4" = "S5Basic:5"
3331
3332AOT_theorem "S5Basic:6": ‹□φ ≡ □□φ›
3333 by (simp add: "4" "≡I" "qml:2"[axiom_inst])
3334
3335AOT_theorem "S5Basic:7": ‹◇◇φ → ◇φ›
3336 using "conventions:5"[THEN "≡Df"] "oth-class-taut:3:b"
3337 by (AOT_subst ‹◇◇φ› ‹¬□¬◇φ›;
3338 AOT_subst ‹◇φ› ‹¬□¬φ›;
3339 AOT_subst (reverse) ‹¬¬□¬φ› ‹□¬φ›;
3340 AOT_subst (reverse) ‹□□¬φ› ‹□¬φ›)
3341 (auto simp: "S5Basic:6" "if-p-then-p")
3342
3343lemmas "4◇" = "S5Basic:7"
3344
3345AOT_theorem "S5Basic:8": ‹◇◇φ ≡ ◇φ›
3346 by (simp add: "4◇" "T◇" "≡I")
3347
3348AOT_theorem "S5Basic:9": ‹□(φ ∨ □ψ) ≡ (□φ ∨ □ψ)›
3349 apply (rule "≡I"; rule "→I")
3350 using "KBasic2:6" "5◇" "∨I"(3) "if-p-then-p" "vdash-properties:10"
3351 apply blast
3352 by (meson "KBasic:15" "4" "∨I"(3) "∨E"(1) "Disjunction Addition"(1)
3353 "con-dis-taut:7" "intro-elim:1" "Commutativity of ∨")
3354
3355AOT_theorem "S5Basic:10": ‹□(φ ∨ ◇ψ) ≡ (□φ ∨ ◇ψ)›
3356proof(rule "≡I"; rule "→I")
3357 AOT_assume ‹□(φ ∨ ◇ψ)›
3358 AOT_hence ‹□φ ∨ ◇◇ψ›
3359 by (meson "KBasic2:6" "∨I"(2) "∨E"(1))
3360 AOT_thus ‹□φ ∨ ◇ψ›
3361 by (meson "B◇" "4" "4◇" "T◇" "∨I"(3))
3362next
3363 AOT_assume ‹□φ ∨ ◇ψ›
3364 AOT_hence ‹□φ ∨ □◇ψ›
3365 by (meson "S5Basic:1" "B◇" "S5Basic:6" "T◇" "5◇" "∨I"(3) "intro-elim:1")
3366 AOT_thus ‹□(φ ∨ ◇ψ)›
3367 by (meson "KBasic:15" "∨I"(3) "∨E"(1) "Disjunction Addition"(1,2))
3368qed
3369
3370AOT_theorem "S5Basic:11": ‹◇(φ & ◇ψ) ≡ (◇φ & ◇ψ)›
3371proof -
3372 AOT_have ‹◇(φ & ◇ψ) ≡ ◇¬(¬φ ∨ ¬◇ψ)›
3373 by (AOT_subst ‹φ & ◇ψ› ‹¬(¬φ ∨ ¬◇ψ)›)
3374 (auto simp: "oth-class-taut:5:a" "oth-class-taut:3:a")
3375 also AOT_have ‹… ≡ ◇¬(¬φ ∨ □¬ψ)›
3376 by (AOT_subst ‹□¬ψ› ‹¬◇ψ›)
3377 (auto simp: "KBasic2:1" "oth-class-taut:3:a")
3378 also AOT_have ‹… ≡ ¬□(¬φ ∨ □¬ψ)›
3379 using "KBasic:11" "≡E"(6) "oth-class-taut:3:a" by blast
3380 also AOT_have ‹… ≡ ¬(□¬φ ∨ □¬ψ)›
3381 using "S5Basic:9" "≡E"(1) "oth-class-taut:4:b" by blast
3382 also AOT_have ‹… ≡ ¬(¬◇φ ∨ ¬◇ψ)›
3383 using "KBasic2:1"
3384 by (AOT_subst ‹□¬φ› ‹¬◇φ›; AOT_subst ‹□¬ψ› ‹¬◇ψ›)
3385 (auto simp: "oth-class-taut:3:a")
3386 also AOT_have ‹… ≡ ◇φ & ◇ψ›
3387 using "≡E"(6) "oth-class-taut:3:a" "oth-class-taut:5:a" by blast
3388 finally show ?thesis .
3389qed
3390
3391AOT_theorem "S5Basic:12": ‹◇(φ & □ψ) ≡ (◇φ & □ψ)›
3392proof (rule "≡I"; rule "→I")
3393 AOT_assume ‹◇(φ & □ψ)›
3394 AOT_hence ‹◇φ & ◇□ψ›
3395 using "KBasic2:3" "vdash-properties:6" by blast
3396 AOT_thus ‹◇φ & □ψ›
3397 using "5◇" "&I" "&E"(1) "&E"(2) "vdash-properties:6" by blast
3398next
3399 AOT_assume ‹◇φ & □ψ›
3400 moreover AOT_have ‹(□□ψ & ◇φ) → ◇(φ & □ψ)›
3401 by (AOT_subst ‹φ & □ψ› ‹□ψ & φ›)
3402 (auto simp: "Commutativity of &" "KBasic:16")
3403 ultimately AOT_show ‹◇(φ & □ψ)›
3404 by (metis "4" "&I" "Conjunction Simplification"(1,2) "→E")
3405qed
3406
3407AOT_theorem "S5Basic:13": ‹□(φ → □ψ) ≡ □(◇φ → ψ)›
3408proof (rule "≡I")
3409 AOT_modally_strict {
3410 AOT_have ‹□(φ → □ψ) → (◇φ → ψ)›
3411 by (meson "KBasic:13" "B◇" "Hypothetical Syllogism" "→I")
3412 }
3413 AOT_hence ‹□□(φ → □ψ) → □(◇φ → ψ)›
3414 by (rule RM)
3415 AOT_thus ‹□(φ → □ψ) → □(◇φ → ψ)›
3416 using "4" "Hypothetical Syllogism" by blast
3417next
3418 AOT_modally_strict {
3419 AOT_have ‹□(◇φ → ψ) → (φ → □ψ)›
3420 by (meson "B" "Hypothetical Syllogism" "→I" "qml:1"[axiom_inst])
3421 }
3422 AOT_hence ‹□□(◇φ → ψ) → □(φ → □ψ)›
3423 by (rule RM)
3424 AOT_thus ‹□(◇φ → ψ) → □(φ → □ψ)›
3425 using "4" "Hypothetical Syllogism" by blast
3426qed
3427
3428AOT_theorem "derived-S5-rules:1":
3429 assumes ‹Γ ❙⊢⇩□ ◇φ → ψ›
3430 shows ‹□Γ ❙⊢⇩□ φ → □ψ›
3431proof -
3432 AOT_have ‹□Γ ❙⊢⇩□ □◇φ → □ψ›
3433 using assms by (rule "RM:1[prem]")
3434 AOT_thus ‹□Γ ❙⊢⇩□ φ → □ψ›
3435 using "B" "Hypothetical Syllogism" by blast
3436qed
3437
3438AOT_theorem "derived-S5-rules:2":
3439 assumes ‹Γ ❙⊢⇩□ φ → □ψ›
3440 shows ‹□Γ ❙⊢⇩□ ◇φ → ψ›
3441proof -
3442 AOT_have ‹□Γ ❙⊢⇩□ ◇φ → ◇□ψ›
3443 using assms by (rule "RM:2[prem]")
3444 AOT_thus ‹□Γ ❙⊢⇩□ ◇φ → ψ›
3445 using "B◇" "Hypothetical Syllogism" by blast
3446qed
3447
3448AOT_theorem "BFs:1": ‹∀α □φ{α} → □∀α φ{α}›
3449proof -
3450 AOT_modally_strict {
3451 AOT_have ‹◇∀α □φ{α} → ◇□φ{α}› for α
3452 using "cqt-orig:3" by (rule "RM◇")
3453 AOT_hence ‹◇∀α □φ{α} → ∀α φ{α}›
3454 using "B◇" "∀I" "→E" "→I" by metis
3455 }
3456 thus ?thesis
3457 using "derived-S5-rules:1" by blast
3458qed
3459lemmas "BF" = "BFs:1"
3460
3461AOT_theorem "BFs:2": ‹□∀α φ{α} → ∀α □φ{α}›
3462proof -
3463 AOT_have ‹□∀α φ{α} → □φ{α}› for α
3464 using RM "cqt-orig:3" by metis
3465 thus ?thesis
3466 using "cqt-orig:2"[THEN "→E"] "∀I" by metis
3467qed
3468lemmas "CBF" = "BFs:2"
3469
3470AOT_theorem "BFs:3": ‹◇∃α φ{α} → ∃α ◇φ{α}›
3471proof(rule "→I")
3472 AOT_modally_strict {
3473 AOT_have ‹□∀α ¬φ{α} ≡ ∀α □¬φ{α}›
3474 using BF CBF "≡I" by blast
3475 } note θ = this
3476
3477 AOT_assume ‹◇∃α φ{α}›
3478 AOT_hence ‹¬□¬(∃α φ{α})›
3479 using "≡⇩d⇩fE" "conventions:5" by blast
3480 AOT_hence ‹¬□∀α ¬φ{α}›
3481 apply (AOT_subst ‹∀α ¬φ{α}› ‹¬(∃α φ{α})›)
3482 using "≡⇩d⇩fI" "conventions:3" "conventions:4" "&I"
3483 "contraposition:2" "cqt-further:4"
3484 "df-rules-formulas[3]" by blast
3485 AOT_hence ‹¬∀α □¬φ{α}›
3486 apply (AOT_subst (reverse) ‹∀α □¬φ{α}› ‹□∀α ¬φ{α}›)
3487 using θ by blast
3488 AOT_hence ‹¬∀α ¬¬□¬φ{α}›
3489 by (AOT_subst (reverse) ‹¬¬□¬φ{α}› ‹□¬φ{α}› for: α)
3490 (simp add: "oth-class-taut:3:b")
3491 AOT_hence ‹∃α ¬□¬φ{α}›
3492 by (rule "conventions:4"[THEN "≡⇩d⇩fI"])
3493 AOT_thus ‹∃α ◇φ{α}›
3494 using "conventions:5"[THEN "≡Df"]
3495 by (AOT_subst ‹◇φ{α}› ‹¬□¬φ{α}› for: α)
3496qed
3497lemmas "BF◇" = "BFs:3"
3498
3499AOT_theorem "BFs:4": ‹∃α ◇φ{α} → ◇∃α φ{α}›
3500proof(rule "→I")
3501 AOT_assume ‹∃α ◇φ{α}›
3502 AOT_hence ‹¬∀α ¬◇φ{α}›
3503 using "conventions:4"[THEN "≡⇩d⇩fE"] by blast
3504 AOT_hence ‹¬∀α □¬φ{α}›
3505 using "KBasic2:1"
3506 by (AOT_subst ‹□¬φ{α}› ‹¬◇φ{α}› for: α)
3507 moreover AOT_have ‹∀α □¬φ{α} ≡ □∀α ¬φ{α}›
3508 using "≡I" "BF" "CBF" by metis
3509 ultimately AOT_have 1: ‹¬□∀α ¬φ{α}›
3510 using "≡E"(3) by blast
3511 AOT_show ‹◇∃α φ{α}›
3512 apply (rule "conventions:5"[THEN "≡⇩d⇩fI"])
3513 apply (AOT_subst ‹∃α φ{α}› ‹¬∀α ¬φ{α}›)
3514 apply (simp add: "conventions:4" "≡Df")
3515 apply (AOT_subst ‹¬¬∀α ¬φ{α}› ‹∀α ¬φ{α}›)
3516 by (auto simp: 1 "≡I" "useful-tautologies:1" "useful-tautologies:2")
3517qed
3518lemmas "CBF◇" = "BFs:4"
3519
3520AOT_theorem "sign-S5-thm:1": ‹∃α □φ{α} → □∃α φ{α}›
3521proof(rule "→I")
3522 AOT_assume ‹∃α □φ{α}›
3523 then AOT_obtain α where ‹□φ{α}› using "∃E" by metis
3524 moreover AOT_have ‹□α↓›
3525 by (simp add: "ex:1:a" "rule-ui:2[const_var]" RN)
3526 moreover AOT_have ‹□φ{τ}, □τ↓ ❙⊢⇩□ □∃α φ{α}› for τ
3527 proof -
3528 AOT_have ‹φ{τ}, τ↓ ❙⊢⇩□ ∃α φ{α}› using "existential:1" by blast
3529 AOT_thus ‹□φ{τ}, □τ↓ ❙⊢⇩□ □∃α φ{α}›
3530 using "RN[prem]"[where Γ="{φ τ, «τ↓»}", simplified] by blast
3531 qed
3532 ultimately AOT_show ‹□∃α φ{α}› by blast
3533qed
3534lemmas Buridan = "sign-S5-thm:1"
3535
3536AOT_theorem "sign-S5-thm:2": ‹◇∀α φ{α} → ∀α ◇φ{α}›
3537proof -
3538 AOT_have ‹∀α (◇∀α φ{α} → ◇φ{α})›
3539 by (simp add: "RM◇" "cqt-orig:3" "∀I")
3540 AOT_thus ‹◇∀α φ{α} → ∀α ◇φ{α}›
3541 using "∀E"(4) "∀I" "→E" "→I" by metis
3542qed
3543lemmas "Buridan◇" = "sign-S5-thm:2"
3544
3545AOT_theorem "sign-S5-thm:3":
3546 ‹◇∃α (φ{α} & ψ{α}) → ◇(∃α φ{α} & ∃α ψ{α})›
3547 apply (rule "RM:2")
3548 by (metis (no_types, lifting) "∃E" "&I" "&E"(1) "&E"(2) "→I" "∃I"(2))
3549
3550AOT_theorem "sign-S5-thm:4": ‹◇∃α (φ{α} & ψ{α}) → ◇∃α φ{α}›
3551 apply (rule "RM:2")
3552 by (meson "instantiation" "&E"(1) "→I" "∃I"(2))
3553
3554AOT_theorem "sign-S5-thm:5":
3555 ‹(□∀α (φ{α} → ψ{α}) & □∀α (ψ{α} → χ{α})) → □∀α (φ{α} → χ{α})›
3556proof -
3557 {
3558 fix φ' ψ' χ'
3559 AOT_assume ‹❙⊢⇩□ φ' & ψ' → χ'›
3560 AOT_hence ‹□φ' & □ψ' → □χ'›
3561 using "RN[prem]"[where Γ="{φ', ψ'}"] apply simp
3562 using "&E" "&I" "→E" "→I" by metis
3563 } note R = this
3564 show ?thesis by (rule R; fact AOT)
3565qed
3566
3567AOT_theorem "sign-S5-thm:6":
3568 ‹(□∀α (φ{α} ≡ ψ{α}) & □∀α(ψ{α} ≡ χ{α})) → □∀α(φ{α} ≡ χ{α})›
3569proof -
3570 {
3571 fix φ' ψ' χ'
3572 AOT_assume ‹❙⊢⇩□ φ' & ψ' → χ'›
3573 AOT_hence ‹□φ' & □ψ' → □χ'›
3574 using "RN[prem]"[where Γ="{φ', ψ'}"] apply simp
3575 using "&E" "&I" "→E" "→I" by metis
3576 } note R = this
3577 show ?thesis by (rule R; fact AOT)
3578qed
3579
3580AOT_theorem "exist-nec2:1": ‹◇τ↓ → τ↓›
3581 using "B◇" "RM◇" "Hypothetical Syllogism" "exist-nec" by blast
3582
3583AOT_theorem "exists-nec2:2": ‹◇τ↓ ≡ □τ↓›
3584 by (meson "Act-Sub:3" "Hypothetical Syllogism" "exist-nec"
3585 "exist-nec2:1" "≡I" "nec-imp-act")
3586
3587AOT_theorem "exists-nec2:3": ‹¬τ↓ → □¬τ↓›
3588 using "KBasic2:1" "→I" "exist-nec2:1" "≡E"(2) "modus-tollens:1" by blast
3589
3590AOT_theorem "exists-nec2:4": ‹◇¬τ↓ ≡ □¬τ↓›
3591 by (metis "Act-Sub:3" "KBasic:12" "→I" "exist-nec" "exists-nec2:3"
3592 "≡I" "≡E"(4) "nec-imp-act" "reductio-aa:1")
3593
3594AOT_theorem "id-nec2:1": ‹◇α = β → α = β›
3595 using "B◇" "RM◇" "Hypothetical Syllogism" "id-nec:1" by blast
3596
3597AOT_theorem "id-nec2:2": ‹α ≠ β → □α ≠ β›
3598 apply (AOT_subst ‹α ≠ β› ‹¬(α = β)›)
3599 using "=-infix"[THEN "≡Df"] apply blast
3600 using "KBasic2:1" "→I" "id-nec2:1" "≡E"(2) "modus-tollens:1" by blast
3601
3602AOT_theorem "id-nec2:3": ‹◇α ≠ β → α ≠ β›
3603 apply (AOT_subst ‹α ≠ β› ‹¬(α = β)›)
3604 using "=-infix"[THEN "≡Df"] apply blast
3605 by (metis "KBasic:11" "→I" "id-nec:2" "≡E"(3) "reductio-aa:2" "→E")
3606
3607AOT_theorem "id-nec2:4": ‹◇α = β → □α = β›
3608 using "Hypothetical Syllogism" "id-nec2:1" "id-nec:1" by blast
3609
3610AOT_theorem "id-nec2:5": ‹◇α ≠ β → □α ≠ β›
3611 using "id-nec2:3" "id-nec2:2" "→I" "→E" by metis
3612
3613AOT_theorem "sc-eq-box-box:1": ‹□(φ → □φ) ≡ (◇φ → □φ)›
3614 apply (rule "≡I"; rule "→I")
3615 using "KBasic:13" "5◇" "Hypothetical Syllogism" "→E" apply blast
3616 by (metis "KBasic2:1" "KBasic:1" "KBasic:2" "S5Basic:13" "≡E"(2)
3617 "raa-cor:5" "→E")
3618
3619AOT_theorem "sc-eq-box-box:2": ‹(□(φ → □φ) ∨ (◇φ → □φ)) → (◇φ ≡ □φ)›
3620 by (metis "Act-Sub:3" "KBasic:13" "5◇" "∨E"(2) "→I" "≡I"
3621 "nec-imp-act" "raa-cor:2" "→E")
3622
3623AOT_theorem "sc-eq-box-box:3": ‹□(φ → □φ) → (¬□φ ≡ □¬φ)›
3624proof (rule "→I"; rule "≡I"; rule "→I")
3625 AOT_assume ‹□(φ → □φ)›
3626 AOT_hence ‹◇φ → □φ› using "sc-eq-box-box:1" "≡E" by blast
3627 moreover AOT_assume ‹¬□φ›
3628 ultimately AOT_have ‹¬◇φ›
3629 using "modus-tollens:1" by blast
3630 AOT_thus ‹□¬φ›
3631 using "KBasic2:1" "≡E"(2) by blast
3632next
3633 AOT_assume ‹□(φ → □φ)›
3634 moreover AOT_assume ‹□¬φ›
3635 ultimately AOT_show ‹¬□φ›
3636 using "modus-tollens:1" "qml:2"[axiom_inst] "→E" by blast
3637qed
3638
3639AOT_theorem "sc-eq-box-box:4":
3640 ‹(□(φ → □φ) & □(ψ → □ψ)) → ((□φ ≡ □ψ) → □(φ ≡ ψ))›
3641proof(rule "→I"; rule "→I")
3642 AOT_assume θ: ‹□(φ → □φ) & □(ψ → □ψ)›
3643 AOT_assume ξ: ‹□φ ≡ □ψ›
3644 AOT_hence ‹(□φ & □ψ) ∨ (¬□φ & ¬□ψ)›
3645 using "≡E"(4) "oth-class-taut:4:g" "raa-cor:3" by blast
3646 moreover {
3647 AOT_assume ‹□φ & □ψ›
3648 AOT_hence ‹□(φ ≡ ψ)›
3649 using "KBasic:3" "KBasic:8" "≡E"(2) "vdash-properties:10" by blast
3650 }
3651 moreover {
3652 AOT_assume ‹¬□φ & ¬□ψ›
3653 moreover AOT_have ‹¬□φ ≡ □¬φ› and ‹¬□ψ ≡ □¬ψ›
3654 using θ "Conjunction Simplification"(1,2)
3655 "sc-eq-box-box:3" "→E" by metis+
3656 ultimately AOT_have ‹□¬φ & □¬ψ›
3657 by (metis "&I" "Conjunction Simplification"(1,2)
3658 "≡E"(4) "modus-tollens:1" "raa-cor:3")
3659 AOT_hence ‹□(φ ≡ ψ)›
3660 using "KBasic:3" "KBasic:9" "≡E"(2) "→E" by blast
3661 }
3662 ultimately AOT_show ‹□(φ ≡ ψ)›
3663 using "∨E"(2) "reductio-aa:1" by blast
3664qed
3665
3666AOT_theorem "sc-eq-box-box:5":
3667 ‹(□(φ → □φ) & □(ψ → □ψ)) → □((φ ≡ ψ) → □(φ ≡ ψ))›
3668proof (rule "→I")
3669 AOT_assume ‹(□(φ → □φ) & □(ψ → □ψ))›
3670 AOT_hence ‹□(□(φ → □φ) & □(ψ → □ψ))›
3671 using 4[THEN "→E"] "&E" "&I" "KBasic:3" "≡E"(2) by metis
3672 moreover AOT_have ‹□(□(φ → □φ) & □(ψ → □ψ)) → □((φ ≡ ψ) → □(φ ≡ ψ))›
3673 proof (rule RM; rule "→I"; rule "→I")
3674 AOT_modally_strict {
3675 AOT_assume A: ‹(□(φ → □φ) & □(ψ → □ψ))›
3676 AOT_hence ‹φ → □φ› and ‹ψ → □ψ›
3677 using "&E" "qml:2"[axiom_inst] "→E" by blast+
3678 moreover AOT_assume ‹φ ≡ ψ›
3679 ultimately AOT_have ‹□φ ≡ □ψ›
3680 using "→E" "qml:2"[axiom_inst] "≡E" "≡I" by meson
3681 moreover AOT_have ‹(□φ ≡ □ψ) → □(φ ≡ ψ)›
3682 using A "sc-eq-box-box:4" "→E" by blast
3683 ultimately AOT_show ‹□(φ ≡ ψ)› using "→E" by blast
3684 }
3685 qed
3686 ultimately AOT_show ‹□((φ ≡ ψ) → □(φ ≡ ψ))› using "→E" by blast
3687qed
3688
3689AOT_theorem "sc-eq-box-box:6": ‹□(φ → □φ) → ((φ → □ψ) → □(φ → ψ))›
3690proof (rule "→I"; rule "→I"; rule "raa-cor:1")
3691 AOT_assume ‹¬□(φ → ψ)›
3692 AOT_hence ‹◇¬(φ → ψ)›
3693 by (metis "KBasic:11" "≡E"(1))
3694 AOT_hence ‹◇(φ & ¬ψ)›
3695 by (AOT_subst ‹φ & ¬ψ› ‹¬(φ → ψ)›)
3696 (meson "Commutativity of ≡" "≡E"(1) "oth-class-taut:1:b")
3697 AOT_hence ‹◇φ› and 2: ‹◇¬ψ›
3698 using "KBasic2:3"[THEN "→E"] "&E" by blast+
3699 moreover AOT_assume ‹□(φ → □φ)›
3700 ultimately AOT_have ‹□φ›
3701 by (metis "≡E"(1) "sc-eq-box-box:1" "→E")
3702 AOT_hence φ
3703 using "qml:2"[axiom_inst, THEN "→E"] by blast
3704 moreover AOT_assume ‹φ → □ψ›
3705 ultimately AOT_have ‹□ψ›
3706 using "→E" by blast
3707 moreover AOT_have ‹¬□ψ›
3708 using 2 "KBasic:12" "¬¬I" "intro-elim:3:d" by blast
3709 ultimately AOT_show ‹□ψ & ¬□ψ›
3710 using "&I" by blast
3711qed
3712
3713AOT_theorem "sc-eq-box-box:7": ‹□(φ → □φ) → ((φ → ❙𝒜ψ) → ❙𝒜(φ → ψ))›
3714proof (rule "→I"; rule "→I"; rule "raa-cor:1")
3715 AOT_assume ‹¬❙𝒜(φ → ψ)›
3716 AOT_hence ‹❙𝒜¬(φ → ψ)›
3717 by (metis "Act-Basic:1" "∨E"(2))
3718 AOT_hence ‹❙𝒜(φ & ¬ψ)›
3719 by (AOT_subst ‹φ & ¬ψ› ‹¬(φ → ψ)›)
3720 (meson "Commutativity of ≡" "≡E"(1) "oth-class-taut:1:b")
3721 AOT_hence ‹❙𝒜φ› and 2: ‹❙𝒜¬ψ›
3722 using "Act-Basic:2"[THEN "≡E"(1)] "&E" by blast+
3723 AOT_hence ‹◇φ›
3724 by (metis "Act-Sub:3" "→E")
3725 moreover AOT_assume ‹□(φ → □φ)›
3726 ultimately AOT_have ‹□φ›
3727 by (metis "≡E"(1) "sc-eq-box-box:1" "→E")
3728 AOT_hence φ
3729 using "qml:2"[axiom_inst, THEN "→E"] by blast
3730 moreover AOT_assume ‹φ → ❙𝒜ψ›
3731 ultimately AOT_have ‹❙𝒜ψ›
3732 using "→E" by blast
3733 moreover AOT_have ‹¬❙𝒜ψ›
3734 using 2 by (meson "Act-Sub:1" "≡E"(4) "raa-cor:3")
3735 ultimately AOT_show ‹❙𝒜ψ & ¬❙𝒜ψ›
3736 using "&I" by blast
3737qed
3738
3739AOT_theorem "sc-eq-fur:1": ‹◇❙𝒜φ ≡ □❙𝒜φ›
3740 using "Act-Basic:6" "Act-Sub:4" "≡E"(6) by blast
3741
3742AOT_theorem "sc-eq-fur:2": ‹□(φ → □φ) → (❙𝒜φ ≡ φ)›
3743 by (metis "B◇" "Act-Sub:3" "KBasic:13" "T◇" "Hypothetical Syllogism"
3744 "→I" "≡I" "nec-imp-act")
3745
3746AOT_theorem "sc-eq-fur:3":
3747 ‹□∀x (φ{x} → □φ{x}) → (∃!x φ{x} → ❙ιx φ{x}↓)›
3748proof (rule "→I"; rule "→I")
3749 AOT_assume ‹□∀x (φ{x} → □φ{x})›
3750 AOT_hence A: ‹∀x □(φ{x} → □φ{x})›
3751 using CBF "→E" by blast
3752 AOT_assume ‹∃!x φ{x}›
3753 then AOT_obtain a where a_def: ‹φ{a} & ∀y (φ{y} → y = a)›
3754 using "∃E"[rotated 1, OF "uniqueness:1"[THEN "≡⇩d⇩fE"]] by blast
3755 moreover AOT_have ‹□φ{a}›
3756 using calculation A "∀E"(2) "qml:2"[axiom_inst] "→E" "&E"(1) by blast
3757 AOT_hence ‹❙𝒜φ{a}›
3758 using "nec-imp-act" "→E" by blast
3759 moreover AOT_have ‹∀y (❙𝒜φ{y} → y = a)›
3760 proof (rule "∀I"; rule "→I")
3761 fix b
3762 AOT_assume ‹❙𝒜φ{b}›
3763 AOT_hence ‹◇φ{b}›
3764 using "Act-Sub:3" "→E" by blast
3765 moreover {
3766 AOT_have ‹□(φ{b} → □φ{b})›
3767 using A "∀E"(2) by blast
3768 AOT_hence ‹◇φ{b} → □φ{b}›
3769 using "KBasic:13" "5◇" "Hypothetical Syllogism" "→E" by blast
3770 }
3771 ultimately AOT_have ‹□φ{b}›
3772 using "→E" by blast
3773 AOT_hence ‹φ{b}›
3774 using "qml:2"[axiom_inst] "→E" by blast
3775 AOT_thus ‹b = a›
3776 using a_def[THEN "&E"(2)] "∀E"(2) "→E" by blast
3777 qed
3778 ultimately AOT_have ‹❙𝒜φ{a} & ∀y (❙𝒜φ{y} → y = a)›
3779 using "&I" by blast
3780 AOT_hence ‹∃x (❙𝒜φ{x} & ∀y (❙𝒜φ{y} → y = x))›
3781 using "∃I" by fast
3782 AOT_hence ‹∃!x ❙𝒜φ{x}›
3783 using "uniqueness:1"[THEN "≡⇩d⇩fI"] by fast
3784 AOT_thus ‹❙ιx φ{x}↓›
3785 using "actual-desc:1"[THEN "≡E"(2)] by blast
3786qed
3787
3788AOT_theorem "sc-eq-fur:4":
3789‹□∀x (φ{x} → □φ{x}) → (x = ❙ιx φ{x} ≡ (φ{x} & ∀z (φ{z} → z = x)))›
3790proof (rule "→I")
3791 AOT_assume ‹□∀x (φ{x} → □φ{x})›
3792 AOT_hence ‹∀x □(φ{x} → □φ{x})›
3793 using CBF "→E" by blast
3794 AOT_hence A: ‹❙𝒜φ{α} ≡ φ{α}› for α
3795 using "sc-eq-fur:2" "∀E" "→E" by fast
3796 AOT_show ‹x = ❙ιx φ{x} ≡ (φ{x} & ∀z (φ{z} → z = x))›
3797 proof (rule "≡I"; rule "→I")
3798 AOT_assume ‹x = ❙ιx φ{x}›
3799 AOT_hence B: ‹❙𝒜φ{x} & ∀z (❙𝒜φ{z} → z = x)›
3800 using "nec-hintikka-scheme"[THEN "≡E"(1)] by blast
3801 AOT_show ‹φ{x} & ∀z (φ{z} → z = x)›
3802 proof (rule "&I"; (rule "∀I"; rule "→I")?)
3803 AOT_show ‹φ{x}›
3804 using A B[THEN "&E"(1)] "≡E"(1) by blast
3805 next
3806 AOT_show ‹z = x› if ‹φ{z}› for z
3807 using that B[THEN "&E"(2)] "∀E"(2) "→E" A[THEN "≡E"(2)] by blast
3808 qed
3809 next
3810 AOT_assume B: ‹φ{x} & ∀z (φ{z} → z = x)›
3811 AOT_have ‹❙𝒜φ{x} & ∀z (❙𝒜φ{z} → z = x)›
3812 proof(rule "&I"; (rule "∀I"; rule "→I")?)
3813 AOT_show ‹❙𝒜φ{x}›
3814 using B[THEN "&E"(1)] A[THEN "≡E"(2)] by blast
3815 next
3816 AOT_show ‹b = x› if ‹❙𝒜φ{b}› for b
3817 using A[THEN "≡E"(1)] that
3818 B[THEN "&E"(2), THEN "∀E"(2), THEN "→E"] by blast
3819 qed
3820 AOT_thus ‹x = ❙ιx φ{x}›
3821 using "nec-hintikka-scheme"[THEN "≡E"(2)] by blast
3822 qed
3823qed
3824
3825AOT_theorem "id-act:1": ‹α = β ≡ ❙𝒜α = β›
3826 by (meson "Act-Sub:3" "Hypothetical Syllogism"
3827 "id-nec2:1" "id-nec:2" "≡I" "nec-imp-act")
3828
3829AOT_theorem "id-act:2": ‹α ≠ β ≡ ❙𝒜α ≠ β›
3830proof (AOT_subst ‹α ≠ β› ‹¬(α = β)›)
3831 AOT_modally_strict {
3832 AOT_show ‹α ≠ β ≡ ¬(α = β)›
3833 by (simp add: "=-infix" "≡Df")
3834 }
3835next
3836 AOT_show ‹¬(α = β) ≡ ❙𝒜¬(α = β)›
3837 proof (safe intro!: "≡I" "→I")
3838 AOT_assume ‹¬α = β›
3839 AOT_hence ‹¬❙𝒜α = β› using "id-act:1" "≡E"(3) by blast
3840 AOT_thus ‹❙𝒜¬α = β›
3841 using "¬¬E" "Act-Sub:1" "≡E"(3) by blast
3842 next
3843 AOT_assume ‹❙𝒜¬α = β›
3844 AOT_hence ‹¬❙𝒜α = β›
3845 using "¬¬I" "Act-Sub:1" "≡E"(4) by blast
3846 AOT_thus ‹¬α = β›
3847 using "id-act:1" "≡E"(4) by blast
3848 qed
3849qed
3850
3851AOT_theorem "A-Exists:1": ‹❙𝒜∃!α φ{α} ≡ ∃!α ❙𝒜φ{α}›
3852proof -
3853 AOT_have ‹❙𝒜∃!α φ{α} ≡ ❙𝒜∃α∀β (φ{β} ≡ β = α)›
3854 by (AOT_subst ‹∃!α φ{α}› ‹∃α∀β (φ{β} ≡ β = α)›)
3855 (auto simp add: "oth-class-taut:3:a" "uniqueness:2")
3856 also AOT_have ‹… ≡ ∃α ❙𝒜∀β (φ{β} ≡ β = α)›
3857 by (simp add: "Act-Basic:10")
3858 also AOT_have ‹… ≡ ∃α∀β ❙𝒜(φ{β} ≡ β = α)›
3859 by (AOT_subst ‹❙𝒜∀β (φ{β} ≡ β = α)› ‹∀β ❙𝒜(φ{β} ≡ β = α)› for: α)
3860 (auto simp: "logic-actual-nec:3"[axiom_inst] "oth-class-taut:3:a")
3861 also AOT_have ‹… ≡ ∃α∀β (❙𝒜φ{β} ≡ ❙𝒜β = α)›
3862 by (AOT_subst (reverse) ‹❙𝒜φ{β} ≡ ❙𝒜β = α›
3863 ‹❙𝒜(φ{β} ≡ β = α)› for: α β :: 'a)
3864 (auto simp: "Act-Basic:5" "cqt-further:7")
3865 also AOT_have ‹… ≡ ∃α∀β (❙𝒜φ{β} ≡ β = α)›
3866 by (AOT_subst (reverse) ‹❙𝒜β = α› ‹β = α› for: α β :: 'a)
3867 (auto simp: "id-act:1" "cqt-further:7")
3868 also AOT_have ‹... ≡ ∃!α ❙𝒜φ{α}›
3869 using "uniqueness:2" "Commutativity of ≡"[THEN "≡E"(1)] by fast
3870 finally show ?thesis.
3871qed
3872
3873AOT_theorem "A-Exists:2": ‹❙ιx φ{x}↓ ≡ ❙𝒜∃!x φ{x}›
3874 by (AOT_subst ‹❙𝒜∃!x φ{x}› ‹∃!x ❙𝒜φ{x}›)
3875 (auto simp: "actual-desc:1" "A-Exists:1")
3876
3877AOT_theorem "id-act-desc:1": ‹❙ιx (x = y)↓›
3878proof(rule "existence:1"[THEN "≡⇩d⇩fI"]; rule "∃I")
3879 AOT_show ‹[λx E!x → E!x]❙ιx (x = y)›
3880 proof (rule "russell-axiom[exe,1].nec-russell-axiom"[THEN "≡E"(2)];
3881 rule "∃I"; (rule "&I")+)
3882 AOT_show ‹❙𝒜y = y› by (simp add: "RA[2]" "id-eq:1")
3883 next
3884 AOT_show ‹∀z (❙𝒜z = y → z = y)›
3885 apply (rule "∀I")
3886 using "id-act:1"[THEN "≡E"(2)] "→I" by blast
3887 next
3888 AOT_show ‹[λx E!x → E!x]y›
3889 proof (rule "lambda-predicates:2"[axiom_inst, THEN "→E", THEN "≡E"(2)])
3890 AOT_show ‹[λx E!x → E!x]↓›
3891 by "cqt:2[lambda]"
3892 next
3893 AOT_show ‹E!y → E!y›
3894 by (simp add: "if-p-then-p")
3895 qed
3896 qed
3897next
3898 AOT_show ‹[λx E!x → E!x]↓›
3899 by "cqt:2[lambda]"
3900qed
3901
3902AOT_theorem "id-act-desc:2": ‹y = ❙ιx (x = y)›
3903 by (rule descriptions[axiom_inst, THEN "≡E"(2)];
3904 rule "∀I"; rule "id-act:1"[symmetric])
3905
3906AOT_theorem "pre-en-eq:1[1]": ‹x⇩1[F] → □x⇩1[F]›
3907 by (simp add: encoding "vdash-properties:1[2]")
3908
3909AOT_theorem "pre-en-eq:1[2]": ‹x⇩1x⇩2[F] → □x⇩1x⇩2[F]›
3910proof (rule "→I")
3911 AOT_assume ‹x⇩1x⇩2[F]›
3912 AOT_hence ‹x⇩1[λy [F]yx⇩2]› and ‹x⇩2[λy [F]x⇩1y]›
3913 using "nary-encoding[2]"[axiom_inst, THEN "≡E"(1)] "&E" by blast+
3914 moreover AOT_have ‹[λy [F]yx⇩2]↓› by "cqt:2"
3915 moreover AOT_have ‹[λy [F]x⇩1y]↓› by "cqt:2"
3916 ultimately AOT_have ‹□x⇩1[λy [F]yx⇩2]› and ‹□x⇩2[λy [F]x⇩1y]›
3917 using encoding[axiom_inst, unvarify F] "→E" "&I" by blast+
3918 note A = this
3919 AOT_hence ‹□(x⇩1[λy [F]yx⇩2] & x⇩2[λy [F]x⇩1y])›
3920 using "KBasic:3"[THEN "≡E"(2)] "&I" by blast
3921 AOT_thus ‹□x⇩1x⇩2[F]›
3922 by (rule "nary-encoding[2]"[axiom_inst, THEN RN,
3923 THEN "KBasic:6"[THEN "→E"],
3924 THEN "≡E"(2)])
3925qed
3926
3927AOT_theorem "pre-en-eq:1[3]": ‹x⇩1x⇩2x⇩3[F] → □x⇩1x⇩2x⇩3[F]›
3928proof (rule "→I")
3929 AOT_assume ‹x⇩1x⇩2x⇩3[F]›
3930 AOT_hence ‹x⇩1[λy [F]yx⇩2x⇩3]›
3931 and ‹x⇩2[λy [F]x⇩1yx⇩3]›
3932 and ‹x⇩3[λy [F]x⇩1x⇩2y]›
3933 using "nary-encoding[3]"[axiom_inst, THEN "≡E"(1)] "&E" by blast+
3934 moreover AOT_have ‹[λy [F]yx⇩2x⇩3]↓› by "cqt:2"
3935 moreover AOT_have ‹[λy [F]x⇩1yx⇩3]↓› by "cqt:2"
3936 moreover AOT_have ‹[λy [F]x⇩1x⇩2y]↓› by "cqt:2"
3937 ultimately AOT_have ‹□x⇩1[λy [F]yx⇩2x⇩3]›
3938 and ‹□x⇩2[λy [F]x⇩1yx⇩3]›
3939 and ‹□x⇩3[λy [F]x⇩1x⇩2y]›
3940 using encoding[axiom_inst, unvarify F] "→E" by blast+
3941 note A = this
3942 AOT_have B: ‹□(x⇩1[λy [F]yx⇩2x⇩3] & x⇩2[λy [F]x⇩1yx⇩3] & x⇩3[λy [F]x⇩1x⇩2y])›
3943 by (rule "KBasic:3"[THEN "≡E"(2)] "&I" A)+
3944 AOT_thus ‹□x⇩1x⇩2x⇩3[F]›
3945 by (rule "nary-encoding[3]"[axiom_inst, THEN RN,
3946 THEN "KBasic:6"[THEN "→E"], THEN "≡E"(2)])
3947qed
3948
3949AOT_theorem "pre-en-eq:1[4]": ‹x⇩1x⇩2x⇩3x⇩4[F] → □x⇩1x⇩2x⇩3x⇩4[F]›
3950proof (rule "→I")
3951 AOT_assume ‹x⇩1x⇩2x⇩3x⇩4[F]›
3952 AOT_hence ‹x⇩1[λy [F]yx⇩2x⇩3x⇩4]›
3953 and ‹x⇩2[λy [F]x⇩1yx⇩3x⇩4]›
3954 and ‹x⇩3[λy [F]x⇩1x⇩2yx⇩4]›
3955 and ‹x⇩4[λy [F]x⇩1x⇩2x⇩3y]›
3956 using "nary-encoding[4]"[axiom_inst, THEN "≡E"(1)] "&E" by metis+
3957 moreover AOT_have ‹[λy [F]yx⇩2x⇩3x⇩4]↓› by "cqt:2"
3958 moreover AOT_have ‹[λy [F]x⇩1yx⇩3x⇩4]↓› by "cqt:2"
3959 moreover AOT_have ‹[λy [F]x⇩1x⇩2yx⇩4]↓› by "cqt:2"
3960 moreover AOT_have ‹[λy [F]x⇩1x⇩2x⇩3y]↓› by "cqt:2"
3961 ultimately AOT_have ‹□x⇩1[λy [F]yx⇩2x⇩3x⇩4]›
3962 and ‹□x⇩2[λy [F]x⇩1yx⇩3x⇩4]›
3963 and ‹□x⇩3[λy [F]x⇩1x⇩2yx⇩4]›
3964 and ‹□x⇩4[λy [F]x⇩1x⇩2x⇩3y]›
3965 using "→E" encoding[axiom_inst, unvarify F] by blast+
3966 note A = this
3967 AOT_have B: ‹□(x⇩1[λy [F]yx⇩2x⇩3x⇩4] &
3968 x⇩2[λy [F]x⇩1yx⇩3x⇩4] &
3969 x⇩3[λy [F]x⇩1x⇩2yx⇩4] &
3970 x⇩4[λy [F]x⇩1x⇩2x⇩3y])›
3971 by (rule "KBasic:3"[THEN "≡E"(2)] "&I" A)+
3972 AOT_thus ‹□x⇩1x⇩2x⇩3x⇩4[F]›
3973 by (rule "nary-encoding[4]"[axiom_inst, THEN RN,
3974 THEN "KBasic:6"[THEN "→E"], THEN "≡E"(2)])
3975qed
3976
3977AOT_theorem "pre-en-eq:2[1]": ‹¬x⇩1[F] → □¬x⇩1[F]›
3978proof (rule "→I"; rule "raa-cor:1")
3979 AOT_assume ‹¬□¬x⇩1[F]›
3980 AOT_hence ‹◇x⇩1[F]›
3981 by (rule "conventions:5"[THEN "≡⇩d⇩fI"])
3982 AOT_hence ‹x⇩1[F]›
3983 by(rule "S5Basic:13"[THEN "≡E"(1), OF "pre-en-eq:1[1]"[THEN RN],
3984 THEN "qml:2"[axiom_inst, THEN "→E"], THEN "→E"])
3985 moreover AOT_assume ‹¬x⇩1[F]›
3986 ultimately AOT_show ‹x⇩1[F] & ¬x⇩1[F]› by (rule "&I")
3987qed
3988AOT_theorem "pre-en-eq:2[2]": ‹¬x⇩1x⇩2[F] → □¬x⇩1x⇩2[F]›
3989proof (rule "→I"; rule "raa-cor:1")
3990 AOT_assume ‹¬□¬x⇩1x⇩2[F]›
3991 AOT_hence ‹◇x⇩1x⇩2[F]›
3992 by (rule "conventions:5"[THEN "≡⇩d⇩fI"])
3993 AOT_hence ‹x⇩1x⇩2[F]›
3994 by(rule "S5Basic:13"[THEN "≡E"(1), OF "pre-en-eq:1[2]"[THEN RN],
3995 THEN "qml:2"[axiom_inst, THEN "→E"], THEN "→E"])
3996 moreover AOT_assume ‹¬x⇩1x⇩2[F]›
3997 ultimately AOT_show ‹x⇩1x⇩2[F] & ¬x⇩1x⇩2[F]› by (rule "&I")
3998qed
3999
4000AOT_theorem "pre-en-eq:2[3]": ‹¬x⇩1x⇩2x⇩3[F] → □¬x⇩1x⇩2x⇩3[F]›
4001proof (rule "→I"; rule "raa-cor:1")
4002 AOT_assume ‹¬□¬x⇩1x⇩2x⇩3[F]›
4003 AOT_hence ‹◇x⇩1x⇩2x⇩3[F]›
4004 by (rule "conventions:5"[THEN "≡⇩d⇩fI"])
4005 AOT_hence ‹x⇩1x⇩2x⇩3[F]›
4006 by(rule "S5Basic:13"[THEN "≡E"(1), OF "pre-en-eq:1[3]"[THEN RN],
4007 THEN "qml:2"[axiom_inst, THEN "→E"], THEN "→E"])
4008 moreover AOT_assume ‹¬x⇩1x⇩2x⇩3[F]›
4009 ultimately AOT_show ‹x⇩1x⇩2x⇩3[F] & ¬x⇩1x⇩2x⇩3[F]› by (rule "&I")
4010qed
4011
4012AOT_theorem "pre-en-eq:2[4]": ‹¬x⇩1x⇩2x⇩3x⇩4[F] → □¬x⇩1x⇩2x⇩3x⇩4[F]›
4013proof (rule "→I"; rule "raa-cor:1")
4014 AOT_assume ‹¬□¬x⇩1x⇩2x⇩3x⇩4[F]›
4015 AOT_hence ‹◇x⇩1x⇩2x⇩3x⇩4[F]›
4016 by (rule "conventions:5"[THEN "≡⇩d⇩fI"])
4017 AOT_hence ‹x⇩1x⇩2x⇩3x⇩4[F]›
4018 by(rule "S5Basic:13"[THEN "≡E"(1), OF "pre-en-eq:1[4]"[THEN RN],
4019 THEN "qml:2"[axiom_inst, THEN "→E"], THEN "→E"])
4020 moreover AOT_assume ‹¬x⇩1x⇩2x⇩3x⇩4[F]›
4021 ultimately AOT_show ‹x⇩1x⇩2x⇩3x⇩4[F] & ¬x⇩1x⇩2x⇩3x⇩4[F]› by (rule "&I")
4022qed
4023
4024AOT_theorem "en-eq:1[1]": ‹◇x⇩1[F] ≡ □x⇩1[F]›
4025 using "pre-en-eq:1[1]"[THEN RN] "sc-eq-box-box:2" "∨I" "→E" by metis
4026AOT_theorem "en-eq:1[2]": ‹◇x⇩1x⇩2[F] ≡ □x⇩1x⇩2[F]›
4027 using "pre-en-eq:1[2]"[THEN RN] "sc-eq-box-box:2" "∨I" "→E" by metis
4028AOT_theorem "en-eq:1[3]": ‹◇x⇩1x⇩2x⇩3[F] ≡ □x⇩1x⇩2x⇩3[F]›
4029 using "pre-en-eq:1[3]"[THEN RN] "sc-eq-box-box:2" "∨I" "→E" by fast
4030AOT_theorem "en-eq:1[4]": ‹◇x⇩1x⇩2x⇩3x⇩4[F] ≡ □x⇩1x⇩2x⇩3x⇩4[F]›
4031 using "pre-en-eq:1[4]"[THEN RN] "sc-eq-box-box:2" "∨I" "→E" by fast
4032
4033AOT_theorem "en-eq:2[1]": ‹x⇩1[F] ≡ □x⇩1[F]›
4034 by (simp add: "≡I" "pre-en-eq:1[1]" "qml:2"[axiom_inst])
4035AOT_theorem "en-eq:2[2]": ‹x⇩1x⇩2[F] ≡ □x⇩1x⇩2[F]›
4036 by (simp add: "≡I" "pre-en-eq:1[2]" "qml:2"[axiom_inst])
4037AOT_theorem "en-eq:2[3]": ‹x⇩1x⇩2x⇩3[F] ≡ □x⇩1x⇩2x⇩3[F]›
4038 by (simp add: "≡I" "pre-en-eq:1[3]" "qml:2"[axiom_inst])
4039AOT_theorem "en-eq:2[4]": ‹x⇩1x⇩2x⇩3x⇩4[F] ≡ □x⇩1x⇩2x⇩3x⇩4[F]›
4040 by (simp add: "≡I" "pre-en-eq:1[4]" "qml:2"[axiom_inst])
4041
4042AOT_theorem "en-eq:3[1]": ‹◇x⇩1[F] ≡ x⇩1[F]›
4043 using "T◇" "derived-S5-rules:2"[OF "pre-en-eq:1[1]"] "≡I" by blast
4044AOT_theorem "en-eq:3[2]": ‹◇x⇩1x⇩2[F] ≡ x⇩1x⇩2[F]›
4045 using "T◇" "derived-S5-rules:2"[OF "pre-en-eq:1[2]"] "≡I" by blast
4046AOT_theorem "en-eq:3[3]": ‹◇x⇩1x⇩2x⇩3[F] ≡ x⇩1x⇩2x⇩3[F]›
4047 using "T◇" "derived-S5-rules:2"[OF "pre-en-eq:1[3]"] "≡I" by blast
4048AOT_theorem "en-eq:3[4]": ‹◇x⇩1x⇩2x⇩3x⇩4[F] ≡ x⇩1x⇩2x⇩3x⇩4[F]›
4049 using "T◇" "derived-S5-rules:2"[OF "pre-en-eq:1[4]"] "≡I" by blast
4050
4051AOT_theorem "en-eq:4[1]":
4052 ‹(x⇩1[F] ≡ y⇩1[G]) ≡ (□x⇩1[F] ≡ □y⇩1[G])›
4053 apply (rule "≡I"; rule "→I"; rule "≡I"; rule "→I")
4054 using "qml:2"[axiom_inst, THEN "→E"] "≡E"(1,2) "en-eq:2[1]" by blast+
4055AOT_theorem "en-eq:4[2]":
4056 ‹(x⇩1x⇩2[F] ≡ y⇩1y⇩2[G]) ≡ (□x⇩1x⇩2[F] ≡ □y⇩1y⇩2[G])›
4057 apply (rule "≡I"; rule "→I"; rule "≡I"; rule "→I")
4058 using "qml:2"[axiom_inst, THEN "→E"] "≡E"(1,2) "en-eq:2[2]" by blast+
4059AOT_theorem "en-eq:4[3]":
4060 ‹(x⇩1x⇩2x⇩3[F] ≡ y⇩1y⇩2y⇩3[G]) ≡ (□x⇩1x⇩2x⇩3[F] ≡ □y⇩1y⇩2y⇩3[G])›
4061 apply (rule "≡I"; rule "→I"; rule "≡I"; rule "→I")
4062 using "qml:2"[axiom_inst, THEN "→E"] "≡E"(1,2) "en-eq:2[3]" by blast+
4063AOT_theorem "en-eq:4[4]":
4064 ‹(x⇩1x⇩2x⇩3x⇩4[F] ≡ y⇩1y⇩2y⇩3y⇩4[G]) ≡ (□x⇩1x⇩2x⇩3x⇩4[F] ≡ □y⇩1y⇩2y⇩3y⇩4[G])›
4065 apply (rule "≡I"; rule "→I"; rule "≡I"; rule "→I")
4066 using "qml:2"[axiom_inst, THEN "→E"] "≡E"(1,2) "en-eq:2[4]" by blast+
4067
4068AOT_theorem "en-eq:5[1]":
4069 ‹□(x⇩1[F] ≡ y⇩1[G]) ≡ (□x⇩1[F] ≡ □y⇩1[G])›
4070 apply (rule "≡I"; rule "→I")
4071 using "en-eq:4[1]"[THEN "≡E"(1)] "qml:2"[axiom_inst, THEN "→E"]
4072 apply blast
4073 using "sc-eq-box-box:4"[THEN "→E", THEN "→E"]
4074 "&I"[OF "pre-en-eq:1[1]"[THEN RN], OF "pre-en-eq:1[1]"[THEN RN]]
4075 by blast
4076AOT_theorem "en-eq:5[2]":
4077 ‹□(x⇩1x⇩2[F] ≡ y⇩1y⇩2[G]) ≡ (□x⇩1x⇩2[F] ≡ □y⇩1y⇩2[G])›
4078 apply (rule "≡I"; rule "→I")
4079 using "en-eq:4[2]"[THEN "≡E"(1)] "qml:2"[axiom_inst, THEN "→E"]
4080 apply blast
4081 using "sc-eq-box-box:4"[THEN "→E", THEN "→E"]
4082 "&I"[OF "pre-en-eq:1[2]"[THEN RN], OF "pre-en-eq:1[2]"[THEN RN]]
4083 by blast
4084AOT_theorem "en-eq:5[3]":
4085 ‹□(x⇩1x⇩2x⇩3[F] ≡ y⇩1y⇩2y⇩3[G]) ≡ (□x⇩1x⇩2x⇩3[F] ≡ □y⇩1y⇩2y⇩3[G])›
4086 apply (rule "≡I"; rule "→I")
4087 using "en-eq:4[3]"[THEN "≡E"(1)] "qml:2"[axiom_inst, THEN "→E"]
4088 apply blast
4089 using "sc-eq-box-box:4"[THEN "→E", THEN "→E"]
4090 "&I"[OF "pre-en-eq:1[3]"[THEN RN], OF "pre-en-eq:1[3]"[THEN RN]]
4091 by blast
4092AOT_theorem "en-eq:5[4]":
4093 ‹□(x⇩1x⇩2x⇩3x⇩4[F] ≡ y⇩1y⇩2y⇩3y⇩4[G]) ≡ (□x⇩1x⇩2x⇩3x⇩4[F] ≡ □y⇩1y⇩2y⇩3y⇩4[G])›
4094 apply (rule "≡I"; rule "→I")
4095 using "en-eq:4[4]"[THEN "≡E"(1)] "qml:2"[axiom_inst, THEN "→E"]
4096 apply blast
4097 using "sc-eq-box-box:4"[THEN "→E", THEN "→E"]
4098 "&I"[OF "pre-en-eq:1[4]"[THEN RN], OF "pre-en-eq:1[4]"[THEN RN]]
4099 by blast
4100
4101AOT_theorem "en-eq:6[1]":
4102 ‹(x⇩1[F] ≡ y⇩1[G]) ≡ □(x⇩1[F] ≡ y⇩1[G])›
4103 using "en-eq:5[1]"[symmetric] "en-eq:4[1]" "≡E"(5) by fast
4104AOT_theorem "en-eq:6[2]":
4105 ‹(x⇩1x⇩2[F] ≡ y⇩1y⇩2[G]) ≡ □(x⇩1x⇩2[F] ≡ y⇩1y⇩2[G])›
4106 using "en-eq:5[2]"[symmetric] "en-eq:4[2]" "≡E"(5) by fast
4107AOT_theorem "en-eq:6[3]":
4108 ‹(x⇩1x⇩2x⇩3[F] ≡ y⇩1y⇩2y⇩3[G]) ≡ □(x⇩1x⇩2x⇩3[F] ≡ y⇩1y⇩2y⇩3[G])›
4109 using "en-eq:5[3]"[symmetric] "en-eq:4[3]" "≡E"(5) by fast
4110AOT_theorem "en-eq:6[4]":
4111 ‹(x⇩1x⇩2x⇩3x⇩4[F] ≡ y⇩1y⇩2y⇩3y⇩4[G]) ≡ □(x⇩1x⇩2x⇩3x⇩4[F] ≡ y⇩1y⇩2y⇩3y⇩4[G])›
4112 using "en-eq:5[4]"[symmetric] "en-eq:4[4]" "≡E"(5) by fast
4113
4114AOT_theorem "en-eq:7[1]": ‹¬x⇩1[F] ≡ □¬x⇩1[F]›
4115 using "pre-en-eq:2[1]" "qml:2"[axiom_inst] "≡I" by blast
4116AOT_theorem "en-eq:7[2]": ‹¬x⇩1x⇩2[F] ≡ □¬x⇩1x⇩2[F]›
4117 using "pre-en-eq:2[2]" "qml:2"[axiom_inst] "≡I" by blast
4118AOT_theorem "en-eq:7[3]": ‹¬x⇩1x⇩2x⇩3[F] ≡ □¬x⇩1x⇩2x⇩3[F]›
4119 using "pre-en-eq:2[3]" "qml:2"[axiom_inst] "≡I" by blast
4120AOT_theorem "en-eq:7[4]": ‹¬x⇩1x⇩2x⇩3x⇩4[F] ≡ □¬x⇩1x⇩2x⇩3x⇩4[F]›
4121 using "pre-en-eq:2[4]" "qml:2"[axiom_inst] "≡I" by blast
4122
4123AOT_theorem "en-eq:8[1]": ‹◇¬x⇩1[F] ≡ ¬x⇩1[F]›
4124 using "en-eq:2[1]"[THEN "oth-class-taut:4:b"[THEN "≡E"(1)]]
4125 "KBasic:11" "≡E"(5)[symmetric] by blast
4126AOT_theorem "en-eq:8[2]": ‹◇¬x⇩1x⇩2[F] ≡ ¬x⇩1x⇩2[F]›
4127 using "en-eq:2[2]"[THEN "oth-class-taut:4:b"[THEN "≡E"(1)]]
4128 "KBasic:11" "≡E"(5)[symmetric] by blast
4129AOT_theorem "en-eq:8[3]": ‹◇¬x⇩1x⇩2x⇩3[F] ≡ ¬x⇩1x⇩2x⇩3[F]›
4130 using "en-eq:2[3]"[THEN "oth-class-taut:4:b"[THEN "≡E"(1)]]
4131 "KBasic:11" "≡E"(5)[symmetric] by blast
4132AOT_theorem "en-eq:8[4]": ‹◇¬x⇩1x⇩2x⇩3x⇩4[F] ≡ ¬x⇩1x⇩2x⇩3x⇩4[F]›
4133 using "en-eq:2[4]"[THEN "oth-class-taut:4:b"[THEN "≡E"(1)]]
4134 "KBasic:11" "≡E"(5)[symmetric] by blast
4135
4136AOT_theorem "en-eq:9[1]": ‹◇¬x⇩1[F] ≡ □¬x⇩1[F]›
4137 using "en-eq:7[1]" "en-eq:8[1]" "≡E"(5) by blast
4138AOT_theorem "en-eq:9[2]": ‹◇¬x⇩1x⇩2[F] ≡ □¬x⇩1x⇩2[F]›
4139 using "en-eq:7[2]" "en-eq:8[2]" "≡E"(5) by blast
4140AOT_theorem "en-eq:9[3]": ‹◇¬x⇩1x⇩2x⇩3[F] ≡ □¬x⇩1x⇩2x⇩3[F]›
4141 using "en-eq:7[3]" "en-eq:8[3]" "≡E"(5) by blast
4142AOT_theorem "en-eq:9[4]": ‹◇¬x⇩1x⇩2x⇩3x⇩4[F] ≡ □¬x⇩1x⇩2x⇩3x⇩4[F]›
4143 using "en-eq:7[4]" "en-eq:8[4]" "≡E"(5) by blast
4144
4145AOT_theorem "en-eq:10[1]": ‹❙𝒜x⇩1[F] ≡ x⇩1[F]›
4146 by (metis "Act-Sub:3" "deduction-theorem" "≡I" "≡E"(1)
4147 "nec-imp-act" "en-eq:3[1]" "pre-en-eq:1[1]")
4148AOT_theorem "en-eq:10[2]": ‹❙𝒜x⇩1x⇩2[F] ≡ x⇩1x⇩2[F]›
4149 by (metis "Act-Sub:3" "deduction-theorem" "≡I" "≡E"(1)
4150 "nec-imp-act" "en-eq:3[2]" "pre-en-eq:1[2]")
4151AOT_theorem "en-eq:10[3]": ‹❙𝒜x⇩1x⇩2x⇩3[F] ≡ x⇩1x⇩2x⇩3[F]›
4152 by (metis "Act-Sub:3" "deduction-theorem" "≡I" "≡E"(1)
4153 "nec-imp-act" "en-eq:3[3]" "pre-en-eq:1[3]")
4154AOT_theorem "en-eq:10[4]": ‹❙𝒜x⇩1x⇩2x⇩3x⇩4[F] ≡ x⇩1x⇩2x⇩3x⇩4[F]›
4155 by (metis "Act-Sub:3" "deduction-theorem" "≡I" "≡E"(1)
4156 "nec-imp-act" "en-eq:3[4]" "pre-en-eq:1[4]")
4157
4158AOT_theorem "oa-facts:1": ‹O!x → □O!x›
4159proof(rule "→I")
4160 AOT_modally_strict {
4161 AOT_have ‹[λx ◇E!x]x ≡ ◇E!x›
4162 by (rule "lambda-predicates:2"[axiom_inst, THEN "→E"]) "cqt:2"
4163 } note θ = this
4164 AOT_assume ‹O!x›
4165 AOT_hence ‹[λx ◇E!x]x›
4166 by (rule "=⇩d⇩fE"(2)[OF AOT_ordinary, rotated 1]) "cqt:2"
4167 AOT_hence ‹◇E!x› using θ[THEN "≡E"(1)] by blast
4168 AOT_hence ‹□◇E!x› using "qml:3"[axiom_inst, THEN "→E"] by blast
4169 AOT_hence ‹□[λx ◇E!x]x›
4170 by (AOT_subst ‹[λx ◇E!x]x› ‹◇E!x›)
4171 (auto simp: θ)
4172 AOT_thus ‹□O!x›
4173 by (rule "=⇩d⇩fI"(2)[OF AOT_ordinary, rotated 1]) "cqt:2"
4174qed
4175
4176AOT_theorem "oa-facts:2": ‹A!x → □A!x›
4177proof(rule "→I")
4178 AOT_modally_strict {
4179 AOT_have ‹[λx ¬◇E!x]x ≡ ¬◇E!x›
4180 by (rule "lambda-predicates:2"[axiom_inst, THEN "→E"]) "cqt:2"
4181 } note θ = this
4182 AOT_assume ‹A!x›
4183 AOT_hence ‹[λx ¬◇E!x]x›
4184 by (rule "=⇩d⇩fE"(2)[OF AOT_abstract, rotated 1]) "cqt:2"
4185 AOT_hence ‹¬◇E!x› using θ[THEN "≡E"(1)] by blast
4186 AOT_hence ‹□¬E!x› using "KBasic2:1"[THEN "≡E"(2)] by blast
4187 AOT_hence ‹□□¬E!x› using "4"[THEN "→E"] by blast
4188 AOT_hence ‹□¬◇E!x›
4189 using "KBasic2:1"
4190 by (AOT_subst (reverse) ‹¬◇E!x› ‹□¬E!x›) blast
4191 AOT_hence ‹□[λx ¬◇E!x]x›
4192 by (AOT_subst ‹[λx ¬◇E!x]x› ‹¬◇E!x›)
4193 (auto simp: θ)
4194 AOT_thus ‹□A!x›
4195 by (rule "=⇩d⇩fI"(2)[OF AOT_abstract, rotated 1]) "cqt:2[lambda]"
4196qed
4197
4198AOT_theorem "oa-facts:3": ‹◇O!x → O!x›
4199 using "oa-facts:1" "B◇" "RM◇" "Hypothetical Syllogism" by blast
4200AOT_theorem "oa-facts:4": ‹◇A!x → A!x›
4201 using "oa-facts:2" "B◇" "RM◇" "Hypothetical Syllogism" by blast
4202
4203AOT_theorem "oa-facts:5": ‹◇O!x ≡ □O!x›
4204 by (meson "Act-Sub:3" "Hypothetical Syllogism" "≡I" "nec-imp-act"
4205 "oa-facts:1" "oa-facts:3")
4206
4207AOT_theorem "oa-facts:6": ‹◇A!x ≡ □A!x›
4208 by (meson "Act-Sub:3" "Hypothetical Syllogism" "≡I" "nec-imp-act"
4209 "oa-facts:2" "oa-facts:4")
4210
4211AOT_theorem "oa-facts:7": ‹O!x ≡ ❙𝒜O!x›
4212 by (meson "Act-Sub:3" "Hypothetical Syllogism" "≡I" "nec-imp-act"
4213 "oa-facts:1" "oa-facts:3")
4214
4215AOT_theorem "oa-facts:8": ‹A!x ≡ ❙𝒜A!x›
4216 by (meson "Act-Sub:3" "Hypothetical Syllogism" "≡I" "nec-imp-act"
4217 "oa-facts:2" "oa-facts:4")
4218
4219subsection‹The Theory of Relations›
4220text‹\label{PLM: 9.10}›
4221
4222AOT_theorem "beta-C-meta":
4223 ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n, ν⇩1...ν⇩n}]↓ →
4224 ([λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n, ν⇩1...ν⇩n}]ν⇩1...ν⇩n ≡ φ{ν⇩1...ν⇩n, ν⇩1...ν⇩n})›
4225 using "lambda-predicates:2"[axiom_inst] by blast
4226
4227AOT_theorem "beta-C-cor:1":
4228 ‹(∀ν⇩1...∀ν⇩n([λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n, ν⇩1...ν⇩n}]↓)) →
4229 ∀ν⇩1...∀ν⇩n ([λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n, ν⇩1...ν⇩n}]ν⇩1...ν⇩n ≡ φ{ν⇩1...ν⇩n, ν⇩1...ν⇩n})›
4230 apply (rule "cqt-basic:14"[where 'a='a, THEN "→E"])
4231 using "beta-C-meta" "∀I" by fast
4232
4233AOT_theorem "beta-C-cor:2":
4234 ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]↓ →
4235 ∀ν⇩1...∀ν⇩n ([λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]ν⇩1...ν⇩n ≡ φ{ν⇩1...ν⇩n})›
4236 apply (rule "→I"; rule "∀I")
4237 using "beta-C-meta"[THEN "→E"] by fast
4238
4239
4240theorem "beta-C-cor:3":
4241 assumes ‹⋀ν⇩1ν⇩n. AOT_instance_of_cqt_2 (φ (AOT_term_of_var ν⇩1ν⇩n))›
4242 shows ‹[v ⊨ ∀ν⇩1...∀ν⇩n ([λμ⇩1...μ⇩n φ{ν⇩1...ν⇩n, μ⇩1...μ⇩n}]ν⇩1...ν⇩n ≡
4243 φ{ν⇩1...ν⇩n, ν⇩1...ν⇩n})]›
4244 using "cqt:2[lambda]"[axiom_inst, OF assms]
4245 "beta-C-cor:1"[THEN "→E"] "∀I" by fast
4246
4247AOT_theorem "betaC:1:a": ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]κ⇩1...κ⇩n ❙⊢⇩□ φ{κ⇩1...κ⇩n}›
4248proof -
4249 AOT_modally_strict {
4250 AOT_assume ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]κ⇩1...κ⇩n›
4251 moreover AOT_have ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]↓› and ‹κ⇩1...κ⇩n↓›
4252 using calculation "cqt:5:a"[axiom_inst, THEN "→E"] "&E" by blast+
4253 ultimately AOT_show ‹φ{κ⇩1...κ⇩n}›
4254 using "beta-C-cor:2"[THEN "→E", THEN "∀E"(1), THEN "≡E"(1)] by blast
4255 }
4256qed
4257
4258AOT_theorem "betaC:1:b": ‹¬φ{κ⇩1...κ⇩n} ❙⊢⇩□ ¬[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]κ⇩1...κ⇩n›
4259 using "betaC:1:a" "raa-cor:3" by blast
4260
4261lemmas "β→C" = "betaC:1:a" "betaC:1:b"
4262
4263AOT_theorem "betaC:2:a":
4264 ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]↓, κ⇩1...κ⇩n↓, φ{κ⇩1...κ⇩n} ❙⊢⇩□
4265 [λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]κ⇩1...κ⇩n›
4266proof -
4267 AOT_modally_strict {
4268 AOT_assume 1: ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]↓›
4269 and 2: ‹κ⇩1...κ⇩n↓›
4270 and 3: ‹φ{κ⇩1...κ⇩n}›
4271 AOT_hence ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]κ⇩1...κ⇩n›
4272 using "beta-C-cor:2"[THEN "→E", OF 1, THEN "∀E"(1), THEN "≡E"(2)]
4273 by blast
4274 }
4275 AOT_thus ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]↓, κ⇩1...κ⇩n↓, φ{κ⇩1...κ⇩n} ❙⊢⇩□
4276 [λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]κ⇩1...κ⇩n›
4277 by blast
4278qed
4279
4280AOT_theorem "betaC:2:b":
4281 ‹[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]↓, κ⇩1...κ⇩n↓, ¬[λμ⇩1...μ⇩n φ{μ⇩1...μ⇩n}]κ⇩1...κ⇩n ❙⊢⇩□
4282 ¬φ{κ⇩1...κ⇩n}›
4283 using "betaC:2:a" "raa-cor:3" by blast
4284
4285lemmas "β←C" = "betaC:2:a" "betaC:2:b"
4286
4287AOT_theorem "eta-conversion-lemma1:1": ‹Π↓ → [λx⇩1...x⇩n [Π]x⇩1...x⇩n] = Π›
4288 using "lambda-predicates:3"[axiom_inst] "∀I" "∀E"(1) "→I" by fast
4289
4290
4291AOT_theorem "eta-conversion-lemma1:2": ‹Π↓ → [λν⇩1...ν⇩n [Π]ν⇩1...ν⇩n] = Π›
4292 using "eta-conversion-lemma1:1".
4293
4294text‹Note: not explicitly part of PLM.›
4295AOT_theorem id_sym:
4296 assumes ‹τ = τ'›
4297 shows ‹τ' = τ›
4298 using "rule=E"[where φ="λ τ' . «τ' = τ»", rotated 1, OF assms]
4299 "=I"(1)[OF "t=t-proper:1"[THEN "→E", OF assms]] by auto
4300declare id_sym[sym]
4301
4302text‹Note: not explicitly part of PLM.›
4303AOT_theorem id_trans:
4304 assumes ‹τ = τ'› and ‹τ' = τ''›
4305 shows ‹τ = τ''›
4306 using "rule=E" assms by blast
4307declare id_trans[trans]
4308
4309method "ηC" for Π :: ‹<'a::{AOT_Term_id_2,AOT_κs}>› =
4310 (match conclusion in "[v ⊨ τ{Π} = τ'{Π}]" for v τ τ' ⇒ ‹
4311 rule "rule=E"[rotated 1, OF "eta-conversion-lemma1:2"
4312 [THEN "→E", of v "«[Π]»", symmetric]]›)
4313
4314AOT_theorem "sub-des-lam:1":
4315 ‹[λz⇩1...z⇩n χ{z⇩1...z⇩n, ❙ιx φ{x}}]↓ & ❙ιx φ{x} = ❙ιx ψ{x} →
4316 [λz⇩1...z⇩n χ{z⇩1...z⇩n, ❙ιx φ{x}}] = [λz⇩1...z⇩n χ{z⇩1...z⇩n, ❙ιx ψ{x}}]›
4317proof(rule "→I")
4318 AOT_assume A: ‹[λz⇩1...z⇩n χ{z⇩1...z⇩n, ❙ιx φ{x}}]↓ & ❙ιx φ{x} = ❙ιx ψ{x}›
4319 AOT_show ‹[λz⇩1...z⇩n χ{z⇩1...z⇩n, ❙ιx φ{x}}] = [λz⇩1...z⇩n χ{z⇩1...z⇩n, ❙ιx ψ{x}}]›
4320 using "rule=E"[where φ="λ τ . «[λz⇩1...z⇩n χ{z⇩1...z⇩n, ❙ιx φ{x}}] =
4321 [λz⇩1...z⇩n χ{z⇩1...z⇩n, τ}]»",
4322 OF "=I"(1)[OF A[THEN "&E"(1)]], OF A[THEN "&E"(2)]]
4323 by blast
4324qed
4325
4326AOT_theorem "sub-des-lam:2":
4327 ‹❙ιx φ{x} = ❙ιx ψ{x} → χ{❙ιx φ{x}} = χ{❙ιx ψ{x}}› for χ :: ‹κ ⇒ 𝗈›
4328 using "rule=E"[where φ="λ τ . «χ{❙ιx φ{x}} = χ{τ}»",
4329 OF "=I"(1)[OF "log-prop-prop:2"]] "→I" by blast
4330
4331AOT_theorem "prop-equiv": ‹F = G ≡ ∀x (x[F] ≡ x[G])›
4332proof(rule "≡I"; rule "→I")
4333 AOT_assume ‹F = G›
4334 AOT_thus ‹∀x (x[F] ≡ x[G])›
4335 by (rule "rule=E"[rotated]) (fact "oth-class-taut:3:a"[THEN GEN])
4336next
4337 AOT_assume ‹∀x (x[F] ≡ x[G])›
4338 AOT_hence ‹x[F] ≡ x[G]› for x
4339 using "∀E" by blast
4340 AOT_hence ‹□(x[F] ≡ x[G])› for x
4341 using "en-eq:6[1]"[THEN "≡E"(1)] by blast
4342 AOT_hence ‹∀x □(x[F] ≡ x[G])›
4343 by (rule GEN)
4344 AOT_hence ‹□∀x (x[F] ≡ x[G])›
4345 using BF[THEN "→E"] by fast
4346 AOT_thus "F = G"
4347 using "p-identity-thm2:1"[THEN "≡E"(2)] by blast
4348qed
4349
4350AOT_theorem "relations:1":
4351 assumes ‹INSTANCE_OF_CQT_2(φ)›
4352 shows ‹∃F □∀x⇩1...∀x⇩n ([F]x⇩1...x⇩n ≡ φ{x⇩1...x⇩n})›
4353 apply (rule "∃I"(1)[where τ="«[λx⇩1...x⇩n φ{x⇩1...x⇩n}]»"])
4354 using "cqt:2[lambda]"[OF assms, axiom_inst]
4355 "beta-C-cor:2"[THEN "→E", THEN RN] by blast+
4356
4357AOT_theorem "relations:2":
4358 assumes ‹INSTANCE_OF_CQT_2(φ)›
4359 shows ‹∃F □∀x ([F]x ≡ φ{x})›
4360 using "relations:1" assms by blast
4361
4362AOT_theorem "block-paradox:1": ‹¬[λx ∃G (x[G] & ¬[G]x)]↓›
4363proof(rule "raa-cor:2")
4364 let ?K="«[λx ∃G (x[G] & ¬[G]x)]»"
4365 AOT_assume A: ‹«?K»↓›
4366 AOT_have ‹∃x (A!x & ∀F (x[F] ≡ F = «?K»))›
4367 using "A-objects"[axiom_inst] by fast
4368 then AOT_obtain a where ξ: ‹A!a & ∀F (a[F] ≡ F = «?K»)›
4369 using "∃E"[rotated] by blast
4370 AOT_show ‹p & ¬p› for p
4371 proof (rule "∨E"(1)[OF "exc-mid"]; rule "→I")
4372 AOT_assume B: ‹[«?K»]a›
4373 AOT_hence ‹∃G (a[G] & ¬[G]a)›
4374 using "β→C" A by blast
4375 then AOT_obtain P where ‹a[P] & ¬[P]a›
4376 using "∃E"[rotated] by blast
4377 moreover AOT_have ‹P = [«?K»]›
4378 using ξ[THEN "&E"(2), THEN "∀E"(2), THEN "≡E"(1)]
4379 calculation[THEN "&E"(1)] by blast
4380 ultimately AOT_have ‹¬[«?K»]a›
4381 using "rule=E" "&E"(2) by fast
4382 AOT_thus ‹p & ¬p›
4383 using B RAA by blast
4384 next
4385 AOT_assume B: ‹¬[«?K»]a›
4386 AOT_hence ‹¬∃G (a[G] & ¬[G]a)›
4387 using "β←C" "cqt:2[const_var]"[of a, axiom_inst] A by blast
4388 AOT_hence C: ‹∀G ¬(a[G] & ¬[G]a)›
4389 using "cqt-further:4"[THEN "→E"] by blast
4390 AOT_have ‹∀G (a[G] → [G]a)›
4391 by (AOT_subst ‹a[G] → [G]a› ‹¬(a[G] & ¬[G]a)› for: G)
4392 (auto simp: "oth-class-taut:1:a" C)
4393 AOT_hence ‹a[«?K»] → [«?K»]a›
4394 using "∀E" A by blast
4395 moreover AOT_have ‹a[«?K»]›
4396 using ξ[THEN "&E"(2), THEN "∀E"(1), OF A, THEN "≡E"(2)]
4397 using "=I"(1)[OF A] by blast
4398 ultimately AOT_show ‹p & ¬p›
4399 using B "→E" RAA by blast
4400 qed
4401qed
4402
4403AOT_theorem "block-paradox:2": ‹¬∃F ∀x([F]x ≡ ∃G(x[G] & ¬[G]x))›
4404proof(rule RAA(2))
4405 AOT_assume ‹∃F ∀x ([F]x ≡ ∃G (x[G] & ¬[G]x))›
4406 then AOT_obtain F where F_prop: ‹∀x ([F]x ≡ ∃G (x[G] & ¬[G]x))›
4407 using "∃E"[rotated] by blast
4408 AOT_have ‹∃x (A!x & ∀G (x[G] ≡ G = F))›
4409 using "A-objects"[axiom_inst] by fast
4410 then AOT_obtain a where ξ: ‹A!a & ∀G (a[G] ≡ G = F)›
4411 using "∃E"[rotated] by blast
4412 AOT_show ‹¬∃F ∀x([F]x ≡ ∃G(x[G] & ¬[G]x))›
4413 proof (rule "∨E"(1)[OF "exc-mid"]; rule "→I")
4414 AOT_assume B: ‹[F]a›
4415 AOT_hence ‹∃G (a[G] & ¬[G]a)›
4416 using F_prop[THEN "∀E"(2), THEN "≡E"(1)] by blast
4417 then AOT_obtain P where ‹a[P] & ¬[P]a›
4418 using "∃E"[rotated] by blast
4419 moreover AOT_have ‹P = F›
4420 using ξ[THEN "&E"(2), THEN "∀E"(2), THEN "≡E"(1)]
4421 calculation[THEN "&E"(1)] by blast
4422 ultimately AOT_have ‹¬[F]a›
4423 using "rule=E" "&E"(2) by fast
4424 AOT_thus ‹¬∃F ∀x([F]x ≡ ∃G(x[G] & ¬[G]x))›
4425 using B RAA by blast
4426 next
4427 AOT_assume B: ‹¬[F]a›
4428 AOT_hence ‹¬∃G (a[G] & ¬[G]a)›
4429 using "oth-class-taut:4:b"[THEN "≡E"(1),
4430 OF F_prop[THEN "∀E"(2)[of _ _ a]], THEN "≡E"(1)]
4431 by simp
4432 AOT_hence C: ‹∀G ¬(a[G] & ¬[G]a)›
4433 using "cqt-further:4"[THEN "→E"] by blast
4434 AOT_have ‹∀G (a[G] → [G]a)›
4435 by (AOT_subst ‹a[G] → [G]a› ‹¬(a[G] & ¬[G]a)› for: G)
4436 (auto simp: "oth-class-taut:1:a" C)
4437 AOT_hence ‹a[F] → [F]a›
4438 using "∀E" by blast
4439 moreover AOT_have ‹a[F]›
4440 using ξ[THEN "&E"(2), THEN "∀E"(2), of F, THEN "≡E"(2)]
4441 using "=I"(2) by blast
4442 ultimately AOT_show ‹¬∃F ∀x([F]x ≡ ∃G(x[G] & ¬[G]x))›
4443 using B "→E" RAA by blast
4444 qed
4445qed(simp)
4446
4447AOT_theorem "block-paradox:3": ‹¬∀y [λz z = y]↓›
4448proof(rule RAA(2))
4449 AOT_assume θ: ‹∀y [λz z = y]↓›
4450 AOT_have ‹∃x (A!x & ∀F (x[F] ≡ ∃y(F = [λz z = y] & ¬y[F])))›
4451 using "A-objects"[axiom_inst] by force
4452 then AOT_obtain a where
4453 a_prop: ‹A!a & ∀F (a[F] ≡ ∃y (F = [λz z = y] & ¬y[F]))›
4454 using "∃E"[rotated] by blast
4455 AOT_have ζ: ‹a[λz z = a] ≡ ∃y ([λz z = a] = [λz z = y] & ¬y[λz z = a])›
4456 using θ[THEN "∀E"(2)] a_prop[THEN "&E"(2), THEN "∀E"(1)] by blast
4457 AOT_show ‹¬∀y [λz z = y]↓›
4458 proof (rule "∨E"(1)[OF "exc-mid"]; rule "→I")
4459 AOT_assume A: ‹a[λz z = a]›
4460 AOT_hence ‹∃y ([λz z = a] = [λz z = y] & ¬y[λz z = a])›
4461 using ζ[THEN "≡E"(1)] by blast
4462 then AOT_obtain b where b_prop: ‹[λz z = a] = [λz z = b] & ¬b[λz z = a]›
4463 using "∃E"[rotated] by blast
4464 moreover AOT_have ‹a = a› by (rule "=I")
4465 moreover AOT_have ‹[λz z = a]↓› using θ "∀E" by blast
4466 moreover AOT_have ‹a↓› using "cqt:2[const_var]"[axiom_inst] .
4467 ultimately AOT_have ‹[λz z = a]a› using "β←C" by blast
4468 AOT_hence ‹[λz z = b]a› using "rule=E" b_prop[THEN "&E"(1)] by fast
4469 AOT_hence ‹a = b› using "β→C" by blast
4470 AOT_hence ‹b[λz z = a]› using A "rule=E" by fast
4471 AOT_thus ‹¬∀y [λz z = y]↓› using b_prop[THEN "&E"(2)] RAA by blast
4472 next
4473 AOT_assume A: ‹¬a[λz z = a]›
4474 AOT_hence ‹¬∃y ([λz z = a] = [λz z = y] & ¬y[λz z = a])›
4475 using ζ "oth-class-taut:4:b"[THEN "≡E"(1), THEN "≡E"(1)] by blast
4476 AOT_hence ‹∀y ¬([λz z = a] = [λz z = y] & ¬y[λz z = a])›
4477 using "cqt-further:4"[THEN "→E"] by blast
4478 AOT_hence ‹¬([λz z = a] = [λz z = a] & ¬a[λz z = a])›
4479 using "∀E" by blast
4480 AOT_hence ‹[λz z = a] = [λz z = a] → a[λz z = a]›
4481 by (metis "&I" "deduction-theorem" "raa-cor:4")
4482 AOT_hence ‹a[λz z = a]› using "=I"(1) θ[THEN "∀E"(2)] "→E" by blast
4483 AOT_thus ‹¬∀y [λz z = y]↓› using A RAA by blast
4484 qed
4485qed(simp)
4486
4487AOT_theorem "block-paradox:4": ‹¬∀y ∃F ∀x([F]x ≡ x = y)›
4488proof(rule RAA(2))
4489 AOT_assume θ: ‹∀y ∃F ∀x([F]x ≡ x = y)›
4490 AOT_have ‹∃x (A!x & ∀F (x[F] ≡ ∃z (∀y([F]y ≡ y = z) & ¬z[F])))›
4491 using "A-objects"[axiom_inst] by force
4492 then AOT_obtain a where
4493 a_prop: ‹A!a & ∀F (a[F] ≡ ∃z (∀y([F]y ≡ y = z) & ¬z[F]))›
4494 using "∃E"[rotated] by blast
4495 AOT_obtain F where F_prop: ‹∀x ([F]x ≡ x = a)›
4496 using θ[THEN "∀E"(2)] "∃E"[rotated] by blast
4497 AOT_have ζ: ‹a[F] ≡ ∃z (∀y ([F]y ≡ y = z) & ¬z[F])›
4498 using a_prop[THEN "&E"(2), THEN "∀E"(2)] by blast
4499 AOT_show ‹¬∀y ∃F ∀x([F]x ≡ x = y)›
4500 proof (rule "∨E"(1)[OF "exc-mid"]; rule "→I")
4501 AOT_assume A: ‹a[F]›
4502 AOT_hence ‹∃z (∀y ([F]y ≡ y = z) & ¬z[F])›
4503 using ζ[THEN "≡E"(1)] by blast
4504 then AOT_obtain b where b_prop: ‹∀y ([F]y ≡ y = b) & ¬b[F]›
4505 using "∃E"[rotated] by blast
4506 moreover AOT_have ‹[F]a›
4507 using F_prop[THEN "∀E"(2), THEN "≡E"(2)] "=I"(2) by blast
4508 ultimately AOT_have ‹a = b›
4509 using "∀E"(2) "≡E"(1) "&E" by fast
4510 AOT_hence ‹a = b›
4511 using "β→C" by blast
4512 AOT_hence ‹b[F]›
4513 using A "rule=E" by fast
4514 AOT_thus ‹¬∀y ∃F ∀x([F]x ≡ x = y)›
4515 using b_prop[THEN "&E"(2)] RAA by blast
4516 next
4517 AOT_assume A: ‹¬a[F]›
4518 AOT_hence ‹¬∃z (∀y ([F]y ≡ y = z) & ¬z[F])›
4519 using ζ "oth-class-taut:4:b"[THEN "≡E"(1), THEN "≡E"(1)] by blast
4520 AOT_hence ‹∀z ¬(∀y ([F]y ≡ y = z) & ¬z[F])›
4521 using "cqt-further:4"[THEN "→E"] by blast
4522 AOT_hence ‹¬(∀y ([F]y ≡ y = a) & ¬a[F])›
4523 using "∀E" by blast
4524 AOT_hence ‹∀y ([F]y ≡ y = a) → a[F]›
4525 by (metis "&I" "deduction-theorem" "raa-cor:4")
4526 AOT_hence ‹a[F]› using F_prop "→E" by blast
4527 AOT_thus ‹¬∀y ∃F ∀x([F]x ≡ x = y)›
4528 using A RAA by blast
4529 qed
4530qed(simp)
4531
4532AOT_theorem "block-paradox:5": ‹¬∃F∀x∀y([F]xy ≡ y = x)›
4533proof(rule "raa-cor:2")
4534 AOT_assume ‹∃F∀x∀y([F]xy ≡ y = x)›
4535 then AOT_obtain F where F_prop: ‹∀x∀y([F]xy ≡ y = x)›
4536 using "∃E"[rotated] by blast
4537 {
4538 fix x
4539 AOT_have 1: ‹∀y([F]xy ≡ y = x)›
4540 using F_prop "∀E" by blast
4541 AOT_have 2: ‹[λz [F]xz]↓› by "cqt:2"
4542 moreover AOT_have ‹∀y([λz [F]xz]y ≡ y = x)›
4543 proof(rule "∀I")
4544 fix y
4545 AOT_have ‹[λz [F]xz]y ≡ [F]xy›
4546 using "beta-C-meta"[THEN "→E"] 2 by fast
4547 also AOT_have ‹... ≡ y = x›
4548 using 1 "∀E" by fast
4549 finally AOT_show ‹[λz [F]xz]y ≡ y = x›.
4550 qed
4551 ultimately AOT_have ‹∃F∀y([F]y ≡ y = x)›
4552 using "∃I" by fast
4553 }
4554 AOT_hence ‹∀x∃F∀y([F]y ≡ y = x)›
4555 by (rule GEN)
4556 AOT_thus ‹∀x∃F∀y([F]y ≡ y = x) & ¬∀x∃F∀y([F]y ≡ y = x)›
4557 using "&I" "block-paradox:4" by blast
4558qed
4559
4560AOT_act_theorem "block-paradox2:1":
4561 ‹∀x [G]x → ¬[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4562proof(rule "→I"; rule "raa-cor:2")
4563 AOT_assume antecedant: ‹∀x [G]x›
4564 AOT_have Lemma: ‹∀x ([G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)) ≡ ∃H (x[H] & ¬[H]x))›
4565 proof(rule GEN)
4566 fix x
4567 AOT_have A: ‹[G]❙ιy (y = x & ∃H (x[H] & ¬[H]x)) ≡
4568 ∃!y (y = x & ∃H (x[H] & ¬[H]x))›
4569 proof(rule "≡I"; rule "→I")
4570 AOT_assume ‹[G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))›
4571 AOT_hence ‹❙ιy (y = x & ∃H (x[H] & ¬[H]x))↓›
4572 using "cqt:5:a"[axiom_inst, THEN "→E", THEN "&E"(2)] by blast
4573 AOT_thus ‹∃!y (y = x & ∃H (x[H] & ¬[H]x))›
4574 using "!-exists:1"[THEN "≡E"(1)] by blast
4575 next
4576 AOT_assume A: ‹∃!y (y = x & ∃H (x[H] & ¬[H]x))›
4577 AOT_obtain a where a_1: ‹a = x & ∃H (x[H] & ¬[H]x)›
4578 and a_2: ‹∀z (z = x & ∃H (x[H] & ¬[H]x) → z = a)›
4579 using "uniqueness:1"[THEN "≡⇩d⇩fE", OF A] "&E" "∃E"[rotated] by blast
4580 AOT_have a_3: ‹[G]a›
4581 using antecedant "∀E" by blast
4582 AOT_show ‹[G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))›
4583 apply (rule "russell-axiom[exe,1].russell-axiom"[THEN "≡E"(2)])
4584 apply (rule "∃I"(2))
4585 using a_1 a_2 a_3 "&I" by blast
4586 qed
4587 also AOT_have B: ‹... ≡ ∃H (x[H] & ¬[H]x)›
4588 proof (rule "≡I"; rule "→I")
4589 AOT_assume A: ‹∃!y (y = x & ∃H (x[H] & ¬[H]x))›
4590 AOT_obtain a where ‹a = x & ∃H (x[H] & ¬[H]x)›
4591 using "uniqueness:1"[THEN "≡⇩d⇩fE", OF A] "&E" "∃E"[rotated] by blast
4592 AOT_thus ‹∃H (x[H] & ¬[H]x)› using "&E" by blast
4593 next
4594 AOT_assume ‹∃H (x[H] & ¬[H]x)›
4595 AOT_hence ‹x = x & ∃H (x[H] & ¬[H]x)›
4596 using "id-eq:1" "&I" by blast
4597 moreover AOT_have ‹∀z (z = x & ∃H (x[H] & ¬[H]x) → z = x)›
4598 by (simp add: "Conjunction Simplification"(1) "universal-cor")
4599 ultimately AOT_show ‹∃!y (y = x & ∃H (x[H] & ¬[H]x))›
4600 using "uniqueness:1"[THEN "≡⇩d⇩fI"] "&I" "∃I"(2) by fast
4601 qed
4602 finally AOT_show ‹([G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)) ≡ ∃H (x[H] & ¬[H]x))› .
4603 qed
4604
4605 AOT_assume A: ‹[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4606 AOT_have θ: ‹∀x ([λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]x ≡
4607 [G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)))›
4608 using "beta-C-meta"[THEN "→E", OF A] "∀I" by fast
4609 AOT_have ‹∀x ([λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]x ≡ ∃H (x[H] & ¬[H]x))›
4610 using θ Lemma "cqt-basic:10"[THEN "→E"] "&I" by fast
4611 AOT_hence ‹∃F ∀x ([F]x ≡ ∃H (x[H] & ¬[H]x))›
4612 using "∃I"(1) A by fast
4613 AOT_thus ‹(∃F ∀x ([F]x ≡ ∃H (x[H] & ¬[H]x))) &
4614 (¬∃F ∀x ([F]x ≡ ∃H (x[H] & ¬[H]x)))›
4615 using "block-paradox:2" "&I" by blast
4616qed
4617
4618text‹Note: Strengthens the above to a modally-strict theorem.
4619 Not explicitly part of PLM.›
4620AOT_theorem "block-paradox2:1[strict]":
4621 ‹∀x ❙𝒜[G]x → ¬[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4622proof(rule "→I"; rule "raa-cor:2")
4623 AOT_assume antecedant: ‹∀x ❙𝒜[G]x›
4624 AOT_have Lemma: ‹❙𝒜∀x ([G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)) ≡ ∃H (x[H] & ¬[H]x))›
4625 proof(safe intro!: GEN "Act-Basic:5"[THEN "≡E"(2)]
4626 "logic-actual-nec:3"[axiom_inst, THEN "≡E"(2)])
4627 fix x
4628 AOT_have A: ‹❙𝒜[G]❙ιy (y = x & ∃H (x[H] & ¬[H]x)) ≡
4629 ∃!y ❙𝒜(y = x & ∃H (x[H] & ¬[H]x))›
4630 proof(rule "≡I"; rule "→I")
4631 AOT_assume ‹❙𝒜[G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))›
4632 moreover AOT_have ‹□([G]❙ιy (y = x & ∃H (x[H] & ¬[H]x)) →
4633 □❙ιy (y = x & ∃H (x[H] & ¬[H]x))↓)›
4634 proof(rule RN; rule "→I")
4635 AOT_modally_strict {
4636 AOT_assume ‹[G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))›
4637 AOT_hence ‹❙ιy (y = x & ∃H (x[H] & ¬[H]x))↓›
4638 using "cqt:5:a"[axiom_inst, THEN "→E", THEN "&E"(2)] by blast
4639 AOT_thus ‹□❙ιy (y = x & ∃H (x[H] & ¬[H]x))↓›
4640 using "exist-nec"[THEN "→E"] by blast
4641 }
4642 qed
4643 ultimately AOT_have ‹❙𝒜□❙ιy (y = x & ∃H (x[H] & ¬[H]x))↓›
4644 using "act-cond"[THEN "→E", THEN "→E"] "nec-imp-act"[THEN "→E"] by blast
4645 AOT_hence ‹❙ιy (y = x & ∃H (x[H] & ¬[H]x))↓›
4646 using "Act-Sub:3" "B◇" "vdash-properties:10" by blast
4647 AOT_thus ‹∃!y ❙𝒜(y = x & ∃H (x[H] & ¬[H]x))›
4648 using "actual-desc:1"[THEN "≡E"(1)] by blast
4649 next
4650 AOT_assume A: ‹∃!y ❙𝒜(y = x & ∃H (x[H] & ¬[H]x))›
4651 AOT_obtain a where a_1: ‹❙𝒜(a = x & ∃H (x[H] & ¬[H]x))›
4652 and a_2: ‹∀z (❙𝒜(z = x & ∃H (x[H] & ¬[H]x)) → z = a)›
4653 using "uniqueness:1"[THEN "≡⇩d⇩fE", OF A] "&E" "∃E"[rotated] by blast
4654 AOT_have a_3: ‹❙𝒜[G]a›
4655 using antecedant "∀E" by blast
4656 moreover AOT_have ‹a = ❙ιy(y = x & ∃H (x[H] & ¬[H]x))›
4657 using "nec-hintikka-scheme"[THEN "≡E"(2), OF "&I"] a_1 a_2 by auto
4658 ultimately AOT_show ‹❙𝒜[G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))›
4659 using "rule=E" by fast
4660 qed
4661 also AOT_have B: ‹... ≡ ❙𝒜∃H (x[H] & ¬[H]x)›
4662 proof (rule "≡I"; rule "→I")
4663 AOT_assume A: ‹∃!y ❙𝒜(y = x & ∃H (x[H] & ¬[H]x))›
4664 AOT_obtain a where ‹❙𝒜(a = x & ∃H (x[H] & ¬[H]x))›
4665 using "uniqueness:1"[THEN "≡⇩d⇩fE", OF A] "&E" "∃E"[rotated] by blast
4666 AOT_thus ‹❙𝒜∃H (x[H] & ¬[H]x)›
4667 using "Act-Basic:2"[THEN "≡E"(1), THEN "&E"(2)] by blast
4668 next
4669 AOT_assume ‹❙𝒜∃H (x[H] & ¬[H]x)›
4670 AOT_hence ‹❙𝒜x = x & ❙𝒜∃H (x[H] & ¬[H]x)›
4671 using "id-eq:1" "&I" "RA[2]" by blast
4672 AOT_hence ‹❙𝒜(x = x & ∃H (x[H] & ¬[H]x))›
4673 using "act-conj-act:3" "Act-Basic:2" "≡E" by blast
4674 moreover AOT_have ‹∀z (❙𝒜(z = x & ∃H (x[H] & ¬[H]x)) → z = x)›
4675 proof(safe intro!: GEN "→I")
4676 fix z
4677 AOT_assume ‹❙𝒜(z = x & ∃H (x[H] & ¬[H]x))›
4678 AOT_hence ‹❙𝒜(z = x)›
4679 using "Act-Basic:2"[THEN "≡E"(1), THEN "&E"(1)] by blast
4680 AOT_thus ‹z = x›
4681 by (metis "id-act:1" "intro-elim:3:b")
4682 qed
4683 ultimately AOT_show ‹∃!y ❙𝒜(y = x & ∃H (x[H] & ¬[H]x))›
4684 using "uniqueness:1"[THEN "≡⇩d⇩fI"] "&I" "∃I"(2) by fast
4685 qed
4686 finally AOT_show ‹(❙𝒜[G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)) ≡ ❙𝒜∃H (x[H] & ¬[H]x))›.
4687 qed
4688
4689 AOT_assume A: ‹[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4690 AOT_hence ‹❙𝒜[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4691 using "exist-nec" "→E" "nec-imp-act"[THEN "→E"] by blast
4692 AOT_hence ‹❙𝒜([λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓ &
4693 ∀x ([G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)) ≡ ∃H (x[H] & ¬[H]x)))›
4694 using Lemma "Act-Basic:2"[THEN "≡E"(2)] "&I" by blast
4695 moreover AOT_have ‹❙𝒜([λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓ &
4696 ∀x ([G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)) ≡ ∃H (x[H] & ¬[H]x)))
4697 → ❙𝒜∃p (p & ¬p)›
4698 proof (rule "logic-actual-nec:2"[axiom_inst, THEN "≡E"(1)];
4699 rule "RA[2]"; rule "→I")
4700 AOT_modally_strict {
4701 AOT_assume 0: ‹[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓ &
4702 ∀x ([G]❙ιy(y = x & ∃H (x[H] & ¬[H]x)) ≡ ∃H (x[H] & ¬[H]x))›
4703 AOT_have ‹∃F ∀x ([F]x ≡ ∃G (x[G] & ¬[G]x))›
4704 proof(rule "∃I"(1))
4705 AOT_show ‹∀x ([λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]x ≡ ∃H (x[H] & ¬[H]x))›
4706 proof(safe intro!: GEN "≡I" "→I" "β←C" dest!: "β→C")
4707 fix x
4708 AOT_assume ‹[G]❙ιy(y = x & ∃H (x[H] & ¬[H]x))›
4709 AOT_thus ‹∃H (x[H] & ¬[H]x)›
4710 using 0 "&E" "∀E"(2) "≡E"(1) by blast
4711 next
4712 fix x
4713 AOT_assume ‹∃H (x[H] & ¬[H]x)›
4714 AOT_thus ‹[G]❙ιy(y = x & ∃H (x[H] & ¬[H]x))›
4715 using 0 "&E" "∀E"(2) "≡E"(2) by blast
4716 qed(auto intro!: 0[THEN "&E"(1)] "cqt:2")
4717 next
4718 AOT_show ‹[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4719 using 0 "&E"(1) by blast
4720 qed
4721 AOT_thus ‹∃p (p & ¬p)›
4722 using "block-paradox:2" "reductio-aa:1" by blast
4723 }
4724 qed
4725 ultimately AOT_have ‹❙𝒜∃p (p & ¬p)›
4726 using "→E" by blast
4727 AOT_hence ‹∃p ❙𝒜(p & ¬p)›
4728 by (metis "Act-Basic:10" "intro-elim:3:a")
4729 then AOT_obtain p where ‹❙𝒜(p & ¬p)›
4730 using "∃E"[rotated] by blast
4731 moreover AOT_have ‹¬❙𝒜(p & ¬p)›
4732 using "non-contradiction"[THEN "RA[2]"]
4733 by (meson "Act-Sub:1" "¬¬I" "intro-elim:3:d")
4734 ultimately AOT_show ‹p & ¬p› for p
4735 by (metis "raa-cor:3")
4736qed
4737
4738AOT_act_theorem "block-paradox2:2":
4739 ‹∃G ¬[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4740proof(rule "∃I"(1))
4741 AOT_have 0: ‹[λx ∀p (p →p)]↓›
4742 by "cqt:2[lambda]"
4743 moreover AOT_have ‹∀x [λx ∀p (p →p)]x›
4744 apply (rule GEN)
4745 apply (rule "beta-C-cor:2"[THEN "→E", OF 0, THEN "∀E"(2), THEN "≡E"(2)])
4746 using "if-p-then-p" GEN by fast
4747 moreover AOT_have ‹∀G (∀x [G]x → ¬[λx [G]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓)›
4748 using "block-paradox2:1" "∀I" by fast
4749 ultimately AOT_show ‹¬[λx [λx ∀p (p →p)]❙ιy (y = x & ∃H (x[H] & ¬[H]x))]↓›
4750 using "∀E"(1) "→E" by blast
4751qed("cqt:2[lambda]")
4752
4753AOT_theorem propositions: ‹∃p □(p ≡ φ)›
4754proof(rule "∃I"(1))
4755 AOT_show ‹□(φ ≡ φ)›
4756 by (simp add: RN "oth-class-taut:3:a")
4757next
4758 AOT_show ‹φ↓›
4759 by (simp add: "log-prop-prop:2")
4760qed
4761
4762AOT_theorem "pos-not-equiv-ne:1":
4763 ‹(◇¬∀x⇩1...∀x⇩n ([F]x⇩1...x⇩n ≡ [G]x⇩1...x⇩n)) → F ≠ G›
4764proof (rule "→I")
4765 AOT_assume ‹◇¬∀x⇩1...∀x⇩n ([F]x⇩1...x⇩n ≡ [G]x⇩1...x⇩n)›
4766 AOT_hence ‹¬□∀x⇩1...∀x⇩n ([F]x⇩1...x⇩n ≡ [G]x⇩1...x⇩n)›
4767 using "KBasic:11"[THEN "≡E"(2)] by blast
4768 AOT_hence ‹¬(F = G)›
4769 using "id-rel-nec-equiv:1" "modus-tollens:1" by blast
4770 AOT_thus ‹F ≠ G›
4771 using "=-infix"[THEN "≡⇩d⇩fI"] by blast
4772qed
4773
4774AOT_theorem "pos-not-equiv-ne:2": ‹(◇¬(φ{F} ≡ φ{G})) → F ≠ G›
4775proof (rule "→I")
4776 AOT_modally_strict {
4777 AOT_have ‹¬(φ{F} ≡ φ{G}) → ¬(F = G)›
4778 proof (rule "→I"; rule "raa-cor:2")
4779 AOT_assume 1: ‹F = G›
4780 AOT_hence ‹φ{F} → φ{G}›
4781 using "l-identity"[axiom_inst, THEN "→E"] by blast
4782 moreover {
4783 AOT_have ‹G = F›
4784 using 1 id_sym by blast
4785 AOT_hence ‹φ{G} → φ{F}›
4786 using "l-identity"[axiom_inst, THEN "→E"] by blast
4787 }
4788 ultimately AOT_have ‹φ{F} ≡ φ{G}›
4789 using "≡I" by blast
4790 moreover AOT_assume ‹¬(φ{F} ≡ φ{G})›
4791 ultimately AOT_show ‹(φ{F} ≡ φ{G}) & ¬(φ{F} ≡ φ{G})›
4792 using "&I" by blast
4793 qed
4794 }
4795 AOT_hence ‹◇¬(φ{F} ≡ φ{G}) → ◇¬(F = G)›
4796 using "RM:2[prem]" by blast
4797 moreover AOT_assume ‹◇¬(φ{F} ≡ φ{G})›
4798 ultimately AOT_have 0: ‹◇¬(F = G)› using "→E" by blast
4799 AOT_have ‹◇(F ≠ G)›
4800 by (AOT_subst ‹F ≠ G› ‹¬(F = G)›)
4801 (auto simp: "=-infix" "≡Df" 0)
4802 AOT_thus ‹F ≠ G›
4803 using "id-nec2:3"[THEN "→E"] by blast
4804qed
4805
4806AOT_theorem "pos-not-equiv-ne:2[zero]": ‹(◇¬(φ{p} ≡ φ{q})) → p ≠ q›
4807proof (rule "→I")
4808 AOT_modally_strict {
4809 AOT_have ‹¬(φ{p} ≡ φ{q}) → ¬(p = q)›
4810 proof (rule "→I"; rule "raa-cor:2")
4811 AOT_assume 1: ‹p = q›
4812 AOT_hence ‹φ{p} → φ{q}›
4813 using "l-identity"[axiom_inst, THEN "→E"] by blast
4814 moreover {
4815 AOT_have ‹q = p›
4816 using 1 id_sym by blast
4817 AOT_hence ‹φ{q} → φ{p}›
4818 using "l-identity"[axiom_inst, THEN "→E"] by blast
4819 }
4820 ultimately AOT_have ‹φ{p} ≡ φ{q}›
4821 using "≡I" by blast
4822 moreover AOT_assume ‹¬(φ{p} ≡ φ{q})›
4823 ultimately AOT_show ‹(φ{p} ≡ φ{q}) & ¬(φ{p} ≡ φ{q})›
4824 using "&I" by blast
4825 qed
4826 }
4827 AOT_hence ‹◇¬(φ{p} ≡ φ{q}) → ◇¬(p = q)›
4828 using "RM:2[prem]" by blast
4829 moreover AOT_assume ‹◇¬(φ{p} ≡ φ{q})›
4830 ultimately AOT_have 0: ‹◇¬(p = q)› using "→E" by blast
4831 AOT_have ‹◇(p ≠ q)›
4832 by (AOT_subst ‹p ≠ q› ‹¬(p = q)›)
4833 (auto simp: 0 "=-infix" "≡Df")
4834 AOT_thus ‹p ≠ q›
4835 using "id-nec2:3"[THEN "→E"] by blast
4836qed
4837
4838AOT_theorem "pos-not-equiv-ne:3":
4839 ‹(¬∀x⇩1...∀x⇩n ([F]x⇩1...x⇩n ≡ [G]x⇩1...x⇩n)) → F ≠ G›
4840 using "→I" "pos-not-equiv-ne:1"[THEN "→E"] "T◇"[THEN "→E"] by blast
4841
4842AOT_theorem "pos-not-equiv-ne:4": ‹(¬(φ{F} ≡ φ{G})) → F ≠ G›
4843 using "→I" "pos-not-equiv-ne:2"[THEN "→E"] "T◇"[THEN "→E"] by blast
4844
4845AOT_theorem "pos-not-equiv-ne:4[zero]": ‹(¬(φ{p} ≡ φ{q})) → p ≠ q›
4846 using "→I" "pos-not-equiv-ne:2[zero]"[THEN "→E"]
4847 "T◇"[THEN "→E"] by blast
4848
4849AOT_define relation_negation :: "Π ⇒ Π" ("_⇧-")
4850 "df-relation-negation": "[F]⇧- =⇩d⇩f [λx⇩1...x⇩n ¬[F]x⇩1...x⇩n]"
4851
4852nonterminal φneg
4853syntax "" :: "φneg ⇒ τ" ("_")
4854syntax "" :: "φneg ⇒ φ" ("'(_')")
4855
4856AOT_define relation_negation_0 :: ‹φ ⇒ φneg› ("'(_')⇧-")
4857 "df-relation-negation[zero]": "(p)⇧- =⇩d⇩f [λ ¬p]"
4858
4859AOT_theorem "rel-neg-T:1": ‹[λx⇩1...x⇩n ¬[Π]x⇩1...x⇩n]↓›
4860 by "cqt:2[lambda]"
4861
4862AOT_theorem "rel-neg-T:1[zero]": ‹[λ ¬φ]↓›
4863 using "cqt:2[lambda0]"[axiom_inst] by blast
4864
4865AOT_theorem "rel-neg-T:2": ‹[Π]⇧- = [λx⇩1...x⇩n ¬[Π]x⇩1...x⇩n]›
4866 using "=I"(1)[OF "rel-neg-T:1"]
4867 by (rule "=⇩d⇩fI"(1)[OF "df-relation-negation", OF "rel-neg-T:1"])
4868
4869AOT_theorem "rel-neg-T:2[zero]": ‹(φ)⇧- = [λ ¬φ]›
4870 using "=I"(1)[OF "rel-neg-T:1[zero]"]
4871 by (rule "=⇩d⇩fI"(1)[OF "df-relation-negation[zero]", OF "rel-neg-T:1[zero]"])
4872
4873AOT_theorem "rel-neg-T:3": ‹[Π]⇧-↓›
4874 using "=⇩d⇩fI"(1)[OF "df-relation-negation", OF "rel-neg-T:1"]
4875 "rel-neg-T:1" by blast
4876
4877AOT_theorem "rel-neg-T:3[zero]": ‹(φ)⇧-↓›
4878 using "log-prop-prop:2" by blast
4879
4880AOT_theorem "thm-relation-negation:1": ‹[F]⇧-x⇩1...x⇩n ≡ ¬[F]x⇩1...x⇩n›
4881proof -
4882 AOT_have ‹[F]⇧-x⇩1...x⇩n ≡ [λx⇩1...x⇩n ¬[F]x⇩1...x⇩n]x⇩1...x⇩n›
4883 using "rule=E"[rotated, OF "rel-neg-T:2"]
4884 "rule=E"[rotated, OF "rel-neg-T:2"[THEN id_sym]]
4885 "→I" "≡I" by fast
4886 also AOT_have ‹... ≡ ¬[F]x⇩1...x⇩n›
4887 using "beta-C-meta"[THEN "→E", OF "rel-neg-T:1"] by fast
4888 finally show ?thesis.
4889qed
4890
4891AOT_theorem "thm-relation-negation:2": ‹¬[F]⇧-x⇩1...x⇩n ≡ [F]x⇩1...x⇩n›
4892 apply (AOT_subst ‹[F]x⇩1...x⇩n› ‹¬¬[F]x⇩1...x⇩n›)
4893 apply (simp add: "oth-class-taut:3:b")
4894 apply (rule "oth-class-taut:4:b"[THEN "≡E"(1)])
4895 using "thm-relation-negation:1".
4896
4897AOT_theorem "thm-relation-negation:3": ‹((p)⇧-) ≡ ¬p›
4898proof -
4899 AOT_have ‹(p)⇧- = [λ ¬p]› using "rel-neg-T:2[zero]" by blast
4900 AOT_hence ‹((p)⇧-) ≡ [λ ¬p]›
4901 using "df-relation-negation[zero]" "log-prop-prop:2"
4902 "oth-class-taut:3:a" "rule-id-df:2:a" by blast
4903 also AOT_have ‹[λ ¬p] ≡ ¬p›
4904 by (simp add: "propositions-lemma:2")
4905 finally show ?thesis.
4906qed
4907
4908AOT_theorem "thm-relation-negation:4": ‹(¬((p)⇧-)) ≡ p›
4909 using "thm-relation-negation:3"[THEN "≡E"(1)]
4910 "thm-relation-negation:3"[THEN "≡E"(2)]
4911 "≡I" "→I" RAA by metis
4912
4913AOT_theorem "thm-relation-negation:5": ‹[F] ≠ [F]⇧-›
4914proof -
4915 AOT_have ‹¬([F] = [F]⇧-)›
4916 proof (rule RAA(2))
4917 AOT_show ‹[F]x⇩1...x⇩n → [F]x⇩1...x⇩n› for x⇩1x⇩n
4918 using "if-p-then-p".
4919 next
4920 AOT_assume ‹[F] = [F]⇧-›
4921 AOT_hence ‹[F]⇧- = [F]› using id_sym by blast
4922 AOT_hence ‹[F]x⇩1...x⇩n ≡ ¬[F]x⇩1...x⇩n› for x⇩1x⇩n
4923 using "rule=E" "thm-relation-negation:1" by fast
4924 AOT_thus ‹¬([F]x⇩1...x⇩n → [F]x⇩1...x⇩n)› for x⇩1x⇩n
4925 using "≡E" RAA by metis
4926 qed
4927 thus ?thesis
4928 using "≡⇩d⇩fI" "=-infix" by blast
4929qed
4930
4931AOT_theorem "thm-relation-negation:6": ‹p ≠ (p)⇧-›
4932proof -
4933 AOT_have ‹¬(p = (p)⇧-)›
4934 proof (rule RAA(2))
4935 AOT_show ‹p → p›
4936 using "if-p-then-p".
4937 next
4938 AOT_assume ‹p = (p)⇧-›
4939 AOT_hence ‹(p)⇧- = p› using id_sym by blast
4940 AOT_hence ‹p ≡ ¬p›
4941 using "rule=E" "thm-relation-negation:3" by fast
4942 AOT_thus ‹¬(p → p)›
4943 using "≡E" RAA by metis
4944 qed
4945 thus ?thesis
4946 using "≡⇩d⇩fI" "=-infix" by blast
4947qed
4948
4949AOT_theorem "thm-relation-negation:7": ‹(p)⇧- = (¬p)›
4950 apply (rule "df-relation-negation[zero]"[THEN "=⇩d⇩fE"(1)])
4951 using "cqt:2[lambda0]"[axiom_inst] "rel-neg-T:2[zero]"
4952 "propositions-lemma:1" id_trans by blast+
4953
4954AOT_theorem "thm-relation-negation:8": ‹p = q → (¬p) = (¬q)›
4955proof(rule "→I")
4956 AOT_assume ‹p = q›
4957 moreover AOT_have ‹(¬p)↓› using "log-prop-prop:2".
4958 moreover AOT_have ‹(¬p) = (¬p)› using calculation(2) "=I" by blast
4959 ultimately AOT_show ‹(¬p) = (¬q)›
4960 using "rule=E" by fast
4961qed
4962
4963AOT_theorem "thm-relation-negation:9": ‹p = q → (p)⇧- = (q)⇧-›
4964proof(rule "→I")
4965 AOT_assume ‹p = q›
4966 AOT_hence ‹(¬p) = (¬q)› using "thm-relation-negation:8" "→E" by blast
4967 AOT_thus ‹(p)⇧- = (q)⇧-›
4968 using "thm-relation-negation:7" id_sym id_trans by metis
4969qed
4970
4971AOT_define Necessary :: ‹Π ⇒ φ› ("Necessary'(_')")
4972 "contingent-properties:1":
4973 ‹Necessary([F]) ≡⇩d⇩f □∀x⇩1...∀x⇩n [F]x⇩1...x⇩n›
4974
4975AOT_define Necessary0 :: ‹φ ⇒ φ› ("Necessary0'(_')")
4976 "contingent-properties:1[zero]":
4977 ‹Necessary0(p) ≡⇩d⇩f □p›
4978
4979AOT_define Impossible :: ‹Π ⇒ φ› ("Impossible'(_')")
4980 "contingent-properties:2":
4981 ‹Impossible([F]) ≡⇩d⇩f F↓ & □∀x⇩1...∀x⇩n ¬[F]x⇩1...x⇩n›
4982
4983AOT_define Impossible0 :: ‹φ ⇒ φ› ("Impossible0'(_')")
4984 "contingent-properties:2[zero]":
4985 ‹Impossible0(p) ≡⇩d⇩f □¬p›
4986
4987AOT_define NonContingent :: ‹Π ⇒ φ› ("NonContingent'(_')")
4988 "contingent-properties:3":
4989 ‹NonContingent([F]) ≡⇩d⇩f Necessary([F]) ∨ Impossible([F])›
4990
4991AOT_define NonContingent0 :: ‹φ ⇒ φ› ("NonContingent0'(_')")
4992 "contingent-properties:3[zero]":
4993 ‹NonContingent0(p) ≡⇩d⇩f Necessary0(p) ∨ Impossible0(p)›
4994
4995AOT_define Contingent :: ‹Π ⇒ φ› ("Contingent'(_')")
4996 "contingent-properties:4":
4997 ‹Contingent([F]) ≡⇩d⇩f F↓ & ¬(Necessary([F]) ∨ Impossible([F]))›
4998
4999AOT_define Contingent0 :: ‹φ ⇒ φ› ("Contingent0'(_')")
5000 "contingent-properties:4[zero]":
5001 ‹Contingent0(p) ≡⇩d⇩f ¬(Necessary0(p) ∨ Impossible0(p))›
5002
5003
5004AOT_theorem "thm-cont-prop:1": ‹NonContingent([F]) ≡ NonContingent([F]⇧-)›
5005proof (rule "≡I"; rule "→I")
5006 AOT_assume ‹NonContingent([F])›
5007 AOT_hence ‹Necessary([F]) ∨ Impossible([F])›
5008 using "≡⇩d⇩fE"[OF "contingent-properties:3"] by blast
5009 moreover {
5010 AOT_assume ‹Necessary([F])›
5011 AOT_hence ‹□(∀x⇩1...∀x⇩n [F]x⇩1...x⇩n)›
5012 using "≡⇩d⇩fE"[OF "contingent-properties:1"] by blast
5013 moreover AOT_modally_strict {
5014 AOT_assume ‹∀x⇩1...∀x⇩n [F]x⇩1...x⇩n›
5015 AOT_hence ‹[F]x⇩1...x⇩n› for x⇩1x⇩n using "∀E" by blast
5016 AOT_hence ‹¬[F]⇧-x⇩1...x⇩n› for x⇩1x⇩n
5017 by (meson "≡E"(6) "oth-class-taut:3:a"
5018 "thm-relation-negation:2" "≡E"(1))
5019 AOT_hence ‹∀x⇩1...∀x⇩n ¬[F]⇧-x⇩1...x⇩n› using "∀I" by fast
5020 }
5021 ultimately AOT_have ‹□(∀x⇩1...∀x⇩n ¬[F]⇧-x⇩1...x⇩n)›
5022 using "RN[prem]"[where Γ="{«∀x⇩1...∀x⇩n [F]x⇩1...x⇩n»}", simplified] by blast
5023 AOT_hence ‹Impossible([F]⇧-)›
5024 using "≡Df"[OF "contingent-properties:2", THEN "≡S"(1),
5025 OF "rel-neg-T:3", THEN "≡E"(2)]
5026 by blast
5027 }
5028 moreover {
5029 AOT_assume ‹Impossible([F])›
5030 AOT_hence ‹□(∀x⇩1...∀x⇩n ¬[F]x⇩1...x⇩n)›
5031 using "≡Df"[OF "contingent-properties:2", THEN "≡S"(1),
5032 OF "cqt:2[const_var]"[axiom_inst], THEN "≡E"(1)]
5033 by blast
5034 moreover AOT_modally_strict {
5035 AOT_assume ‹∀x⇩1...∀x⇩n ¬[F]x⇩1...x⇩n›
5036 AOT_hence ‹¬[F]x⇩1...x⇩n› for x⇩1x⇩n using "∀E" by blast
5037 AOT_hence ‹[F]⇧-x⇩1...x⇩n› for x⇩1x⇩n
5038 by (meson "≡E"(6) "oth-class-taut:3:a"
5039 "thm-relation-negation:1" "≡E"(1))
5040 AOT_hence ‹∀x⇩1...∀x⇩n [F]⇧-x⇩1...x⇩n› using "∀I" by fast
5041 }
5042 ultimately AOT_have ‹□(∀x⇩1...∀x⇩n [F]⇧-x⇩1...x⇩n)›
5043 using "RN[prem]"[where Γ="{«∀x⇩1...∀x⇩n ¬[F]x⇩1...x⇩n»}"] by blast
5044 AOT_hence ‹Necessary([F]⇧-)›
5045 using "≡⇩d⇩fI"[OF "contingent-properties:1"] by blast
5046 }
5047 ultimately AOT_have ‹Necessary([F]⇧-) ∨ Impossible([F]⇧-)›
5048 using "∨E"(1) "∨I" "→I" by metis
5049 AOT_thus ‹NonContingent([F]⇧-)›
5050 using "≡⇩d⇩fI"[OF "contingent-properties:3"] by blast
5051next
5052 AOT_assume ‹NonContingent([F]⇧-)›
5053 AOT_hence ‹Necessary([F]⇧-) ∨ Impossible([F]⇧-)›
5054 using "≡⇩d⇩fE"[OF "contingent-properties:3"] by blast
5055 moreover {
5056 AOT_assume ‹Necessary([F]⇧-)›
5057 AOT_hence ‹□(∀x⇩1...∀x⇩n [F]⇧-x⇩1...x⇩n)›
5058 using "≡⇩d⇩fE"[OF "contingent-properties:1"] by blast
5059 moreover AOT_modally_strict {
5060 AOT_assume ‹∀x⇩1...∀x⇩n [F]⇧-x⇩1...x⇩n›
5061 AOT_hence ‹[F]⇧-x⇩1...x⇩n› for x⇩1x⇩n using "∀E" by blast
5062 AOT_hence ‹¬[F]x⇩1...x⇩n› for x⇩1x⇩n
5063 by (meson "≡E"(6) "oth-class-taut:3:a"
5064 "thm-relation-negation:1" "≡E"(2))
5065 AOT_hence ‹∀x⇩1...∀x⇩n ¬[F]x⇩1...x⇩n› using "∀I" by fast
5066 }
5067 ultimately AOT_have ‹□∀x⇩1...∀x⇩n ¬[F]x⇩1...x⇩n›
5068 using "RN[prem]"[where Γ="{«∀x⇩1...∀x⇩n [F]⇧-x⇩1...x⇩n»}"] by blast
5069 AOT_hence ‹Impossible([F])›
5070 using "≡Df"[OF "contingent-properties:2", THEN "≡S"(1),
5071 OF "cqt:2[const_var]"[axiom_inst], THEN "≡E"(2)]
5072 by blast
5073 }
5074 moreover {
5075 AOT_assume ‹Impossible([F]⇧-)›
5076 AOT_hence ‹□(∀x⇩1...∀x⇩n ¬[F]⇧-x⇩1...x⇩n)›
5077 using "≡Df"[OF "contingent-properties:2", THEN "≡S"(1),
5078 OF "rel-neg-T:3", THEN "≡E"(1)]
5079 by blast
5080 moreover AOT_modally_strict {
5081 AOT_assume ‹∀x⇩1...∀x⇩n ¬[F]⇧-x⇩1...x⇩n›
5082 AOT_hence ‹¬[F]⇧-x⇩1...x⇩n› for x⇩1x⇩n using "∀E" by blast
5083 AOT_hence ‹[F]x⇩1...x⇩n› for x⇩1x⇩n
5084 using "thm-relation-negation:1"[THEN
5085 "oth-class-taut:4:b"[THEN "≡E"(1)], THEN "≡E"(1)]
5086 "useful-tautologies:1"[THEN "→E"] by blast
5087 AOT_hence ‹∀x⇩1...∀x⇩n [F]x⇩1...x⇩n› using "∀I" by fast
5088 }
5089 ultimately AOT_have ‹□(∀x⇩1...∀x⇩n [F]x⇩1...x⇩n)›
5090 using "RN[prem]"[where Γ="{«∀x⇩1...∀x⇩n ¬[F]⇧-x⇩1...x⇩n»}"] by blast
5091 AOT_hence ‹Necessary([F])›
5092 using "≡⇩d⇩fI"[OF "contingent-properties:1"] by blast
5093 }
5094 ultimately AOT_have ‹Necessary([F]) ∨ Impossible([F])›
5095 using "∨E"(1) "∨I" "→I" by metis
5096 AOT_thus ‹NonContingent([F])›
5097 using "≡⇩d⇩fI"[OF "contingent-properties:3"] by blast
5098qed
5099
5100AOT_theorem "thm-cont-prop:2": ‹Contingent([F]) ≡ ◇∃x [F]x & ◇∃x ¬[F]x›
5101proof -
5102 AOT_have ‹Contingent([F]) ≡ ¬(Necessary([F]) ∨ Impossible([F]))›
5103 using "contingent-properties:4"[THEN "≡Df", THEN "≡S"(1),
5104 OF "cqt:2[const_var]"[axiom_inst]]
5105 by blast
5106 also AOT_have ‹... ≡ ¬Necessary([F]) & ¬Impossible([F])›
5107 using "oth-class-taut:5:d" by fastforce
5108 also AOT_have ‹... ≡ ¬Impossible([F]) & ¬Necessary([F])›
5109 by (simp add: "Commutativity of &")
5110 also AOT_have ‹... ≡ ◇∃x [F]x & ¬Necessary([F])›
5111 proof (rule "oth-class-taut:4:e"[THEN "→E"])
5112 AOT_have ‹¬Impossible([F]) ≡ ¬□¬ ∃x [F]x›
5113 apply (rule "oth-class-taut:4:b"[THEN "≡E"(1)])
5114 apply (AOT_subst ‹∃x [F]x› ‹¬ ∀x ¬[F]x›)
5115 apply (simp add: "conventions:4" "≡Df")
5116 apply (AOT_subst (reverse) ‹¬¬∀x ¬[F]x› ‹∀x ¬[F]x›)
5117 apply (simp add: "oth-class-taut:3:b")
5118 using "contingent-properties:2"[THEN "≡Df", THEN "≡S"(1),
5119 OF "cqt:2[const_var]"[axiom_inst]]
5120 by blast
5121 also AOT_have ‹... ≡ ◇∃x [F]x›
5122 using "conventions:5"[THEN "≡Df", symmetric] by blast
5123 finally AOT_show ‹¬Impossible([F]) ≡ ◇∃x [F]x› .
5124 qed
5125 also AOT_have ‹... ≡ ◇∃x [F]x & ◇∃x ¬[F]x›
5126 proof (rule "oth-class-taut:4:f"[THEN "→E"])
5127 AOT_have ‹¬Necessary([F]) ≡ ¬□¬∃x ¬[F]x›
5128 apply (rule "oth-class-taut:4:b"[THEN "≡E"(1)])
5129 apply (AOT_subst ‹∃x ¬[F]x› ‹¬ ∀x ¬¬[F]x›)
5130 apply (simp add: "conventions:4" "≡Df")
5131 apply (AOT_subst (reverse) ‹¬¬[F]x› ‹[F]x› for: x)
5132 apply (simp add: "oth-class-taut:3:b")
5133 apply (AOT_subst (reverse) ‹¬¬∀x [F]x› ‹∀x [F]x›)
5134 by (auto simp: "oth-class-taut:3:b" "contingent-properties:1" "≡Df")
5135 also AOT_have ‹... ≡ ◇∃x ¬[F]x›
5136 using "conventions:5"[THEN "≡Df", symmetric] by blast
5137 finally AOT_show ‹¬Necessary([F]) ≡ ◇∃x ¬[F]x›.
5138 qed
5139 finally show ?thesis.
5140qed
5141
5142AOT_theorem "thm-cont-prop:3":
5143 ‹Contingent([F]) ≡ Contingent([F]⇧-)› for F::‹<κ> AOT_var›
5144proof -
5145 {
5146 fix Π :: ‹<κ>›
5147 AOT_assume ‹Π↓›
5148 moreover AOT_have ‹∀F (Contingent([F]) ≡ ◇∃x [F]x & ◇∃x ¬[F]x)›
5149 using "thm-cont-prop:2" GEN by fast
5150 ultimately AOT_have ‹Contingent([Π]) ≡ ◇∃x [Π]x & ◇∃x ¬[Π]x›
5151 using "thm-cont-prop:2" "∀E" by fast
5152 } note 1 = this
5153 AOT_have ‹Contingent([F]) ≡ ◇∃x [F]x & ◇∃x ¬[F]x›
5154 using "thm-cont-prop:2" by blast
5155 also AOT_have ‹... ≡ ◇∃x ¬[F]x & ◇∃x [F]x›
5156 by (simp add: "Commutativity of &")
5157 also AOT_have ‹... ≡ ◇∃x [F]⇧-x & ◇∃x [F]x›
5158 by (AOT_subst ‹[F]⇧-x› ‹¬[F]x› for: x)
5159 (auto simp: "thm-relation-negation:1" "oth-class-taut:3:a")
5160 also AOT_have ‹... ≡ ◇∃x [F]⇧-x & ◇∃x ¬[F]⇧-x›
5161 by (AOT_subst (reverse) ‹[F]x› ‹¬[F]⇧-x› for: x)
5162 (auto simp: "thm-relation-negation:2" "oth-class-taut:3:a")
5163 also AOT_have ‹... ≡ Contingent([F]⇧-)›
5164 using 1[OF "rel-neg-T:3", symmetric] by blast
5165 finally show ?thesis.
5166qed
5167
5168AOT_define concrete_if_concrete :: ‹Π› ("L")
5169 L_def: ‹L =⇩d⇩f [λx E!x → E!x]›
5170
5171AOT_theorem "thm-noncont-e-e:1": ‹Necessary(L)›
5172proof -
5173 AOT_modally_strict {
5174 fix x
5175 AOT_have ‹[λx E!x → E!x]↓› by "cqt:2[lambda]"
5176 moreover AOT_have ‹x↓› using "cqt:2[const_var]"[axiom_inst] by blast
5177 moreover AOT_have ‹E!x → E!x› using "if-p-then-p" by blast
5178 ultimately AOT_have ‹[λx E!x → E!x]x›
5179 using "β←C" by blast
5180 }
5181 AOT_hence 0: ‹□∀x [λx E!x → E!x]x›
5182 using RN GEN by blast
5183 show ?thesis
5184 apply (rule "=⇩d⇩fI"(2)[OF L_def])
5185 apply "cqt:2[lambda]"
5186 by (rule "contingent-properties:1"[THEN "≡⇩d⇩fI", OF 0])
5187qed
5188
5189AOT_theorem "thm-noncont-e-e:2": ‹Impossible([L]⇧-)›
5190proof -
5191 AOT_modally_strict {
5192 fix x
5193
5194 AOT_have 0: ‹∀F (¬[F]⇧-x ≡ [F]x)›
5195 using "thm-relation-negation:2" GEN by fast
5196 AOT_have ‹¬[λx E!x → E!x]⇧-x ≡ [λx E!x → E!x]x›
5197 by (rule 0[THEN "∀E"(1)]) "cqt:2[lambda]"
5198 moreover {
5199 AOT_have ‹[λx E!x → E!x]↓› by "cqt:2[lambda]"
5200 moreover AOT_have ‹x↓› using "cqt:2[const_var]"[axiom_inst] by blast
5201 moreover AOT_have ‹E!x → E!x› using "if-p-then-p" by blast
5202 ultimately AOT_have ‹[λx E!x → E!x]x›
5203 using "β←C" by blast
5204 }
5205 ultimately AOT_have ‹¬[λx E!x → E!x]⇧-x›
5206 using "≡E" by blast
5207 }
5208 AOT_hence 0: ‹□∀x ¬[λx E!x → E!x]⇧-x›
5209 using RN GEN by fast
5210 show ?thesis
5211 apply (rule "=⇩d⇩fI"(2)[OF L_def])
5212 apply "cqt:2[lambda]"
5213 apply (rule "contingent-properties:2"[THEN "≡⇩d⇩fI"]; rule "&I")
5214 using "rel-neg-T:3"
5215 apply blast
5216 using 0
5217 by blast
5218qed
5219
5220AOT_theorem "thm-noncont-e-e:3": ‹NonContingent(L)›
5221 using "thm-noncont-e-e:1"
5222 by (rule "contingent-properties:3"[THEN "≡⇩d⇩fI", OF "∨I"(1)])
5223
5224AOT_theorem "thm-noncont-e-e:4": ‹NonContingent([L]⇧-)›
5225proof -
5226 AOT_have 0: ‹∀F (NonContingent([F]) ≡ NonContingent([F]⇧-))›
5227 using "thm-cont-prop:1" "∀I" by fast
5228 moreover AOT_have 1: ‹L↓›
5229 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
5230 AOT_show ‹NonContingent([L]⇧-)›
5231 using "∀E"(1)[OF 0, OF 1, THEN "≡E"(1), OF "thm-noncont-e-e:3"] by blast
5232qed
5233
5234AOT_theorem "thm-noncont-e-e:5":
5235 ‹∃F ∃G (F ≠ «G::<κ>» & NonContingent([F]) & NonContingent([G]))›
5236proof (rule "∃I")+
5237 {
5238 AOT_have ‹∀F [F] ≠ [F]⇧-›
5239 using "thm-relation-negation:5" GEN by fast
5240 moreover AOT_have ‹L↓›
5241 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
5242 ultimately AOT_have ‹L ≠ [L]⇧-›
5243 using "∀E" by blast
5244 }
5245 AOT_thus ‹L ≠ [L]⇧- & NonContingent(L) & NonContingent([L]⇧-)›
5246 using "thm-noncont-e-e:3" "thm-noncont-e-e:4" "&I" by metis
5247next
5248 AOT_show ‹[L]⇧-↓›
5249 using "rel-neg-T:3" by blast
5250next
5251 AOT_show ‹L↓›
5252 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
5253qed
5254
5255AOT_theorem "lem-cont-e:1": ‹◇∃x ([F]x & ◇¬[F]x) ≡ ◇∃x (¬[F]x & ◇[F]x)›
5256proof -
5257 AOT_have ‹◇∃x ([F]x & ◇¬[F]x) ≡ ∃x ◇([F]x & ◇¬[F]x)›
5258 using "BF◇" "CBF◇" "≡I" by blast
5259 also AOT_have ‹… ≡ ∃x (◇[F]x & ◇¬[F]x)›
5260 by (AOT_subst ‹◇([F]x & ◇¬[F]x)› ‹◇[F]x & ◇¬[F]x› for: x)
5261 (auto simp: "S5Basic:11" "cqt-further:7")
5262 also AOT_have ‹… ≡ ∃x (◇¬[F]x & ◇[F]x)›
5263 by (AOT_subst ‹◇¬[F]x & ◇[F]x› ‹◇[F]x & ◇¬[F]x› for: x)
5264 (auto simp: "Commutativity of &" "cqt-further:7")
5265 also AOT_have ‹… ≡ ∃x ◇(¬[F]x & ◇[F]x)›
5266 by (AOT_subst ‹◇(¬[F]x & ◇[F]x)› ‹◇¬[F]x & ◇[F]x› for: x)
5267 (auto simp: "S5Basic:11" "oth-class-taut:3:a")
5268 also AOT_have ‹… ≡ ◇∃x (¬[F]x & ◇[F]x)›
5269 using "BF◇" "CBF◇" "≡I" by fast
5270 finally show ?thesis.
5271qed
5272
5273AOT_theorem "lem-cont-e:2":
5274 ‹◇∃x ([F]x & ◇¬[F]x) ≡ ◇∃x ([F]⇧-x & ◇¬[F]⇧-x)›
5275proof -
5276 AOT_have ‹◇∃x ([F]x & ◇¬[F]x) ≡ ◇∃x (¬[F]x & ◇[F]x)›
5277 using "lem-cont-e:1".
5278 also AOT_have ‹… ≡ ◇∃x ([F]⇧-x & ◇¬[F]⇧-x)›
5279 apply (AOT_subst ‹¬[F]⇧-x› ‹[F]x› for: x)
5280 apply (simp add: "thm-relation-negation:2")
5281 apply (AOT_subst ‹[F]⇧-x› ‹¬[F]x› for: x)
5282 apply (simp add: "thm-relation-negation:1")
5283 by (simp add: "oth-class-taut:3:a")
5284 finally show ?thesis.
5285qed
5286
5287AOT_theorem "thm-cont-e:1": ‹◇∃x (E!x & ◇¬E!x)›
5288proof (rule "CBF◇"[THEN "→E"])
5289 AOT_have ‹∃x ◇(E!x & ¬❙𝒜E!x)›
5290 using "qml:4"[axiom_inst] "BF◇"[THEN "→E"] by blast
5291 then AOT_obtain a where ‹◇(E!a & ¬❙𝒜E!a)›
5292 using "∃E"[rotated] by blast
5293 AOT_hence θ: ‹◇E!a & ◇¬❙𝒜E!a›
5294 using "KBasic2:3"[THEN "→E"] by blast
5295 AOT_have ξ: ‹◇E!a & ◇❙𝒜¬E!a›
5296 by (AOT_subst ‹❙𝒜¬E!a› ‹¬❙𝒜E!a›)
5297 (auto simp: "logic-actual-nec:1"[axiom_inst] θ)
5298 AOT_have ζ: ‹◇E!a & ❙𝒜¬E!a›
5299 by (AOT_subst ‹❙𝒜¬E!a› ‹◇❙𝒜¬E!a›)
5300 (auto simp add: "Act-Sub:4" ξ)
5301 AOT_hence ‹◇E!a & ◇¬E!a›
5302 using "&E" "&I" "Act-Sub:3"[THEN "→E"] by blast
5303 AOT_hence ‹◇(E!a & ◇¬E!a)›
5304 using "S5Basic:11"[THEN "≡E"(2)] by simp
5305 AOT_thus ‹∃x ◇(E!x & ◇¬E!x)›
5306 using "∃I"(2) by fast
5307qed
5308
5309AOT_theorem "thm-cont-e:2": ‹◇∃x (¬E!x & ◇E!x)›
5310proof -
5311 AOT_have ‹∀F (◇∃x ([F]x & ◇¬[F]x) ≡ ◇∃x (¬[F]x & ◇[F]x))›
5312 using "lem-cont-e:1" GEN by fast
5313 AOT_hence ‹(◇∃x (E!x & ◇¬E!x) ≡ ◇∃x (¬E!x & ◇E!x))›
5314 using "∀E"(2) by blast
5315 thus ?thesis using "thm-cont-e:1" "≡E" by blast
5316qed
5317
5318AOT_theorem "thm-cont-e:3": ‹◇∃x E!x›
5319proof (rule "CBF◇"[THEN "→E"])
5320 AOT_obtain a where ‹◇(E!a & ◇¬E!a)›
5321 using "∃E"[rotated, OF "thm-cont-e:1"[THEN "BF◇"[THEN "→E"]]] by blast
5322 AOT_hence ‹◇E!a›
5323 using "KBasic2:3"[THEN "→E", THEN "&E"(1)] by blast
5324 AOT_thus ‹∃x ◇E!x› using "∃I" by fast
5325qed
5326
5327AOT_theorem "thm-cont-e:4": ‹◇∃x ¬E!x›
5328proof (rule "CBF◇"[THEN "→E"])
5329 AOT_obtain a where ‹◇(E!a & ◇¬E!a)›
5330 using "∃E"[rotated, OF "thm-cont-e:1"[THEN "BF◇"[THEN "→E"]]] by blast
5331 AOT_hence ‹◇◇¬E!a›
5332 using "KBasic2:3"[THEN "→E", THEN "&E"(2)] by blast
5333 AOT_hence ‹◇¬E!a›
5334 using "4◇"[THEN "→E"] by blast
5335 AOT_thus ‹∃x ◇¬E!x› using "∃I" by fast
5336qed
5337
5338AOT_theorem "thm-cont-e:5": ‹Contingent([E!])›
5339proof -
5340 AOT_have ‹∀F (Contingent([F]) ≡ ◇∃x [F]x & ◇∃x ¬[F]x)›
5341 using "thm-cont-prop:2" GEN by fast
5342 AOT_hence ‹Contingent([E!]) ≡ ◇∃x E!x & ◇∃x ¬E!x›
5343 using "∀E"(2) by blast
5344 thus ?thesis
5345 using "thm-cont-e:3" "thm-cont-e:4" "≡E"(2) "&I" by blast
5346qed
5347
5348AOT_theorem "thm-cont-e:6": ‹Contingent([E!]⇧-)›
5349proof -
5350 AOT_have ‹∀F (Contingent([«F::<κ>»]) ≡ Contingent([F]⇧-))›
5351 using "thm-cont-prop:3" GEN by fast
5352 AOT_hence ‹Contingent([E!]) ≡ Contingent([E!]⇧-)›
5353 using "∀E"(2) by fast
5354 thus ?thesis using "thm-cont-e:5" "≡E" by blast
5355qed
5356
5357AOT_theorem "thm-cont-e:7":
5358 ‹∃F∃G (Contingent([«F::<κ>»]) & Contingent([G]) & F ≠ G)›
5359proof (rule "∃I")+
5360 AOT_have ‹∀F [«F::<κ>»] ≠ [F]⇧-›
5361 using "thm-relation-negation:5" GEN by fast
5362 AOT_hence ‹[E!] ≠ [E!]⇧-›
5363 using "∀E" by fast
5364 AOT_thus ‹Contingent([E!]) & Contingent([E!]⇧-) & [E!] ≠ [E!]⇧-›
5365 using "thm-cont-e:5" "thm-cont-e:6" "&I" by metis
5366next
5367 AOT_show ‹E!⇧-↓›
5368 by (fact AOT)
5369qed("cqt:2")
5370
5371AOT_theorem "property-facts:1":
5372 ‹NonContingent([F]) → ¬∃G (Contingent([G]) & G = F)›
5373proof (rule "→I"; rule "raa-cor:2")
5374 AOT_assume ‹NonContingent([F])›
5375 AOT_hence 1: ‹Necessary([F]) ∨ Impossible([F])›
5376 using "contingent-properties:3"[THEN "≡⇩d⇩fE"] by blast
5377 AOT_assume ‹∃G (Contingent([G]) & G = F)›
5378 then AOT_obtain G where ‹Contingent([G]) & G = F›
5379 using "∃E"[rotated] by blast
5380 AOT_hence ‹Contingent([F])› using "rule=E" "&E" by blast
5381 AOT_hence ‹¬(Necessary([F]) ∨ Impossible([F]))›
5382 using "contingent-properties:4"[THEN "≡Df", THEN "≡S"(1),
5383 OF "cqt:2[const_var]"[axiom_inst], THEN "≡E"(1)] by blast
5384 AOT_thus ‹(Necessary([F]) ∨ Impossible([F])) &
5385 ¬(Necessary([F]) ∨ Impossible([F]))›
5386 using 1 "&I" by blast
5387qed
5388
5389AOT_theorem "property-facts:2":
5390 ‹Contingent([F]) → ¬∃G (NonContingent([G]) & G = F)›
5391proof (rule "→I"; rule "raa-cor:2")
5392 AOT_assume ‹Contingent([F])›
5393 AOT_hence 1: ‹¬(Necessary([F]) ∨ Impossible([F]))›
5394 using "contingent-properties:4"[THEN "≡Df", THEN "≡S"(1),
5395 OF "cqt:2[const_var]"[axiom_inst], THEN "≡E"(1)] by blast
5396 AOT_assume ‹∃G (NonContingent([G]) & G = F)›
5397 then AOT_obtain G where ‹NonContingent([G]) & G = F›
5398 using "∃E"[rotated] by blast
5399 AOT_hence ‹NonContingent([F])›
5400 using "rule=E" "&E" by blast
5401 AOT_hence ‹Necessary([F]) ∨ Impossible([F])›
5402 using "contingent-properties:3"[THEN "≡⇩d⇩fE"] by blast
5403 AOT_thus ‹(Necessary([F]) ∨ Impossible([F])) &
5404 ¬(Necessary([F]) ∨ Impossible([F]))›
5405 using 1 "&I" by blast
5406qed
5407
5408AOT_theorem "property-facts:3":
5409 ‹L ≠ [L]⇧- & L ≠ E! & L ≠ E!⇧- & [L]⇧- ≠ [E!]⇧- & E! ≠ [E!]⇧-›
5410proof -
5411 AOT_have noneqI: ‹Π ≠ Π'› if ‹φ{Π}› and ‹¬φ{Π'}› for φ and Π Π' :: ‹<κ>›
5412 apply (rule "=-infix"[THEN "≡⇩d⇩fI"]; rule "raa-cor:2")
5413 using "rule=E"[where φ=φ and τ=Π and σ = Π'] that "&I" by blast
5414 AOT_have contingent_denotes: ‹Π↓› if ‹Contingent([Π])› for Π :: ‹<κ>›
5415 using that "contingent-properties:4"[THEN "≡⇩d⇩fE", THEN "&E"(1)] by blast
5416 AOT_have not_noncontingent_if_contingent:
5417 ‹¬NonContingent([Π])› if ‹Contingent([Π])› for Π :: ‹<κ>›
5418 proof(rule RAA(2))
5419 AOT_show ‹¬(Necessary([Π]) ∨ Impossible([Π]))›
5420 using that "contingent-properties:4"[THEN "≡Df", THEN "≡S"(1),
5421 OF contingent_denotes[OF that], THEN "≡E"(1)]
5422 by blast
5423 next
5424 AOT_assume ‹NonContingent([Π])›
5425 AOT_thus ‹Necessary([Π]) ∨ Impossible([Π])›
5426 using "contingent-properties:3"[THEN "≡⇩d⇩fE"] by blast
5427 qed
5428
5429 show ?thesis
5430 proof (safe intro!: "&I")
5431 AOT_show ‹L ≠ [L]⇧-›
5432 apply (rule "=⇩d⇩fI"(2)[OF L_def])
5433 apply "cqt:2[lambda]"
5434 apply (rule "∀E"(1)[where φ="λ Π . «Π ≠ [Π]⇧-»"])
5435 apply (rule GEN) apply (fact AOT)
5436 by "cqt:2[lambda]"
5437 next
5438 AOT_show ‹L ≠ E!›
5439 apply (rule noneqI)
5440 using "thm-noncont-e-e:3"
5441 not_noncontingent_if_contingent[OF "thm-cont-e:5"]
5442 by auto
5443 next
5444 AOT_show ‹L ≠ E!⇧-›
5445 apply (rule noneqI)
5446 using "thm-noncont-e-e:3" apply fast
5447 apply (rule not_noncontingent_if_contingent)
5448 apply (rule "∀E"(1)[
5449 where φ="λ Π . «Contingent([Π]) ≡ Contingent([Π]⇧-)»",
5450 rotated, OF contingent_denotes, THEN "≡E"(1), rotated])
5451 using "thm-cont-prop:3" GEN apply fast
5452 using "thm-cont-e:5" by fast+
5453 next
5454 AOT_show ‹[L]⇧- ≠ E!⇧-›
5455 apply (rule noneqI)
5456 using "thm-noncont-e-e:4" apply fast
5457 apply (rule not_noncontingent_if_contingent)
5458 apply (rule "∀E"(1)[
5459 where φ="λ Π . «Contingent([Π]) ≡ Contingent([Π]⇧-)»",
5460 rotated, OF contingent_denotes, THEN "≡E"(1), rotated])
5461 using "thm-cont-prop:3" GEN apply fast
5462 using "thm-cont-e:5" by fast+
5463 next
5464 AOT_show ‹E! ≠ E!⇧-›
5465 apply (rule "=⇩d⇩fI"(2)[OF L_def])
5466 apply "cqt:2[lambda]"
5467 apply (rule "∀E"(1)[where φ="λ Π . «Π ≠ [Π]⇧-»"])
5468 apply (rule GEN) apply (fact AOT)
5469 by "cqt:2"
5470 qed
5471qed
5472
5473AOT_theorem "thm-cont-propos:1":
5474 ‹NonContingent0(p) ≡ NonContingent0(((p)⇧-))›
5475proof(rule "≡I"; rule "→I")
5476 AOT_assume ‹NonContingent0(p)›
5477 AOT_hence ‹Necessary0(p) ∨ Impossible0(p)›
5478 using "contingent-properties:3[zero]"[THEN "≡⇩d⇩fE"] by blast
5479 moreover {
5480 AOT_assume ‹Necessary0(p)›
5481 AOT_hence 1: ‹□p›
5482 using "contingent-properties:1[zero]"[THEN "≡⇩d⇩fE"] by blast
5483 AOT_have ‹□¬((p)⇧-)›
5484 by (AOT_subst ‹¬((p)⇧-)› ‹p›)
5485 (auto simp add: 1 "thm-relation-negation:4")
5486 AOT_hence ‹Impossible0(((p)⇧-))›
5487 by (rule "contingent-properties:2[zero]"[THEN "≡⇩d⇩fI"])
5488 }
5489 moreover {
5490 AOT_assume ‹Impossible0(p)›
5491 AOT_hence 1: ‹□¬p›
5492 by (rule "contingent-properties:2[zero]"[THEN "≡⇩d⇩fE"])
5493 AOT_have ‹□((p)⇧-)›
5494 by (AOT_subst ‹((p)⇧-)› ‹¬p›)
5495 (auto simp: 1 "thm-relation-negation:3")
5496 AOT_hence ‹Necessary0(((p)⇧-))›
5497 by (rule "contingent-properties:1[zero]"[THEN "≡⇩d⇩fI"])
5498 }
5499 ultimately AOT_have ‹Necessary0(((p)⇧-)) ∨ Impossible0(((p)⇧-))›
5500 using "∨E"(1) "∨I" "→I" by metis
5501 AOT_thus ‹NonContingent0(((p)⇧-))›
5502 using "contingent-properties:3[zero]"[THEN "≡⇩d⇩fI"] by blast
5503next
5504 AOT_assume ‹NonContingent0(((p)⇧-))›
5505 AOT_hence ‹Necessary0(((p)⇧-)) ∨ Impossible0(((p)⇧-))›
5506 using "contingent-properties:3[zero]"[THEN "≡⇩d⇩fE"] by blast
5507 moreover {
5508 AOT_assume ‹Impossible0(((p)⇧-))›
5509 AOT_hence 1: ‹□¬((p)⇧-)›
5510 by (rule "contingent-properties:2[zero]"[THEN "≡⇩d⇩fE"])
5511 AOT_have ‹□p›
5512 by (AOT_subst (reverse) ‹p› ‹¬((p)⇧-)›)
5513 (auto simp: 1 "thm-relation-negation:4")
5514 AOT_hence ‹Necessary0(p)›
5515 using "contingent-properties:1[zero]"[THEN "≡⇩d⇩fI"] by blast
5516 }
5517 moreover {
5518 AOT_assume ‹Necessary0(((p)⇧-))›
5519 AOT_hence 1: ‹□((p)⇧-)›
5520 by (rule "contingent-properties:1[zero]"[THEN "≡⇩d⇩fE"])
5521 AOT_have ‹□¬p›
5522 by (AOT_subst (reverse) ‹¬p› ‹((p)⇧-)›)
5523 (auto simp: 1 "thm-relation-negation:3")
5524 AOT_hence ‹Impossible0(p)›
5525 by (rule "contingent-properties:2[zero]"[THEN "≡⇩d⇩fI"])
5526 }
5527 ultimately AOT_have ‹Necessary0(p) ∨ Impossible0(p)›
5528 using "∨E"(1) "∨I" "→I" by metis
5529 AOT_thus ‹NonContingent0(p)›
5530 using "contingent-properties:3[zero]"[THEN "≡⇩d⇩fI"] by blast
5531qed
5532
5533AOT_theorem "thm-cont-propos:2": ‹Contingent0(φ) ≡ ◇φ & ◇¬φ›
5534proof -
5535 AOT_have ‹Contingent0(φ) ≡ ¬(Necessary0(φ) ∨ Impossible0(φ))›
5536 using "contingent-properties:4[zero]"[THEN "≡Df"] by simp
5537 also AOT_have ‹… ≡ ¬Necessary0(φ) & ¬Impossible0(φ)›
5538 by (fact AOT)
5539 also AOT_have ‹… ≡ ¬Impossible0(φ) & ¬Necessary0(φ)›
5540 by (fact AOT)
5541 also AOT_have ‹… ≡ ◇φ & ◇¬φ›
5542 apply (AOT_subst ‹◇φ› ‹¬□¬φ›)
5543 apply (simp add: "conventions:5" "≡Df")
5544 apply (AOT_subst ‹Impossible0(φ)› ‹□¬φ›)
5545 apply (simp add: "contingent-properties:2[zero]" "≡Df")
5546 apply (AOT_subst (reverse) ‹◇¬φ› ‹¬□φ›)
5547 apply (simp add: "KBasic:11")
5548 apply (AOT_subst ‹Necessary0(φ)› ‹□φ›)
5549 apply (simp add: "contingent-properties:1[zero]" "≡Df")
5550 by (simp add: "oth-class-taut:3:a")
5551 finally show ?thesis.
5552qed
5553
5554AOT_theorem "thm-cont-propos:3": ‹Contingent0(p) ≡ Contingent0(((p)⇧-))›
5555proof -
5556 AOT_have ‹Contingent0(p) ≡ ◇p & ◇¬p› using "thm-cont-propos:2".
5557 also AOT_have ‹… ≡ ◇¬p & ◇p› by (fact AOT)
5558 also AOT_have ‹… ≡ ◇((p)⇧-) & ◇p›
5559 by (AOT_subst ‹((p)⇧-)› ‹¬p›)
5560 (auto simp: "thm-relation-negation:3" "oth-class-taut:3:a")
5561 also AOT_have ‹… ≡ ◇((p)⇧-) & ◇¬((p)⇧-)›
5562 by (AOT_subst ‹¬((p)⇧-)› ‹p›)
5563 (auto simp: "thm-relation-negation:4" "oth-class-taut:3:a")
5564 also AOT_have ‹… ≡ Contingent0(((p)⇧-))›
5565 using "thm-cont-propos:2"[symmetric] by blast
5566 finally show ?thesis.
5567qed
5568
5569AOT_define noncontingent_prop :: ‹φ› ("p⇩0")
5570 p⇩0_def: "(p⇩0) =⇩d⇩f (∀x (E!x → E!x))"
5571
5572AOT_theorem "thm-noncont-propos:1": ‹Necessary0((p⇩0))›
5573proof(rule "contingent-properties:1[zero]"[THEN "≡⇩d⇩fI"])
5574 AOT_show ‹□(p⇩0)›
5575 apply (rule "=⇩d⇩fI"(2)[OF p⇩0_def])
5576 using "log-prop-prop:2" apply simp
5577 using "if-p-then-p" RN GEN by fast
5578qed
5579
5580AOT_theorem "thm-noncont-propos:2": ‹Impossible0(((p⇩0)⇧-))›
5581proof(rule "contingent-properties:2[zero]"[THEN "≡⇩d⇩fI"])
5582 AOT_show ‹□¬((p⇩0)⇧-)›
5583 apply (AOT_subst ‹((p⇩0)⇧-)› ‹¬p⇩0›)
5584 using "thm-relation-negation:3" GEN "∀E"(1)[rotated, OF "log-prop-prop:2"]
5585 apply fast
5586 apply (AOT_subst (reverse) ‹¬¬p⇩0› ‹p⇩0›)
5587 apply (simp add: "oth-class-taut:3:b")
5588 apply (rule "=⇩d⇩fI"(2)[OF p⇩0_def])
5589 using "log-prop-prop:2" apply simp
5590 using "if-p-then-p" RN GEN by fast
5591qed
5592
5593AOT_theorem "thm-noncont-propos:3": ‹NonContingent0((p⇩0))›
5594 apply(rule "contingent-properties:3[zero]"[THEN "≡⇩d⇩fI"])
5595 using "thm-noncont-propos:1" "∨I" by blast
5596
5597AOT_theorem "thm-noncont-propos:4": ‹NonContingent0(((p⇩0)⇧-))›
5598 apply(rule "contingent-properties:3[zero]"[THEN "≡⇩d⇩fI"])
5599 using "thm-noncont-propos:2" "∨I" by blast
5600
5601AOT_theorem "thm-noncont-propos:5":
5602 ‹∃p∃q (NonContingent0((p)) & NonContingent0((q)) & p ≠ q)›
5603proof(rule "∃I")+
5604 AOT_have 0: ‹φ ≠ (φ)⇧-› for φ
5605 using "thm-relation-negation:6" "∀I"
5606 "∀E"(1)[rotated, OF "log-prop-prop:2"] by fast
5607 AOT_thus ‹NonContingent0((p⇩0)) & NonContingent0(((p⇩0)⇧-)) & (p⇩0) ≠ (p⇩0)⇧-›
5608 using "thm-noncont-propos:3" "thm-noncont-propos:4" "&I" by auto
5609qed(auto simp: "log-prop-prop:2")
5610
5611AOT_act_theorem "no-cnac": ‹¬∃x(E!x & ¬❙𝒜E!x)›
5612proof(rule "raa-cor:2")
5613 AOT_assume ‹∃x(E!x & ¬❙𝒜E!x)›
5614 then AOT_obtain a where a: ‹E!a & ¬❙𝒜E!a›
5615 using "∃E"[rotated] by blast
5616 AOT_hence ‹❙𝒜¬E!a›
5617 using "&E" "logic-actual-nec:1"[axiom_inst, THEN "≡E"(2)] by blast
5618 AOT_hence ‹¬E!a›
5619 using "logic-actual"[act_axiom_inst, THEN "→E"] by blast
5620 AOT_hence ‹E!a & ¬E!a›
5621 using a "&E" "&I" by blast
5622 AOT_thus ‹p & ¬p› for p using "raa-cor:1" by blast
5623qed
5624
5625AOT_theorem "pos-not-pna:1": ‹¬❙𝒜∃x (E!x & ¬❙𝒜E!x)›
5626proof(rule "raa-cor:2")
5627 AOT_assume ‹❙𝒜∃x (E!x & ¬❙𝒜E!x)›
5628 AOT_hence ‹∃x ❙𝒜(E!x & ¬❙𝒜E!x)›
5629 using "Act-Basic:10"[THEN "≡E"(1)] by blast
5630 then AOT_obtain a where ‹❙𝒜(E!a & ¬❙𝒜E!a)›
5631 using "∃E"[rotated] by blast
5632 AOT_hence 1: ‹❙𝒜E!a & ❙𝒜¬❙𝒜E!a›
5633 using "Act-Basic:2"[THEN "≡E"(1)] by blast
5634 AOT_hence ‹¬❙𝒜❙𝒜E!a›
5635 using "&E"(2) "logic-actual-nec:1"[axiom_inst, THEN "≡E"(1)] by blast
5636 AOT_hence ‹¬❙𝒜E!a›
5637 using "logic-actual-nec:4"[axiom_inst, THEN "≡E"(1)] RAA by blast
5638 AOT_thus ‹p & ¬p› for p using 1[THEN "&E"(1)] "&I" "raa-cor:1" by blast
5639qed
5640
5641AOT_theorem "pos-not-pna:2": ‹◇¬∃x(E!x & ¬❙𝒜E!x)›
5642proof (rule RAA(1))
5643 AOT_show ‹¬❙𝒜∃x (E!x & ¬❙𝒜E!x)›
5644 using "pos-not-pna:1" by blast
5645next
5646 AOT_assume ‹¬◇¬∃x (E!x & ¬❙𝒜E!x)›
5647 AOT_hence ‹□∃x (E!x & ¬❙𝒜E!x)›
5648 using "KBasic:12"[THEN "≡E"(2)] by blast
5649 AOT_thus ‹❙𝒜∃x (E!x & ¬❙𝒜E!x)›
5650 using "nec-imp-act"[THEN "→E"] by blast
5651qed
5652
5653AOT_theorem "pos-not-pna:3": ‹∃x (◇E!x & ¬❙𝒜E!x)›
5654proof -
5655 AOT_obtain a where ‹◇(E!a & ¬❙𝒜E!a)›
5656 using "qml:4"[axiom_inst] "BF◇"[THEN "→E"] "∃E"[rotated] by blast
5657 AOT_hence θ: ‹◇E!a› and ξ: ‹◇¬❙𝒜E!a›
5658 using "KBasic2:3"[THEN "→E"] "&E" by blast+
5659 AOT_have ‹¬□❙𝒜E!a›
5660 using ξ "KBasic:11"[THEN "≡E"(2)] by blast
5661 AOT_hence ‹¬❙𝒜E!a›
5662 using "Act-Basic:6"[THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
5663 THEN "≡E"(2)] by blast
5664 AOT_hence ‹◇E!a & ¬❙𝒜E!a› using θ "&I" by blast
5665 thus ?thesis using "∃I" by fast
5666qed
5667
5668AOT_define contingent_prop :: φ ("q⇩0")
5669 q⇩0_def: ‹(q⇩0) =⇩d⇩f (∃x (E!x & ¬❙𝒜E!x))›
5670
5671AOT_theorem q⇩0_prop: ‹◇q⇩0 & ◇¬q⇩0›
5672 apply (rule "=⇩d⇩fI"(2)[OF q⇩0_def])
5673 apply (fact "log-prop-prop:2")
5674 apply (rule "&I")
5675 apply (fact "qml:4"[axiom_inst])
5676 by (fact "pos-not-pna:2")
5677
5678AOT_theorem "basic-prop:1": ‹Contingent0((q⇩0))›
5679proof(rule "contingent-properties:4[zero]"[THEN "≡⇩d⇩fI"])
5680 AOT_have ‹¬Necessary0((q⇩0)) & ¬Impossible0((q⇩0))›
5681 proof (rule "&I";
5682 rule "=⇩d⇩fI"(2)[OF q⇩0_def];
5683 (rule "log-prop-prop:2" | rule "raa-cor:2"))
5684 AOT_assume ‹Necessary0(∃x (E!x & ¬❙𝒜E!x))›
5685 AOT_hence ‹□∃x (E!x & ¬❙𝒜E!x)›
5686 using "contingent-properties:1[zero]"[THEN "≡⇩d⇩fE"] by blast
5687 AOT_hence ‹❙𝒜∃x (E!x & ¬❙𝒜E!x)›
5688 using "Act-Basic:8"[THEN "→E"] "qml:2"[axiom_inst, THEN "→E"] by blast
5689 AOT_thus ‹❙𝒜∃x (E!x & ¬❙𝒜E!x) & ¬❙𝒜∃x (E!x & ¬❙𝒜E!x)›
5690 using "pos-not-pna:1" "&I" by blast
5691 next
5692 AOT_assume ‹Impossible0(∃x (E!x & ¬❙𝒜E!x))›
5693 AOT_hence ‹□¬(∃x (E!x & ¬❙𝒜E!x))›
5694 using "contingent-properties:2[zero]"[THEN "≡⇩d⇩fE"] by blast
5695 AOT_hence ‹¬◇(∃x (E!x & ¬❙𝒜E!x))›
5696 using "KBasic2:1"[THEN "≡E"(1)] by blast
5697 AOT_thus ‹◇(∃x (E!x & ¬❙𝒜E!x)) & ¬◇(∃x (E!x & ¬❙𝒜E!x))›
5698 using "qml:4"[axiom_inst] "&I" by blast
5699 qed
5700 AOT_thus ‹¬(Necessary0((q⇩0)) ∨ Impossible0((q⇩0)))›
5701 using "oth-class-taut:5:d" "≡E"(2) by blast
5702qed
5703
5704AOT_theorem "basic-prop:2": ‹∃p Contingent0((p))›
5705 using "∃I"(1)[rotated, OF "log-prop-prop:2"] "basic-prop:1" by blast
5706
5707AOT_theorem "basic-prop:3": ‹Contingent0(((q⇩0)⇧-))›
5708 apply (AOT_subst ‹((q⇩0)⇧-)› ‹¬q⇩0›)
5709 apply (insert "thm-relation-negation:3" "∀I"
5710 "∀E"(1)[rotated, OF "log-prop-prop:2"]; fast)
5711 apply (rule "contingent-properties:4[zero]"[THEN "≡⇩d⇩fI"])
5712 apply (rule "oth-class-taut:5:d"[THEN "≡E"(2)])
5713 apply (rule "&I")
5714 apply (rule "contingent-properties:1[zero]"[THEN "df-rules-formulas[3]",
5715 THEN "useful-tautologies:5"[THEN "→E"], THEN "→E"])
5716 apply (rule "conventions:5"[THEN "≡⇩d⇩fE"])
5717 apply (rule "=⇩d⇩fE"(2)[OF q⇩0_def])
5718 apply (rule "log-prop-prop:2")
5719 apply (rule q⇩0_prop[THEN "&E"(1)])
5720 apply (rule "contingent-properties:2[zero]"[THEN "df-rules-formulas[3]",
5721 THEN "useful-tautologies:5"[THEN "→E"], THEN "→E"])
5722 apply (rule "conventions:5"[THEN "≡⇩d⇩fE"])
5723 by (rule q⇩0_prop[THEN "&E"(2)])
5724
5725AOT_theorem "basic-prop:4":
5726 ‹∃p∃q (p ≠ q & Contingent0(p) & Contingent0(q))›
5727proof(rule "∃I")+
5728 AOT_have 0: ‹φ ≠ (φ)⇧-› for φ
5729 using "thm-relation-negation:6" "∀I"
5730 "∀E"(1)[rotated, OF "log-prop-prop:2"] by fast
5731 AOT_show ‹(q⇩0) ≠ (q⇩0)⇧- & Contingent0(q⇩0) & Contingent0(((q⇩0)⇧-))›
5732 using "basic-prop:1" "basic-prop:3" "&I" 0 by presburger
5733qed(auto simp: "log-prop-prop:2")
5734
5735AOT_theorem "proposition-facts:1":
5736 ‹NonContingent0(p) → ¬∃q (Contingent0(q) & q = p)›
5737proof(rule "→I"; rule "raa-cor:2")
5738 AOT_assume ‹NonContingent0(p)›
5739 AOT_hence 1: ‹Necessary0(p) ∨ Impossible0(p)›
5740 using "contingent-properties:3[zero]"[THEN "≡⇩d⇩fE"] by blast
5741 AOT_assume ‹∃q (Contingent0(q) & q = p)›
5742 then AOT_obtain q where ‹Contingent0(q) & q = p›
5743 using "∃E"[rotated] by blast
5744 AOT_hence ‹Contingent0(p)›
5745 using "rule=E" "&E" by fast
5746 AOT_thus ‹(Necessary0(p) ∨ Impossible0(p)) &
5747 ¬(Necessary0(p) ∨ Impossible0(p))›
5748 using "contingent-properties:4[zero]"[THEN "≡⇩d⇩fE"] 1 "&I" by blast
5749qed
5750
5751AOT_theorem "proposition-facts:2":
5752 ‹Contingent0(p) → ¬∃q (NonContingent0(q) & q = p)›
5753proof(rule "→I"; rule "raa-cor:2")
5754 AOT_assume ‹Contingent0(p)›
5755 AOT_hence 1: ‹¬(Necessary0(p) ∨ Impossible0(p))›
5756 using "contingent-properties:4[zero]"[THEN "≡⇩d⇩fE"] by blast
5757 AOT_assume ‹∃q (NonContingent0(q) & q = p)›
5758 then AOT_obtain q where ‹NonContingent0(q) & q = p›
5759 using "∃E"[rotated] by blast
5760 AOT_hence ‹NonContingent0(p)›
5761 using "rule=E" "&E" by fast
5762 AOT_thus ‹(Necessary0(p) ∨ Impossible0(p)) &
5763 ¬(Necessary0(p) ∨ Impossible0(p))›
5764 using "contingent-properties:3[zero]"[THEN "≡⇩d⇩fE"] 1 "&I" by blast
5765qed
5766
5767AOT_theorem "proposition-facts:3":
5768 ‹(p⇩0) ≠ (p⇩0)⇧- & (p⇩0) ≠ (q⇩0) & (p⇩0) ≠ (q⇩0)⇧- & (p⇩0)⇧- ≠ (q⇩0)⇧- & (q⇩0) ≠ (q⇩0)⇧-›
5769proof -
5770 {
5771 fix χ φ ψ
5772 AOT_assume ‹χ{φ}›
5773 moreover AOT_assume ‹¬χ{ψ}›
5774 ultimately AOT_have ‹¬(χ{φ} ≡ χ{ψ})›
5775 using RAA "≡E" by metis
5776 moreover {
5777 AOT_have ‹∀p∀q ((¬(χ{p} ≡ χ{q})) → p ≠ q)›
5778 by (rule "∀I"; rule "∀I"; rule "pos-not-equiv-ne:4[zero]")
5779 AOT_hence ‹((¬(χ{φ} ≡ χ{ψ})) → φ ≠ ψ)›
5780 using "∀E" "log-prop-prop:2" by blast
5781 }
5782 ultimately AOT_have ‹φ ≠ ψ›
5783 using "→E" by blast
5784 } note 0 = this
5785 AOT_have contingent_neg: ‹Contingent0(φ) ≡ Contingent0(((φ)⇧-))› for φ
5786 using "thm-cont-propos:3" "∀I"
5787 "∀E"(1)[rotated, OF "log-prop-prop:2"] by fast
5788 AOT_have not_noncontingent_if_contingent:
5789 ‹¬NonContingent0(φ)› if ‹Contingent0(φ)› for φ
5790 apply (rule "contingent-properties:3[zero]"[THEN "≡Df",
5791 THEN "oth-class-taut:4:b"[THEN "≡E"(1)], THEN "≡E"(2)])
5792 using that "contingent-properties:4[zero]"[THEN "≡⇩d⇩fE"] by blast
5793 show ?thesis
5794 apply (rule "&I")+
5795 using "thm-relation-negation:6" "∀I"
5796 "∀E"(1)[rotated, OF "log-prop-prop:2"]
5797 apply fast
5798 apply (rule 0)
5799 using "thm-noncont-propos:3" apply fast
5800 apply (rule not_noncontingent_if_contingent)
5801 apply (fact AOT)
5802 apply (rule 0)
5803 apply (rule "thm-noncont-propos:3")
5804 apply (rule not_noncontingent_if_contingent)
5805 apply (rule contingent_neg[THEN "≡E"(1)])
5806 apply (fact AOT)
5807 apply (rule 0)
5808 apply (rule "thm-noncont-propos:4")
5809 apply (rule not_noncontingent_if_contingent)
5810 apply (rule contingent_neg[THEN "≡E"(1)])
5811 apply (fact AOT)
5812 using "thm-relation-negation:6" "∀I"
5813 "∀E"(1)[rotated, OF "log-prop-prop:2"] by fast
5814qed
5815
5816AOT_define ContingentlyTrue :: ‹φ ⇒ φ› ("ContingentlyTrue'(_')")
5817 "cont-tf:1": ‹ContingentlyTrue(p) ≡⇩d⇩f p & ◇¬p›
5818
5819AOT_define ContingentlyFalse :: ‹φ ⇒ φ› ("ContingentlyFalse'(_')")
5820 "cont-tf:2": ‹ContingentlyFalse(p) ≡⇩d⇩f ¬p & ◇p›
5821
5822AOT_theorem "cont-true-cont:1":
5823 ‹ContingentlyTrue((p)) → Contingent0((p))›
5824proof(rule "→I")
5825 AOT_assume ‹ContingentlyTrue((p))›
5826 AOT_hence 1: ‹p› and 2: ‹◇¬p› using "cont-tf:1"[THEN "≡⇩d⇩fE"] "&E" by blast+
5827 AOT_have ‹¬Necessary0((p))›
5828 apply (rule "contingent-properties:1[zero]"[THEN "≡Df",
5829 THEN "oth-class-taut:4:b"[THEN "≡E"(1)], THEN "≡E"(2)])
5830 using 2 "KBasic:11"[THEN "≡E"(2)] by blast
5831 moreover AOT_have ‹¬Impossible0((p))›
5832 apply (rule "contingent-properties:2[zero]"[THEN "≡Df",
5833 THEN "oth-class-taut:4:b"[THEN "≡E"(1)], THEN "≡E"(2)])
5834 apply (rule "conventions:5"[THEN "≡⇩d⇩fE"])
5835 using "T◇"[THEN "→E", OF 1].
5836 ultimately AOT_have ‹¬(Necessary0((p)) ∨ Impossible0((p)))›
5837 using DeMorgan(2)[THEN "≡E"(2)] "&I" by blast
5838 AOT_thus ‹Contingent0((p))›
5839 using "contingent-properties:4[zero]"[THEN "≡⇩d⇩fI"] by blast
5840qed
5841
5842AOT_theorem "cont-true-cont:2":
5843 ‹ContingentlyFalse((p)) → Contingent0((p))›
5844proof(rule "→I")
5845 AOT_assume ‹ContingentlyFalse((p))›
5846 AOT_hence 1: ‹¬p› and 2: ‹◇p› using "cont-tf:2"[THEN "≡⇩d⇩fE"] "&E" by blast+
5847 AOT_have ‹¬Necessary0((p))›
5848 apply (rule "contingent-properties:1[zero]"[THEN "≡Df",
5849 THEN "oth-class-taut:4:b"[THEN "≡E"(1)], THEN "≡E"(2)])
5850 using "KBasic:11"[THEN "≡E"(2)] "T◇"[THEN "→E", OF 1] by blast
5851 moreover AOT_have ‹¬Impossible0((p))›
5852 apply (rule "contingent-properties:2[zero]"[THEN "≡Df",
5853 THEN "oth-class-taut:4:b"[THEN "≡E"(1)], THEN "≡E"(2)])
5854 apply (rule "conventions:5"[THEN "≡⇩d⇩fE"])
5855 using 2.
5856 ultimately AOT_have ‹¬(Necessary0((p)) ∨ Impossible0((p)))›
5857 using DeMorgan(2)[THEN "≡E"(2)] "&I" by blast
5858 AOT_thus ‹Contingent0((p))›
5859 using "contingent-properties:4[zero]"[THEN "≡⇩d⇩fI"] by blast
5860qed
5861
5862AOT_theorem "cont-true-cont:3":
5863 ‹ContingentlyTrue((p)) ≡ ContingentlyFalse(((p)⇧-))›
5864proof(rule "≡I"; rule "→I")
5865 AOT_assume ‹ContingentlyTrue((p))›
5866 AOT_hence 0: ‹p & ◇¬p› using "cont-tf:1"[THEN "≡⇩d⇩fE"] by blast
5867 AOT_have 1: ‹ContingentlyFalse(¬p)›
5868 apply (rule "cont-tf:2"[THEN "≡⇩d⇩fI"])
5869 apply (AOT_subst (reverse) ‹¬¬p› p)
5870 by (auto simp: "oth-class-taut:3:b" 0)
5871 AOT_show ‹ContingentlyFalse(((p)⇧-))›
5872 apply (AOT_subst ‹((p)⇧-)› ‹¬p›)
5873 by (auto simp: "thm-relation-negation:3" 1)
5874next
5875 AOT_assume 1: ‹ContingentlyFalse(((p)⇧-))›
5876 AOT_have ‹ContingentlyFalse(¬p)›
5877 by (AOT_subst (reverse) ‹¬p› ‹((p)⇧-)›)
5878 (auto simp: "thm-relation-negation:3" 1)
5879 AOT_hence ‹¬¬p & ◇¬p› using "cont-tf:2"[THEN "≡⇩d⇩fE"] by blast
5880 AOT_hence ‹p & ◇¬p›
5881 using "&I" "&E" "useful-tautologies:1"[THEN "→E"] by metis
5882 AOT_thus ‹ContingentlyTrue((p))›
5883 using "cont-tf:1"[THEN "≡⇩d⇩fI"] by blast
5884qed
5885
5886AOT_theorem "cont-true-cont:4":
5887 ‹ContingentlyFalse((p)) ≡ ContingentlyTrue(((p)⇧-))›
5888proof(rule "≡I"; rule "→I")
5889 AOT_assume ‹ContingentlyFalse(p)›
5890 AOT_hence 0: ‹¬p & ◇p›
5891 using "cont-tf:2"[THEN "≡⇩d⇩fE"] by blast
5892 AOT_have ‹¬p & ◇¬¬p›
5893 by (AOT_subst (reverse) ‹¬¬p› p)
5894 (auto simp: "oth-class-taut:3:b" 0)
5895 AOT_hence 1: ‹ContingentlyTrue(¬p)›
5896 by (rule "cont-tf:1"[THEN "≡⇩d⇩fI"])
5897 AOT_show ‹ContingentlyTrue(((p)⇧-))›
5898 by (AOT_subst ‹((p)⇧-)› ‹¬p›)
5899 (auto simp: "thm-relation-negation:3" 1)
5900next
5901 AOT_assume 1: ‹ContingentlyTrue(((p)⇧-))›
5902 AOT_have ‹ContingentlyTrue(¬p)›
5903 by (AOT_subst (reverse) ‹¬p› ‹((p)⇧-)›)
5904 (auto simp add: "thm-relation-negation:3" 1)
5905 AOT_hence 2: ‹¬p & ◇¬¬p› using "cont-tf:1"[THEN "≡⇩d⇩fE"] by blast
5906 AOT_have ‹◇p›
5907 by (AOT_subst p ‹¬¬p›)
5908 (auto simp add: "oth-class-taut:3:b" 2[THEN "&E"(2)])
5909 AOT_hence ‹¬p & ◇p› using 2[THEN "&E"(1)] "&I" by blast
5910 AOT_thus ‹ContingentlyFalse(p)›
5911 by (rule "cont-tf:2"[THEN "≡⇩d⇩fI"])
5912qed
5913
5914AOT_theorem "cont-true-cont:5":
5915 ‹(ContingentlyTrue((p)) & Necessary0((q))) → p ≠ q›
5916proof (rule "→I"; frule "&E"(1); drule "&E"(2); rule "raa-cor:1")
5917 AOT_assume ‹ContingentlyTrue((p))›
5918 AOT_hence ‹◇¬p›
5919 using "cont-tf:1"[THEN "≡⇩d⇩fE"] "&E" by blast
5920 AOT_hence 0: ‹¬□p› using "KBasic:11"[THEN "≡E"(2)] by blast
5921 AOT_assume ‹Necessary0((q))›
5922 moreover AOT_assume ‹¬(p ≠ q)›
5923 AOT_hence ‹p = q›
5924 using "=-infix"[THEN "≡Df",
5925 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
5926 THEN "≡E"(1)]
5927 "useful-tautologies:1"[THEN "→E"] by blast
5928 ultimately AOT_have ‹Necessary0((p))› using "rule=E" id_sym by blast
5929 AOT_hence ‹□p›
5930 using "contingent-properties:1[zero]"[THEN "≡⇩d⇩fE"] by blast
5931 AOT_thus ‹□p & ¬□p› using 0 "&I" by blast
5932qed
5933
5934AOT_theorem "cont-true-cont:6":
5935 ‹(ContingentlyFalse((p)) & Impossible0((q))) → p ≠ q›
5936proof (rule "→I"; frule "&E"(1); drule "&E"(2); rule "raa-cor:1")
5937 AOT_assume ‹ContingentlyFalse((p))›
5938 AOT_hence ‹◇p›
5939 using "cont-tf:2"[THEN "≡⇩d⇩fE"] "&E" by blast
5940 AOT_hence 1: ‹¬□¬p›
5941 using "conventions:5"[THEN "≡⇩d⇩fE"] by blast
5942 AOT_assume ‹Impossible0((q))›
5943 moreover AOT_assume ‹¬(p ≠ q)›
5944 AOT_hence ‹p = q›
5945 using "=-infix"[THEN "≡Df",
5946 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
5947 THEN "≡E"(1)]
5948 "useful-tautologies:1"[THEN "→E"] by blast
5949 ultimately AOT_have ‹Impossible0((p))› using "rule=E" id_sym by blast
5950 AOT_hence ‹□¬p›
5951 using "contingent-properties:2[zero]"[THEN "≡⇩d⇩fE"] by blast
5952 AOT_thus ‹□¬p & ¬□¬p› using 1 "&I" by blast
5953qed
5954
5955AOT_act_theorem "q0cf:1": ‹ContingentlyFalse(q⇩0)›
5956 apply (rule "cont-tf:2"[THEN "≡⇩d⇩fI"])
5957 apply (rule "=⇩d⇩fI"(2)[OF q⇩0_def])
5958 apply (fact "log-prop-prop:2")
5959 apply (rule "&I")
5960 apply (fact "no-cnac")
5961 by (fact "qml:4"[axiom_inst])
5962
5963AOT_act_theorem "q0cf:2": ‹ContingentlyTrue(((q⇩0)⇧-))›
5964 apply (rule "cont-tf:1"[THEN "≡⇩d⇩fI"])
5965 apply (rule "=⇩d⇩fI"(2)[OF q⇩0_def])
5966 apply (fact "log-prop-prop:2")
5967 apply (rule "&I")
5968 apply (rule "thm-relation-negation:3"
5969 [unvarify p, OF "log-prop-prop:2", THEN "≡E"(2)])
5970 apply (fact "no-cnac")
5971 apply (rule "rule=E"[rotated,
5972 OF "thm-relation-negation:7"
5973 [unvarify p, OF "log-prop-prop:2", THEN id_sym]])
5974 apply (AOT_subst (reverse) ‹¬¬(∃x (E!x & ¬❙𝒜E!x))› ‹∃x (E!x & ¬❙𝒜E!x)›)
5975 by (auto simp: "oth-class-taut:3:b" "qml:4"[axiom_inst])
5976
5977AOT_theorem "cont-tf-thm:1": ‹∃p ContingentlyTrue((p))›
5978proof(rule "∨E"(1)[OF "exc-mid"]; rule "→I"; rule "∃I")
5979 AOT_assume ‹q⇩0›
5980 AOT_hence ‹q⇩0 & ◇¬q⇩0› using q⇩0_prop[THEN "&E"(2)] "&I" by blast
5981 AOT_thus ‹ContingentlyTrue(q⇩0)›
5982 by (rule "cont-tf:1"[THEN "≡⇩d⇩fI"])
5983next
5984 AOT_assume ‹¬q⇩0›
5985 AOT_hence ‹¬q⇩0 & ◇q⇩0› using q⇩0_prop[THEN "&E"(1)] "&I" by blast
5986 AOT_hence ‹ContingentlyFalse(q⇩0)›
5987 by (rule "cont-tf:2"[THEN "≡⇩d⇩fI"])
5988 AOT_thus ‹ContingentlyTrue(((q⇩0)⇧-))›
5989 by (rule "cont-true-cont:4"[unvarify p,
5990 OF "log-prop-prop:2", THEN "≡E"(1)])
5991qed(auto simp: "log-prop-prop:2")
5992
5993
5994AOT_theorem "cont-tf-thm:2": ‹∃p ContingentlyFalse((p))›
5995proof(rule "∨E"(1)[OF "exc-mid"]; rule "→I"; rule "∃I")
5996 AOT_assume ‹q⇩0›
5997 AOT_hence ‹q⇩0 & ◇¬q⇩0› using q⇩0_prop[THEN "&E"(2)] "&I" by blast
5998 AOT_hence ‹ContingentlyTrue(q⇩0)›
5999 by (rule "cont-tf:1"[THEN "≡⇩d⇩fI"])
6000 AOT_thus ‹ContingentlyFalse(((q⇩0)⇧-))›
6001 by (rule "cont-true-cont:3"[unvarify p,
6002 OF "log-prop-prop:2", THEN "≡E"(1)])
6003next
6004 AOT_assume ‹¬q⇩0›
6005 AOT_hence ‹¬q⇩0 & ◇q⇩0› using q⇩0_prop[THEN "&E"(1)] "&I" by blast
6006 AOT_thus ‹ContingentlyFalse(q⇩0)›
6007 by (rule "cont-tf:2"[THEN "≡⇩d⇩fI"])
6008qed(auto simp: "log-prop-prop:2")
6009
6010AOT_theorem "property-facts1:1": ‹∃F∃x ([F]x & ◇¬[F]x)›
6011proof -
6012 fix x
6013 AOT_obtain p⇩1 where ‹ContingentlyTrue((p⇩1))›
6014 using "cont-tf-thm:1" "∃E"[rotated] by blast
6015 AOT_hence 1: ‹p⇩1 & ◇¬p⇩1› using "cont-tf:1"[THEN "≡⇩d⇩fE"] by blast
6016 AOT_modally_strict {
6017 AOT_have ‹for arbitrary p: ❙⊢⇩□ ([λz p]x ≡ p)›
6018 by (rule "beta-C-cor:3"[THEN "∀E"(2)]) cqt_2_lambda_inst_prover
6019 AOT_hence ‹for arbitrary p: ❙⊢⇩□ □ ([λz p]x ≡ p)›
6020 by (rule RN)
6021 AOT_hence ‹∀p □([λz p]x ≡ p)› using GEN by fast
6022 AOT_hence ‹□([λz p⇩1]x ≡ p⇩1)› using "∀E" by fast
6023 } note 2 = this
6024 AOT_hence ‹□([λz p⇩1]x ≡ p⇩1)› using "∀E" by blast
6025 AOT_hence ‹[λz p⇩1]x›
6026 using 1[THEN "&E"(1)] "qml:2"[axiom_inst, THEN "→E"] "≡E"(2) by blast
6027 moreover AOT_have ‹◇¬[λz p⇩1]x›
6028 using 2[THEN "qml:2"[axiom_inst, THEN "→E"]]
6029 apply (AOT_subst ‹[λz p⇩1]x› ‹p⇩1›)
6030 using 1[THEN "&E"(2)] by blast
6031 ultimately AOT_have ‹[λz p⇩1]x & ◇¬[λz p⇩1]x› using "&I" by blast
6032 AOT_hence ‹∃x ([λz p⇩1]x & ◇¬[λz p⇩1]x)› using "∃I"(2) by fast
6033 moreover AOT_have ‹[λz p⇩1]↓› by "cqt:2[lambda]"
6034 ultimately AOT_show ‹∃F∃x ([F]x & ◇¬[F]x)› by (rule "∃I"(1))
6035qed
6036
6037AOT_theorem "property-facts1:2": ‹∃F∃x (¬[F]x & ◇[F]x)›
6038proof -
6039 fix x
6040 AOT_obtain p⇩1 where ‹ContingentlyFalse((p⇩1))›
6041 using "cont-tf-thm:2" "∃E"[rotated] by blast
6042 AOT_hence 1: ‹¬p⇩1 & ◇p⇩1› using "cont-tf:2"[THEN "≡⇩d⇩fE"] by blast
6043 AOT_modally_strict {
6044 AOT_have ‹for arbitrary p: ❙⊢⇩□ ([λz p]x ≡ p)›
6045 by (rule "beta-C-cor:3"[THEN "∀E"(2)]) cqt_2_lambda_inst_prover
6046 AOT_hence ‹for arbitrary p: ❙⊢⇩□ (¬[λz p]x ≡ ¬p)›
6047 using "oth-class-taut:4:b" "≡E" by blast
6048 AOT_hence ‹for arbitrary p: ❙⊢⇩□ □(¬[λz p]x ≡ ¬p)›
6049 by (rule RN)
6050 AOT_hence ‹∀p □(¬[λz p]x ≡ ¬p)› using GEN by fast
6051 AOT_hence ‹□(¬[λz p⇩1]x ≡ ¬p⇩1)› using "∀E" by fast
6052 } note 2 = this
6053 AOT_hence ‹□(¬[λz p⇩1]x ≡ ¬p⇩1)› using "∀E" by blast
6054 AOT_hence 3: ‹¬[λz p⇩1]x›
6055 using 1[THEN "&E"(1)] "qml:2"[axiom_inst, THEN "→E"] "≡E"(2) by blast
6056 AOT_modally_strict {
6057 AOT_have ‹for arbitrary p: ❙⊢⇩□ ([λz p]x ≡ p)›
6058 by (rule "beta-C-cor:3"[THEN "∀E"(2)]) cqt_2_lambda_inst_prover
6059 AOT_hence ‹for arbitrary p: ❙⊢⇩□ □([λz p]x ≡ p)›
6060 by (rule RN)
6061 AOT_hence ‹∀p □([λz p]x ≡ p)› using GEN by fast
6062 AOT_hence ‹□([λz p⇩1]x ≡ p⇩1)› using "∀E" by fast
6063 } note 4 = this
6064 AOT_have ‹◇[λz p⇩1]x›
6065 using 4[THEN "qml:2"[axiom_inst, THEN "→E"]]
6066 apply (AOT_subst ‹[λz p⇩1]x› ‹p⇩1›)
6067 using 1[THEN "&E"(2)] by blast
6068 AOT_hence ‹¬[λz p⇩1]x & ◇[λz p⇩1]x› using 3 "&I" by blast
6069 AOT_hence ‹∃x (¬[λz p⇩1]x & ◇[λz p⇩1]x)› using "∃I"(2) by fast
6070 moreover AOT_have ‹[λz p⇩1]↓› by "cqt:2[lambda]"
6071 ultimately AOT_show ‹∃F∃x (¬[F]x & ◇[F]x)› by (rule "∃I"(1))
6072qed
6073
6074context
6075begin
6076
6077private AOT_lemma eqnotnec_123_Aux_ζ: ‹[L]x ≡ (E!x → E!x)›
6078 apply (rule "=⇩d⇩fI"(2)[OF L_def])
6079 apply "cqt:2[lambda]"
6080 apply (rule "beta-C-meta"[THEN "→E"])
6081 by "cqt:2[lambda]"
6082
6083private AOT_lemma eqnotnec_123_Aux_ω: ‹[λz φ]x ≡ φ›
6084 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6085
6086private AOT_lemma eqnotnec_123_Aux_θ: ‹φ ≡ ∀x([L]x ≡ [λz φ]x)›
6087proof(rule "≡I"; rule "→I"; (rule "∀I")?)
6088 fix x
6089 AOT_assume 1: ‹φ›
6090 AOT_have ‹[L]x ≡ (E!x → E!x)› using eqnotnec_123_Aux_ζ.
6091 also AOT_have ‹… ≡ φ›
6092 using "if-p-then-p" 1 "≡I" "→I" by simp
6093 also AOT_have ‹… ≡ [λz φ]x›
6094 using "Commutativity of ≡"[THEN "≡E"(1)] eqnotnec_123_Aux_ω by blast
6095 finally AOT_show ‹[L]x ≡ [λz φ]x›.
6096next
6097 fix x
6098 AOT_assume ‹∀x([L]x ≡ [λz φ]x)›
6099 AOT_hence ‹[L]x ≡ [λz φ]x› using "∀E" by blast
6100 also AOT_have ‹… ≡ φ› using eqnotnec_123_Aux_ω.
6101 finally AOT_have ‹φ ≡ [L]x›
6102 using "Commutativity of ≡"[THEN "≡E"(1)] by blast
6103 also AOT_have ‹… ≡ E!x → E!x› using eqnotnec_123_Aux_ζ.
6104 finally AOT_show ‹φ› using "≡E" "if-p-then-p" by fast
6105qed
6106private lemmas eqnotnec_123_Aux_ξ =
6107 eqnotnec_123_Aux_θ[THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6108 THEN "conventions:3"[THEN "≡Df", THEN "≡E"(1), THEN "&E"(1)],
6109 THEN "RM◇"]
6110private lemmas eqnotnec_123_Aux_ξ' =
6111 eqnotnec_123_Aux_θ[
6112 THEN "conventions:3"[THEN "≡Df", THEN "≡E"(1), THEN "&E"(1)],
6113 THEN "RM◇"]
6114
6115AOT_theorem "eqnotnec:1": ‹∃F∃G(∀x([F]x ≡ [G]x) & ◇¬∀x([F]x ≡ [G]x))›
6116proof-
6117 AOT_obtain p⇩1 where ‹ContingentlyTrue(p⇩1)›
6118 using "cont-tf-thm:1" "∃E"[rotated] by blast
6119 AOT_hence ‹p⇩1 & ◇¬p⇩1› using "cont-tf:1"[THEN "≡⇩d⇩fE"] by blast
6120 AOT_hence ‹∀x ([L]x ≡ [λz p⇩1]x) & ◇¬∀x([L]x ≡ [λz p⇩1]x)›
6121 apply - apply (rule "&I")
6122 using "&E" eqnotnec_123_Aux_θ[THEN "≡E"(1)]
6123 eqnotnec_123_Aux_ξ "→E" by fast+
6124 AOT_hence ‹∃G (∀x([L]x ≡ [G]x) & ◇¬∀x([L]x ≡ [G]x))›
6125 by (rule "∃I") "cqt:2[lambda]"
6126 AOT_thus ‹∃F∃G (∀x([F]x ≡ [G]x) & ◇¬∀x([F]x ≡ [G]x))›
6127 apply (rule "∃I")
6128 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
6129qed
6130
6131AOT_theorem "eqnotnec:2": ‹∃F∃G(¬∀x([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6132proof-
6133 AOT_obtain p⇩1 where ‹ContingentlyFalse(p⇩1)›
6134 using "cont-tf-thm:2" "∃E"[rotated] by blast
6135 AOT_hence ‹¬p⇩1 & ◇p⇩1› using "cont-tf:2"[THEN "≡⇩d⇩fE"] by blast
6136 AOT_hence ‹¬∀x ([L]x ≡ [λz p⇩1]x) & ◇∀x([L]x ≡ [λz p⇩1]x)›
6137 apply - apply (rule "&I")
6138 using eqnotnec_123_Aux_θ[THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6139 THEN "≡E"(1)]
6140 "&E" eqnotnec_123_Aux_ξ' "→E" by fast+
6141 AOT_hence ‹∃G (¬∀x([L]x ≡ [G]x) & ◇∀x([L]x ≡ [G]x))›
6142 by (rule "∃I") "cqt:2[lambda]"
6143 AOT_thus ‹∃F∃G (¬∀x([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6144 apply (rule "∃I")
6145 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
6146qed
6147
6148AOT_theorem "eqnotnec:3": ‹∃F∃G(❙𝒜¬∀x([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6149proof-
6150 AOT_have ‹¬❙𝒜q⇩0›
6151 apply (rule "=⇩d⇩fI"(2)[OF q⇩0_def])
6152 apply (fact "log-prop-prop:2")
6153 by (fact AOT)
6154 AOT_hence ‹❙𝒜¬q⇩0›
6155 using "logic-actual-nec:1"[axiom_inst, THEN "≡E"(2)] by blast
6156 AOT_hence ‹❙𝒜¬∀x ([L]x ≡ [λz q⇩0]x)›
6157 using eqnotnec_123_Aux_θ[THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6158 THEN "conventions:3"[THEN "≡Df", THEN "≡E"(1), THEN "&E"(1)],
6159 THEN "RA[2]", THEN "act-cond"[THEN "→E"], THEN "→E"] by blast
6160 moreover AOT_have ‹◇∀x ([L]x ≡ [λz q⇩0]x)›
6161 using eqnotnec_123_Aux_ξ'[THEN "→E"] q⇩0_prop[THEN "&E"(1)] by blast
6162 ultimately AOT_have ‹❙𝒜¬∀x ([L]x ≡ [λz q⇩0]x) & ◇∀x ([L]x ≡ [λz q⇩0]x)›
6163 using "&I" by blast
6164 AOT_hence ‹∃G (❙𝒜¬∀x([L]x ≡ [G]x) & ◇∀x([L]x ≡ [G]x))›
6165 by (rule "∃I") "cqt:2[lambda]"
6166 AOT_thus ‹∃F∃G (❙𝒜¬∀x([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6167 apply (rule "∃I")
6168 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
6169qed
6170
6171end
6172
6173AOT_theorem "eqnotnec:4": ‹∀F∃G(∀x([F]x ≡ [G]x) & ◇¬∀x([F]x ≡ [G]x))›
6174proof(rule GEN)
6175 fix F
6176 AOT_have Aux_A: ‹❙⊢⇩□ ψ → ∀x([F]x ≡ [λz [F]z & ψ]x)› for ψ
6177 proof(rule "→I"; rule GEN)
6178 AOT_modally_strict {
6179 fix x
6180 AOT_assume 0: ‹ψ›
6181 AOT_have ‹[λz [F]z & ψ]x ≡ [F]x & ψ›
6182 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6183 also AOT_have ‹... ≡ [F]x›
6184 apply (rule "≡I"; rule "→I")
6185 using "∨E"(3)[rotated, OF "useful-tautologies:2"[THEN "→E"], OF 0] "&E"
6186 apply blast
6187 using 0 "&I" by blast
6188 finally AOT_show ‹[F]x ≡ [λz [F]z & ψ]x›
6189 using "Commutativity of ≡"[THEN "≡E"(1)] by blast
6190 }
6191 qed
6192
6193 AOT_have Aux_B: ‹❙⊢⇩□ ψ → ∀x([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)› for ψ
6194 proof (rule "→I"; rule GEN)
6195 AOT_modally_strict {
6196 fix x
6197 AOT_assume 0: ‹ψ›
6198 AOT_have ‹[λz ([F]z & ψ) ∨ ¬ψ]x ≡ (([F]x & ψ) ∨ ¬ψ)›
6199 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6200 also AOT_have ‹... ≡ [F]x›
6201 apply (rule "≡I"; rule "→I")
6202 using "∨E"(3)[rotated, OF "useful-tautologies:2"[THEN "→E"], OF 0]
6203 "&E"
6204 apply blast
6205 apply (rule "∨I"(1)) using 0 "&I" by blast
6206 finally AOT_show ‹[F]x ≡ [λz ([F]z & ψ) ∨ ¬ψ]x›
6207 using "Commutativity of ≡"[THEN "≡E"(1)] by blast
6208 }
6209 qed
6210
6211 AOT_have Aux_C:
6212 ‹❙⊢⇩□ ◇¬ψ → ◇¬∀z([λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z)› for ψ
6213 proof(rule "RM◇"; rule "→I"; rule "raa-cor:2")
6214 AOT_modally_strict {
6215 AOT_assume 0: ‹¬ψ›
6216 AOT_assume ‹∀z ([λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z)›
6217 AOT_hence ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6218 using "∀E" by blast
6219 moreover AOT_have ‹[λz [F]z & ψ]z ≡ [F]z & ψ› for z
6220 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6221 moreover AOT_have ‹[λz ([F]z & ψ) ∨ ¬ψ]z ≡ (([F]z & ψ) ∨ ¬ψ)› for z
6222 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6223 ultimately AOT_have ‹[F]z & ψ ≡ (([F]z & ψ) ∨ ¬ψ)› for z
6224 using "Commutativity of ≡"[THEN "≡E"(1)] "≡E"(5) by meson
6225 moreover AOT_have ‹(([F]z & ψ) ∨ ¬ψ)› for z using 0 "∨I" by blast
6226 ultimately AOT_have ‹ψ› using "≡E" "&E" by metis
6227 AOT_thus ‹ψ & ¬ψ› using 0 "&I" by blast
6228 }
6229 qed
6230
6231 AOT_have Aux_D: ‹□∀z ([F]z ≡ [λz [F]z & ψ]z) →
6232 (◇¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6233 ◇¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x))› for ψ
6234 proof (rule "→I")
6235 AOT_assume A: ‹□∀z([F]z ≡ [λz [F]z & ψ]z)›
6236 AOT_show ‹◇¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6237 ◇¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6238 proof(rule "≡I"; rule "KBasic:13"[THEN "→E"];
6239 rule "RN[prem]"[where Γ="{«∀z([F]z ≡ [λz [F]z & ψ]z)»}", simplified];
6240 (rule "useful-tautologies:5"[THEN "→E"]; rule "→I")?)
6241 AOT_modally_strict {
6242 AOT_assume ‹∀z ([F]z ≡ [λz [F]z & ψ]z)›
6243 AOT_hence 1: ‹[F]z ≡ [λz [F]z & ψ]z› for z
6244 using "∀E" by blast
6245 AOT_assume ‹∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6246 AOT_hence 2: ‹[F]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6247 using "∀E" by blast
6248 AOT_have ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6249 using "≡E" 1 2 by meson
6250 AOT_thus ‹∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6251 by (rule GEN)
6252 }
6253 next
6254 AOT_modally_strict {
6255 AOT_assume ‹∀z ([F]z ≡ [λz [F]z & ψ]z)›
6256 AOT_hence 1: ‹[F]z ≡ [λz [F]z & ψ]z› for z
6257 using "∀E" by blast
6258 AOT_assume ‹∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6259 AOT_hence 2: ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6260 using "∀E" by blast
6261 AOT_have ‹[F]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6262 using 1 2 "≡E" by meson
6263 AOT_thus ‹ ∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6264 by (rule GEN)
6265 }
6266 qed(auto simp: A)
6267 qed
6268
6269 AOT_obtain p⇩1 where p⇩1_prop: ‹p⇩1 & ◇¬p⇩1›
6270 using "cont-tf-thm:1" "∃E"[rotated]
6271 "cont-tf:1"[THEN "≡⇩d⇩fE"] by blast
6272 {
6273 AOT_assume 1: ‹□∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6274 AOT_have 2: ‹∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6275 using Aux_B[THEN "→E", OF p⇩1_prop[THEN "&E"(1)]].
6276 AOT_have ‹◇¬∀x([λz [F]z & p⇩1]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6277 using Aux_C[THEN "→E", OF p⇩1_prop[THEN "&E"(2)]].
6278 AOT_hence 3: ‹◇¬∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6279 using Aux_D[THEN "→E", OF 1, THEN "≡E"(1)] by blast
6280 AOT_hence ‹∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x) &
6281 ◇¬∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6282 using 2 "&I" by blast
6283 AOT_hence ‹∃G (∀x ([F]x ≡ [G]x) & ◇¬∀x([F]x ≡ [G]x))›
6284 by (rule "∃I"(1)) "cqt:2[lambda]"
6285 }
6286 moreover {
6287 AOT_assume 2: ‹¬□∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6288 AOT_hence ‹◇¬∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6289 using "KBasic:11"[THEN "≡E"(1)] by blast
6290 AOT_hence ‹∀x ([F]x ≡ [λz [F]z & p⇩1]x) & ◇¬∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6291 using Aux_A[THEN "→E", OF p⇩1_prop[THEN "&E"(1)]] "&I" by blast
6292 AOT_hence ‹∃G (∀x ([F]x ≡ [G]x) & ◇¬∀x([F]x ≡ [G]x))›
6293 by (rule "∃I"(1)) "cqt:2[lambda]"
6294 }
6295 ultimately AOT_show ‹∃G (∀x ([F]x ≡ [G]x) & ◇¬∀x([F]x ≡ [G]x))›
6296 using "∨E"(1)[OF "exc-mid"] "→I" by blast
6297qed
6298
6299AOT_theorem "eqnotnec:5": ‹∀F∃G(¬∀x([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6300proof(rule GEN)
6301 fix F
6302 AOT_have Aux_A: ‹❙⊢⇩□ ◇ψ → ◇∀x([F]x ≡ [λz [F]z & ψ]x)› for ψ
6303 proof(rule "RM◇"; rule "→I"; rule GEN)
6304 AOT_modally_strict {
6305 fix x
6306 AOT_assume 0: ‹ψ›
6307 AOT_have ‹[λz [F]z & ψ]x ≡ [F]x & ψ›
6308 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6309 also AOT_have ‹... ≡ [F]x›
6310 apply (rule "≡I"; rule "→I")
6311 using "∨E"(3)[rotated, OF "useful-tautologies:2"[THEN "→E"], OF 0] "&E"
6312 apply blast
6313 using 0 "&I" by blast
6314 finally AOT_show ‹[F]x ≡ [λz [F]z & ψ]x›
6315 using "Commutativity of ≡"[THEN "≡E"(1)] by blast
6316 }
6317 qed
6318
6319 AOT_have Aux_B: ‹❙⊢⇩□ ◇ψ → ◇∀x([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)› for ψ
6320 proof (rule "RM◇"; rule "→I"; rule GEN)
6321 AOT_modally_strict {
6322 fix x
6323 AOT_assume 0: ‹ψ›
6324 AOT_have ‹[λz ([F]z & ψ) ∨ ¬ψ]x ≡ (([F]x & ψ) ∨ ¬ψ)›
6325 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6326 also AOT_have ‹... ≡ [F]x›
6327 apply (rule "≡I"; rule "→I")
6328 using "∨E"(3)[rotated, OF "useful-tautologies:2"[THEN "→E"], OF 0] "&E"
6329 apply blast
6330 apply (rule "∨I"(1)) using 0 "&I" by blast
6331 finally AOT_show ‹[F]x ≡ [λz ([F]z & ψ) ∨ ¬ψ]x›
6332 using "Commutativity of ≡"[THEN "≡E"(1)] by blast
6333 }
6334 qed
6335
6336 AOT_have Aux_C: ‹❙⊢⇩□ ¬ψ → ¬∀z([λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z)› for ψ
6337 proof(rule "→I"; rule "raa-cor:2")
6338 AOT_modally_strict {
6339 AOT_assume 0: ‹¬ψ›
6340 AOT_assume ‹∀z ([λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z)›
6341 AOT_hence ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6342 using "∀E" by blast
6343 moreover AOT_have ‹[λz [F]z & ψ]z ≡ [F]z & ψ› for z
6344 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6345 moreover AOT_have ‹[λz ([F]z & ψ) ∨ ¬ψ]z ≡ (([F]z & ψ) ∨ ¬ψ)› for z
6346 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6347 ultimately AOT_have ‹[F]z & ψ ≡ (([F]z & ψ) ∨ ¬ψ)› for z
6348 using "Commutativity of ≡"[THEN "≡E"(1)] "≡E"(5) by meson
6349 moreover AOT_have ‹(([F]z & ψ) ∨ ¬ψ)› for z
6350 using 0 "∨I" by blast
6351 ultimately AOT_have ‹ψ› using "≡E" "&E" by metis
6352 AOT_thus ‹ψ & ¬ψ› using 0 "&I" by blast
6353 }
6354 qed
6355
6356 AOT_have Aux_D: ‹∀z ([F]z ≡ [λz [F]z & ψ]z) →
6357 (¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6358 ¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x))› for ψ
6359 proof (rule "→I"; rule "≡I";
6360 (rule "useful-tautologies:5"[THEN "→E"]; rule "→I")?)
6361 AOT_modally_strict {
6362 AOT_assume ‹∀z ([F]z ≡ [λz [F]z & ψ]z)›
6363 AOT_hence 1: ‹[F]z ≡ [λz [F]z & ψ]z› for z
6364 using "∀E" by blast
6365 AOT_assume ‹∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6366 AOT_hence 2: ‹[F]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6367 using "∀E" by blast
6368 AOT_have ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6369 using "≡E" 1 2 by meson
6370 AOT_thus ‹∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6371 by (rule GEN)
6372 }
6373 next
6374 AOT_modally_strict {
6375 AOT_assume ‹∀z ([F]z ≡ [λz [F]z & ψ]z)›
6376 AOT_hence 1: ‹[F]z ≡ [λz [F]z & ψ]z› for z
6377 using "∀E" by blast
6378 AOT_assume ‹∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6379 AOT_hence 2: ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6380 using "∀E" by blast
6381 AOT_have ‹[F]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6382 using 1 2 "≡E" by meson
6383 AOT_thus ‹ ∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6384 by (rule GEN)
6385 }
6386 qed
6387
6388 AOT_obtain p⇩1 where p⇩1_prop: ‹¬p⇩1 & ◇p⇩1›
6389 using "cont-tf-thm:2" "∃E"[rotated] "cont-tf:2"[THEN "≡⇩d⇩fE"] by blast
6390 {
6391 AOT_assume 1: ‹∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6392 AOT_have 2: ‹◇∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6393 using Aux_B[THEN "→E", OF p⇩1_prop[THEN "&E"(2)]].
6394 AOT_have ‹¬∀x([λz [F]z & p⇩1]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6395 using Aux_C[THEN "→E", OF p⇩1_prop[THEN "&E"(1)]].
6396 AOT_hence 3: ‹¬∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6397 using Aux_D[THEN "→E", OF 1, THEN "≡E"(1)] by blast
6398 AOT_hence ‹¬∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x) &
6399 ◇∀x([F]x ≡ [λz [F]z & p⇩1 ∨ ¬p⇩1]x)›
6400 using 2 "&I" by blast
6401 AOT_hence ‹∃G (¬∀x ([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6402 by (rule "∃I"(1)) "cqt:2[lambda]"
6403 }
6404 moreover {
6405 AOT_assume 2: ‹¬∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6406 AOT_hence ‹¬∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6407 using "KBasic:11"[THEN "≡E"(1)] by blast
6408 AOT_hence ‹¬∀x ([F]x ≡ [λz [F]z & p⇩1]x) &
6409 ◇∀x([F]x ≡ [λz [F]z & p⇩1]x)›
6410 using Aux_A[THEN "→E", OF p⇩1_prop[THEN "&E"(2)]] "&I" by blast
6411 AOT_hence ‹∃G (¬∀x ([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6412 by (rule "∃I"(1)) "cqt:2[lambda]"
6413 }
6414 ultimately AOT_show ‹∃G (¬∀x ([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6415 using "∨E"(1)[OF "exc-mid"] "→I" by blast
6416qed
6417
6418AOT_theorem "eqnotnec:6": ‹∀F∃G(❙𝒜¬∀x([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6419proof(rule GEN)
6420 fix F
6421 AOT_have Aux_A: ‹❙⊢⇩□ ◇ψ → ◇∀x([F]x ≡ [λz [F]z & ψ]x)› for ψ
6422 proof(rule "RM◇"; rule "→I"; rule GEN)
6423 AOT_modally_strict {
6424 fix x
6425 AOT_assume 0: ‹ψ›
6426 AOT_have ‹[λz [F]z & ψ]x ≡ [F]x & ψ›
6427 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6428 also AOT_have ‹... ≡ [F]x›
6429 apply (rule "≡I"; rule "→I")
6430 using "∨E"(3)[rotated, OF "useful-tautologies:2"[THEN "→E"], OF 0]
6431 "&E"
6432 apply blast
6433 using 0 "&I" by blast
6434 finally AOT_show ‹[F]x ≡ [λz [F]z & ψ]x›
6435 using "Commutativity of ≡"[THEN "≡E"(1)] by blast
6436 }
6437 qed
6438
6439 AOT_have Aux_B: ‹❙⊢⇩□ ◇ψ → ◇∀x([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)› for ψ
6440 proof (rule "RM◇"; rule "→I"; rule GEN)
6441 AOT_modally_strict {
6442 fix x
6443 AOT_assume 0: ‹ψ›
6444 AOT_have ‹[λz ([F]z & ψ) ∨ ¬ψ]x ≡ (([F]x & ψ) ∨ ¬ψ)›
6445 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6446 also AOT_have ‹... ≡ [F]x›
6447 apply (rule "≡I"; rule "→I")
6448 using "∨E"(3)[rotated, OF "useful-tautologies:2"[THEN "→E"], OF 0] "&E"
6449 apply blast
6450 apply (rule "∨I"(1)) using 0 "&I" by blast
6451 finally AOT_show ‹[F]x ≡ [λz ([F]z & ψ) ∨ ¬ψ]x›
6452 using "Commutativity of ≡"[THEN "≡E"(1)] by blast
6453 }
6454 qed
6455
6456 AOT_have Aux_C:
6457 ‹❙⊢⇩□ ❙𝒜¬ψ → ❙𝒜¬∀z([λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z)› for ψ
6458 proof(rule "act-cond"[THEN "→E"]; rule "RA[2]"; rule "→I"; rule "raa-cor:2")
6459 AOT_modally_strict {
6460 AOT_assume 0: ‹¬ψ›
6461 AOT_assume ‹∀z ([λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z)›
6462 AOT_hence ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6463 using "∀E" by blast
6464 moreover AOT_have ‹[λz [F]z & ψ]z ≡ [F]z & ψ› for z
6465 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6466 moreover AOT_have ‹[λz ([F]z & ψ) ∨ ¬ψ]z ≡ (([F]z & ψ) ∨ ¬ψ)› for z
6467 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6468 ultimately AOT_have ‹[F]z & ψ ≡ (([F]z & ψ) ∨ ¬ψ)› for z
6469 using "Commutativity of ≡"[THEN "≡E"(1)] "≡E"(5) by meson
6470 moreover AOT_have ‹(([F]z & ψ) ∨ ¬ψ)› for z
6471 using 0 "∨I" by blast
6472 ultimately AOT_have ‹ψ› using "≡E" "&E" by metis
6473 AOT_thus ‹ψ & ¬ψ› using 0 "&I" by blast
6474 }
6475 qed
6476
6477 AOT_have ‹□(∀z ([F]z ≡ [λz [F]z & ψ]z) →
6478 (¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6479 ¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)))› for ψ
6480 proof (rule RN; rule "→I")
6481 AOT_modally_strict {
6482 AOT_assume ‹∀z ([F]z ≡ [λz [F]z & ψ]z)›
6483 AOT_thus ‹¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6484 ¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6485 apply -
6486 proof(rule "≡I"; (rule "useful-tautologies:5"[THEN "→E"]; rule "→I")?)
6487 AOT_assume ‹∀z ([F]z ≡ [λz [F]z & ψ]z)›
6488 AOT_hence 1: ‹[F]z ≡ [λz [F]z & ψ]z› for z
6489 using "∀E" by blast
6490 AOT_assume ‹∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6491 AOT_hence 2: ‹[F]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6492 using "∀E" by blast
6493 AOT_have ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6494 using "≡E" 1 2 by meson
6495 AOT_thus ‹∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6496 by (rule GEN)
6497 next
6498 AOT_assume ‹∀z ([F]z ≡ [λz [F]z & ψ]z)›
6499 AOT_hence 1: ‹[F]z ≡ [λz [F]z & ψ]z› for z
6500 using "∀E" by blast
6501 AOT_assume ‹∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6502 AOT_hence 2: ‹[λz [F]z & ψ]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6503 using "∀E" by blast
6504 AOT_have ‹[F]z ≡ [λz [F]z & ψ ∨ ¬ψ]z› for z
6505 using 1 2 "≡E" by meson
6506 AOT_thus ‹ ∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)›
6507 by (rule GEN)
6508 qed
6509 }
6510 qed
6511 AOT_hence ‹❙𝒜(∀z ([F]z ≡ [λz [F]z & ψ]z) →
6512 (¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6513 ¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x)))› for ψ
6514 using "nec-imp-act"[THEN "→E"] by blast
6515 AOT_hence ‹❙𝒜∀z ([F]z ≡ [λz [F]z & ψ]z) →
6516 ❙𝒜(¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6517 ¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x))› for ψ
6518 using "act-cond"[THEN "→E"] by blast
6519 AOT_hence Aux_D: ‹❙𝒜∀z ([F]z ≡ [λz [F]z & ψ]z) →
6520 (❙𝒜¬∀x ([λz [F]z & ψ]x ≡ [λz [F]z & ψ ∨ ¬ψ]x) ≡
6521 ❙𝒜¬∀x ([F]x ≡ [λz [F]z & ψ ∨ ¬ψ]x))› for ψ
6522 by (auto intro!: "→I" "Act-Basic:5"[THEN "≡E"(1)] dest!: "→E")
6523
6524 AOT_have ‹¬❙𝒜q⇩0›
6525 apply (rule "=⇩d⇩fI"(2)[OF q⇩0_def])
6526 apply (fact "log-prop-prop:2")
6527 by (fact AOT)
6528 AOT_hence q⇩0_prop_1: ‹❙𝒜¬q⇩0›
6529 using "logic-actual-nec:1"[axiom_inst, THEN "≡E"(2)] by blast
6530 {
6531 AOT_assume 1: ‹❙𝒜∀x([F]x ≡ [λz [F]z & q⇩0]x)›
6532 AOT_have 2: ‹◇∀x([F]x ≡ [λz [F]z & q⇩0 ∨ ¬q⇩0]x)›
6533 using Aux_B[THEN "→E", OF q⇩0_prop[THEN "&E"(1)]].
6534 AOT_have ‹❙𝒜¬∀x([λz [F]z & q⇩0]x ≡ [λz [F]z & q⇩0 ∨ ¬q⇩0]x)›
6535 using Aux_C[THEN "→E", OF q⇩0_prop_1].
6536 AOT_hence 3: ‹❙𝒜¬∀x([F]x ≡ [λz [F]z & q⇩0 ∨ ¬q⇩0]x)›
6537 using Aux_D[THEN "→E", OF 1, THEN "≡E"(1)] by blast
6538 AOT_hence ‹❙𝒜¬∀x([F]x ≡ [λz [F]z & q⇩0 ∨ ¬q⇩0]x) &
6539 ◇∀x([F]x ≡ [λz [F]z & q⇩0 ∨ ¬q⇩0]x)›
6540 using 2 "&I" by blast
6541 AOT_hence ‹∃G (❙𝒜¬∀x ([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6542 by (rule "∃I"(1)) "cqt:2[lambda]"
6543 }
6544 moreover {
6545 AOT_assume 2: ‹¬❙𝒜∀x([F]x ≡ [λz [F]z & q⇩0]x)›
6546 AOT_hence ‹❙𝒜¬∀x([F]x ≡ [λz [F]z & q⇩0]x)›
6547 using "logic-actual-nec:1"[axiom_inst, THEN "≡E"(2)] by blast
6548 AOT_hence ‹❙𝒜¬∀x ([F]x ≡ [λz [F]z & q⇩0]x) & ◇∀x([F]x ≡ [λz [F]z & q⇩0]x)›
6549 using Aux_A[THEN "→E", OF q⇩0_prop[THEN "&E"(1)]] "&I" by blast
6550 AOT_hence ‹∃G (❙𝒜¬∀x ([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6551 by (rule "∃I"(1)) "cqt:2[lambda]"
6552 }
6553 ultimately AOT_show ‹∃G (❙𝒜¬∀x ([F]x ≡ [G]x) & ◇∀x([F]x ≡ [G]x))›
6554 using "∨E"(1)[OF "exc-mid"] "→I" by blast
6555qed
6556
6557AOT_theorem "oa-contingent:1": ‹O! ≠ A!›
6558proof(rule "≡⇩d⇩fI"[OF "=-infix"]; rule "raa-cor:2")
6559 fix x
6560 AOT_assume 1: ‹O! = A!›
6561 AOT_hence ‹[λx ◇E!x] = A!›
6562 by (rule "=⇩d⇩fE"(2)[OF AOT_ordinary, rotated]) "cqt:2[lambda]"
6563 AOT_hence ‹[λx ◇E!x] = [λx ¬◇E!x]›
6564 by (rule "=⇩d⇩fE"(2)[OF AOT_abstract, rotated]) "cqt:2[lambda]"
6565 moreover AOT_have ‹[λx ◇E!x]x ≡ ◇E!x›
6566 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6567 ultimately AOT_have ‹[λx ¬◇E!x]x ≡ ◇E!x›
6568 using "rule=E" by fast
6569 moreover AOT_have ‹[λx ¬◇E!x]x ≡ ¬◇E!x›
6570 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6571 ultimately AOT_have ‹◇E!x ≡ ¬◇E!x›
6572 using "≡E"(6) "Commutativity of ≡"[THEN "≡E"(1)] by blast
6573 AOT_thus "(◇E!x ≡ ¬◇E!x) & ¬(◇E!x ≡ ¬◇E!x)"
6574 using "oth-class-taut:3:c" "&I" by blast
6575qed
6576
6577AOT_theorem "oa-contingent:2": ‹O!x ≡ ¬A!x›
6578proof -
6579 AOT_have ‹O!x ≡ [λx ◇E!x]x›
6580 apply (rule "≡I"; rule "→I")
6581 apply (rule "=⇩d⇩fE"(2)[OF AOT_ordinary])
6582 apply "cqt:2[lambda]"
6583 apply argo
6584 apply (rule "=⇩d⇩fI"(2)[OF AOT_ordinary])
6585 apply "cqt:2[lambda]"
6586 by argo
6587 also AOT_have ‹… ≡ ◇E!x›
6588 by (rule "beta-C-meta"[THEN "→E"]) "cqt:2[lambda]"
6589 also AOT_have ‹… ≡ ¬¬◇E!x›
6590 using "oth-class-taut:3:b".
6591 also AOT_have ‹… ≡ ¬[λx ¬◇E!x]x›
6592 by (rule "beta-C-meta"[THEN "→E",
6593 THEN "oth-class-taut:4:b"[THEN "≡E"(1)], symmetric])
6594 "cqt:2"
6595 also AOT_have ‹… ≡ ¬A!x›
6596 apply (rule "≡I"; rule "→I")
6597 apply (rule "=⇩d⇩fI"(2)[OF AOT_abstract])
6598 apply "cqt:2[lambda]"
6599 apply argo
6600 apply (rule "=⇩d⇩fE"(2)[OF AOT_abstract])
6601 apply "cqt:2[lambda]"
6602 by argo
6603 finally show ?thesis.
6604qed
6605
6606AOT_theorem "oa-contingent:3": ‹A!x ≡ ¬O!x›
6607 by (AOT_subst ‹A!x› ‹¬¬A!x›)
6608 (auto simp add: "oth-class-taut:3:b" "oa-contingent:2"[THEN
6609 "oth-class-taut:4:b"[THEN "≡E"(1)], symmetric])
6610
6611AOT_theorem "oa-contingent:4": ‹Contingent(O!)›
6612proof (rule "thm-cont-prop:2"[unvarify F, OF "oa-exist:1", THEN "≡E"(2)];
6613 rule "&I")
6614 AOT_have ‹◇∃x E!x› using "thm-cont-e:3" .
6615 AOT_hence ‹∃x ◇E!x› using "BF◇"[THEN "→E"] by blast
6616 then AOT_obtain a where ‹◇E!a› using "∃E"[rotated] by blast
6617 AOT_hence ‹[λx ◇E!x]a›
6618 by (rule "beta-C-meta"[THEN "→E", THEN "≡E"(2), rotated]) "cqt:2"
6619 AOT_hence ‹O!a›
6620 by (rule "=⇩d⇩fI"(2)[OF AOT_ordinary, rotated]) "cqt:2"
6621 AOT_hence ‹∃x O!x› using "∃I" by blast
6622 AOT_thus ‹◇∃x O!x› using "T◇"[THEN "→E"] by blast
6623next
6624 AOT_obtain a where ‹A!a›
6625 using "A-objects"[axiom_inst] "∃E"[rotated] "&E" by blast
6626 AOT_hence ‹¬O!a› using "oa-contingent:3"[THEN "≡E"(1)] by blast
6627 AOT_hence ‹∃x ¬O!x› using "∃I" by fast
6628 AOT_thus ‹◇∃x ¬O!x› using "T◇"[THEN "→E"] by blast
6629qed
6630
6631AOT_theorem "oa-contingent:5": ‹Contingent(A!)›
6632proof (rule "thm-cont-prop:2"[unvarify F, OF "oa-exist:2", THEN "≡E"(2)];
6633 rule "&I")
6634 AOT_obtain a where ‹A!a›
6635 using "A-objects"[axiom_inst] "∃E"[rotated] "&E" by blast
6636 AOT_hence ‹∃x A!x› using "∃I" by fast
6637 AOT_thus ‹◇∃x A!x› using "T◇"[THEN "→E"] by blast
6638next
6639 AOT_have ‹◇∃x E!x› using "thm-cont-e:3" .
6640 AOT_hence ‹∃x ◇E!x› using "BF◇"[THEN "→E"] by blast
6641 then AOT_obtain a where ‹◇E!a› using "∃E"[rotated] by blast
6642 AOT_hence ‹[λx ◇E!x]a›
6643 by (rule "beta-C-meta"[THEN "→E", THEN "≡E"(2), rotated]) "cqt:2[lambda]"
6644 AOT_hence ‹O!a›
6645 by (rule "=⇩d⇩fI"(2)[OF AOT_ordinary, rotated]) "cqt:2[lambda]"
6646 AOT_hence ‹¬A!a› using "oa-contingent:2"[THEN "≡E"(1)] by blast
6647 AOT_hence ‹∃x ¬A!x› using "∃I" by fast
6648 AOT_thus ‹◇∃x ¬A!x› using "T◇"[THEN "→E"] by blast
6649qed
6650
6651AOT_theorem "oa-contingent:7": ‹O!⇧-x ≡ ¬A!⇧-x›
6652proof -
6653 AOT_have ‹O!x ≡ ¬A!x›
6654 using "oa-contingent:2" by blast
6655 also AOT_have ‹… ≡ A!⇧-x›
6656 using "thm-relation-negation:1"[symmetric, unvarify F, OF "oa-exist:2"].
6657 finally AOT_have 1: ‹O!x ≡ A!⇧-x›.
6658
6659 AOT_have ‹A!x ≡ ¬O!x›
6660 using "oa-contingent:3" by blast
6661 also AOT_have ‹… ≡ O!⇧-x›
6662 using "thm-relation-negation:1"[symmetric, unvarify F, OF "oa-exist:1"].
6663 finally AOT_have 2: ‹A!x ≡ O!⇧-x›.
6664
6665 AOT_show ‹O!⇧-x ≡ ¬A!⇧-x›
6666 using 1[THEN "oth-class-taut:4:b"[THEN "≡E"(1)]]
6667 "oa-contingent:3"[of _ x] 2[symmetric]
6668 "≡E"(5) by blast
6669qed
6670
6671AOT_theorem "oa-contingent:6": ‹O!⇧- ≠ A!⇧-›
6672proof (rule "=-infix"[THEN "≡⇩d⇩fI"]; rule "raa-cor:2")
6673 AOT_assume 1: ‹O!⇧- = A!⇧-›
6674 fix x
6675 AOT_have ‹A!⇧-x ≡ O!⇧-x›
6676 apply (rule "rule=E"[rotated, OF 1])
6677 by (fact "oth-class-taut:3:a")
6678 AOT_hence ‹A!⇧-x ≡ ¬A!⇧-x›
6679 using "oa-contingent:7" "≡E" by fast
6680 AOT_thus ‹(A!⇧-x ≡ ¬A!⇧-x) & ¬(A!⇧-x ≡ ¬A!⇧-x)›
6681 using "oth-class-taut:3:c" "&I" by blast
6682qed
6683
6684AOT_theorem "oa-contingent:8": ‹Contingent(O!⇧-)›
6685 using "thm-cont-prop:3"[unvarify F, OF "oa-exist:1", THEN "≡E"(1),
6686 OF "oa-contingent:4"].
6687
6688AOT_theorem "oa-contingent:9": ‹Contingent(A!⇧-)›
6689 using "thm-cont-prop:3"[unvarify F, OF "oa-exist:2", THEN "≡E"(1),
6690 OF "oa-contingent:5"].
6691
6692AOT_define WeaklyContingent :: ‹Π ⇒ φ› (‹WeaklyContingent'(_')›)
6693 "df-cont-nec":
6694 ‹WeaklyContingent([F]) ≡⇩d⇩f Contingent([F]) & ∀x (◇[F]x → □[F]x)›
6695
6696AOT_theorem "cont-nec-fact1:1":
6697 ‹WeaklyContingent([F]) ≡ WeaklyContingent([F]⇧-)›
6698proof -
6699 AOT_have ‹WeaklyContingent([F]) ≡ Contingent([F]) & ∀x (◇[F]x → □[F]x)›
6700 using "df-cont-nec"[THEN "≡Df"] by blast
6701 also AOT_have ‹... ≡ Contingent([F]⇧-) & ∀x (◇[F]x → □[F]x)›
6702 apply (rule "oth-class-taut:8:f"[THEN "≡E"(2)]; rule "→I")
6703 using "thm-cont-prop:3".
6704 also AOT_have ‹… ≡ Contingent([F]⇧-) & ∀x (◇[F]⇧-x → □[F]⇧-x)›
6705 proof (rule "oth-class-taut:8:e"[THEN "≡E"(2)];
6706 rule "→I"; rule "≡I"; rule "→I"; rule GEN; rule "→I")
6707 fix x
6708 AOT_assume 0: ‹∀x (◇[F]x → □[F]x)›
6709 AOT_assume 1: ‹◇[F]⇧-x›
6710 AOT_have ‹◇¬[F]x›
6711 by (AOT_subst (reverse) ‹¬[F]x› ‹[F]⇧-x›)
6712 (auto simp add: "thm-relation-negation:1" 1)
6713 AOT_hence 2: ‹¬□[F]x›
6714 using "KBasic:11"[THEN "≡E"(2)] by blast
6715 AOT_show ‹□[F]⇧-x›
6716 proof (rule "raa-cor:1")
6717 AOT_assume 3: ‹¬□[F]⇧-x›
6718 AOT_have ‹¬□¬[F]x›
6719 by (AOT_subst (reverse) ‹¬[F]x› ‹[F]⇧-x›)
6720 (auto simp add: "thm-relation-negation:1" 3)
6721 AOT_hence ‹◇[F]x›
6722 using "conventions:5"[THEN "≡⇩d⇩fI"] by simp
6723 AOT_hence ‹□[F]x› using 0 "∀E" "→E" by fast
6724 AOT_thus ‹□[F]x & ¬□[F]x› using "&I" 2 by blast
6725 qed
6726 next
6727 fix x
6728 AOT_assume 0: ‹∀x (◇[F]⇧-x → □[F]⇧-x)›
6729 AOT_assume 1: ‹◇[F]x›
6730 AOT_have ‹◇¬[F]⇧-x›
6731 by (AOT_subst ‹¬[F]⇧-x› ‹[F]x›)
6732 (auto simp: "thm-relation-negation:2" 1)
6733 AOT_hence 2: ‹¬□[F]⇧-x›
6734 using "KBasic:11"[THEN "≡E"(2)] by blast
6735 AOT_show ‹□[F]x›
6736 proof (rule "raa-cor:1")
6737 AOT_assume 3: ‹¬□[F]x›
6738 AOT_have ‹¬□¬[F]⇧-x›
6739 by (AOT_subst ‹¬[F]⇧-x› ‹[F]x›)
6740 (auto simp add: "thm-relation-negation:2" 3)
6741 AOT_hence ‹◇[F]⇧-x›
6742 using "conventions:5"[THEN "≡⇩d⇩fI"] by simp
6743 AOT_hence ‹□[F]⇧-x› using 0 "∀E" "→E" by fast
6744 AOT_thus ‹□[F]⇧-x & ¬□[F]⇧-x› using "&I" 2 by blast
6745 qed
6746 qed
6747 also AOT_have ‹… ≡ WeaklyContingent([F]⇧-)›
6748 using "df-cont-nec"[THEN "≡Df", symmetric] by blast
6749 finally show ?thesis.
6750qed
6751
6752AOT_theorem "cont-nec-fact1:2":
6753 ‹(WeaklyContingent([F]) & ¬WeaklyContingent([G])) → F ≠ G›
6754proof (rule "→I"; rule "=-infix"[THEN "≡⇩d⇩fI"]; rule "raa-cor:2")
6755 AOT_assume 1: ‹WeaklyContingent([F]) & ¬WeaklyContingent([G])›
6756 AOT_hence ‹WeaklyContingent([F])› using "&E" by blast
6757 moreover AOT_assume ‹F = G›
6758 ultimately AOT_have ‹WeaklyContingent([G])›
6759 using "rule=E" by blast
6760 AOT_thus ‹WeaklyContingent([G]) & ¬WeaklyContingent([G])›
6761 using 1 "&I" "&E" by blast
6762qed
6763
6764AOT_theorem "cont-nec-fact2:1": ‹WeaklyContingent(O!)›
6765proof (rule "df-cont-nec"[THEN "≡⇩d⇩fI"]; rule "&I")
6766 AOT_show ‹Contingent(O!)›
6767 using "oa-contingent:4".
6768next
6769 AOT_show ‹∀x (◇[O!]x → □[O!]x)›
6770 apply (rule GEN; rule "→I")
6771 using "oa-facts:5"[THEN "≡E"(1)] by blast
6772qed
6773
6774
6775AOT_theorem "cont-nec-fact2:2": ‹WeaklyContingent(A!)›
6776proof (rule "df-cont-nec"[THEN "≡⇩d⇩fI"]; rule "&I")
6777 AOT_show ‹Contingent(A!)›
6778 using "oa-contingent:5".
6779next
6780 AOT_show ‹∀x (◇[A!]x → □[A!]x)›
6781 apply (rule GEN; rule "→I")
6782 using "oa-facts:6"[THEN "≡E"(1)] by blast
6783qed
6784
6785AOT_theorem "cont-nec-fact2:3": ‹¬WeaklyContingent(E!)›
6786proof (rule "df-cont-nec"[THEN "≡Df",
6787 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6788 THEN "≡E"(2)];
6789 rule DeMorgan(1)[THEN "≡E"(2)]; rule "∨I"(2); rule "raa-cor:2")
6790 AOT_have ‹◇∃x (E!x & ¬❙𝒜E!x)› using "qml:4"[axiom_inst].
6791 AOT_hence ‹∃x ◇(E!x & ¬❙𝒜E!x)› using "BF◇"[THEN "→E"] by blast
6792 then AOT_obtain a where ‹◇(E!a & ¬❙𝒜E!a)› using "∃E"[rotated] by blast
6793 AOT_hence 1: ‹◇E!a & ◇¬❙𝒜E!a› using "KBasic2:3"[THEN "→E"] by simp
6794 moreover AOT_assume ‹∀x (◇[E!]x → □[E!]x)›
6795 ultimately AOT_have ‹□E!a› using "&E" "∀E" "→E" by fast
6796 AOT_hence ‹❙𝒜E!a› using "nec-imp-act"[THEN "→E"] by blast
6797 AOT_hence ‹□❙𝒜E!a› using "qml-act:1"[axiom_inst, THEN "→E"] by blast
6798 moreover AOT_have ‹¬□❙𝒜E!a›
6799 using "KBasic:11"[THEN "≡E"(2)] 1[THEN "&E"(2)] by meson
6800 ultimately AOT_have ‹□❙𝒜E!a & ¬□❙𝒜E!a› using "&I" by blast
6801 AOT_thus ‹p & ¬p› for p using "raa-cor:1" by blast
6802qed
6803
6804AOT_theorem "cont-nec-fact2:4": ‹¬WeaklyContingent(L)›
6805 apply (rule "df-cont-nec"[THEN "≡Df",
6806 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6807 THEN "≡E"(2)];
6808 rule DeMorgan(1)[THEN "≡E"(2)]; rule "∨I"(1))
6809 apply (rule "contingent-properties:4"
6810 [THEN "≡Df",
6811 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6812 THEN "≡E"(2)])
6813 apply (rule DeMorgan(1)[THEN "≡E"(2)];
6814 rule "∨I"(2);
6815 rule "useful-tautologies:2"[THEN "→E"])
6816 using "thm-noncont-e-e:3"[THEN "contingent-properties:3"[THEN "≡⇩d⇩fE"]].
6817
6818AOT_theorem "cont-nec-fact2:5": ‹O! ≠ E! & O! ≠ E!⇧- & O! ≠ L & O! ≠ L⇧-›
6819proof -
6820 AOT_have 1: ‹L↓›
6821 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
6822 {
6823 fix φ and Π Π' :: ‹<κ>›
6824 AOT_have A: ‹¬(φ{Π'} ≡ φ{Π})› if ‹φ{Π}› and ‹¬φ{Π'}›
6825 proof (rule "raa-cor:2")
6826 AOT_assume ‹φ{Π'} ≡ φ{Π}›
6827 AOT_hence ‹φ{Π'}› using that(1) "≡E" by blast
6828 AOT_thus ‹φ{Π'} & ¬φ{Π'}› using that(2) "&I" by blast
6829 qed
6830 AOT_have ‹Π' ≠ Π› if ‹Π↓› and ‹Π'↓› and ‹φ{Π}› and ‹¬φ{Π'}›
6831 using "pos-not-equiv-ne:4"[unvarify F G, THEN "→E",
6832 OF that(1,2), OF A[OF that(3, 4)]].
6833 } note 0 = this
6834 show ?thesis
6835 apply(safe intro!: "&I"; rule 0)
6836 apply "cqt:2"
6837 using "oa-exist:1" apply blast
6838 using "cont-nec-fact2:3" apply fast
6839 apply (rule "useful-tautologies:2"[THEN "→E"])
6840 using "cont-nec-fact2:1" apply fast
6841 using "rel-neg-T:3" apply fast
6842 using "oa-exist:1" apply blast
6843 using "cont-nec-fact1:1"[THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6844 THEN "≡E"(1), rotated, OF "cont-nec-fact2:3"] apply fast
6845 apply (rule "useful-tautologies:2"[THEN "→E"])
6846 using "cont-nec-fact2:1" apply blast
6847 apply (rule "=⇩d⇩fI"(2)[OF L_def]; "cqt:2[lambda]")
6848 using "oa-exist:1" apply fast
6849 using "cont-nec-fact2:4" apply fast
6850 apply (rule "useful-tautologies:2"[THEN "→E"])
6851 using "cont-nec-fact2:1" apply fast
6852 using "rel-neg-T:3" apply fast
6853 using "oa-exist:1" apply fast
6854 apply (rule "cont-nec-fact1:1"[unvarify F,
6855 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6856 THEN "≡E"(1), rotated, OF "cont-nec-fact2:4"])
6857 apply (rule "=⇩d⇩fI"(2)[OF L_def]; "cqt:2[lambda]")
6858 apply (rule "useful-tautologies:2"[THEN "→E"])
6859 using "cont-nec-fact2:1" by blast
6860qed
6861
6862AOT_theorem "cont-nec-fact2:6": ‹A! ≠ E! & A! ≠ E!⇧- & A! ≠ L & A! ≠ L⇧-›
6863proof -
6864 AOT_have 1: ‹L↓›
6865 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
6866 {
6867 fix φ and Π Π' :: ‹<κ>›
6868 AOT_have A: ‹¬(φ{Π'} ≡ φ{Π})› if ‹φ{Π}› and ‹¬φ{Π'}›
6869 proof (rule "raa-cor:2")
6870 AOT_assume ‹φ{Π'} ≡ φ{Π}›
6871 AOT_hence ‹φ{Π'}› using that(1) "≡E" by blast
6872 AOT_thus ‹φ{Π'} & ¬φ{Π'}› using that(2) "&I" by blast
6873 qed
6874 AOT_have ‹Π' ≠ Π› if ‹Π↓› and ‹Π'↓› and ‹φ{Π}› and ‹¬φ{Π'}›
6875 using "pos-not-equiv-ne:4"[unvarify F G, THEN "→E",
6876 OF that(1,2), OF A[OF that(3, 4)]].
6877 } note 0 = this
6878 show ?thesis
6879 apply(safe intro!: "&I"; rule 0)
6880 apply "cqt:2"
6881 using "oa-exist:2" apply blast
6882 using "cont-nec-fact2:3" apply fast
6883 apply (rule "useful-tautologies:2"[THEN "→E"])
6884 using "cont-nec-fact2:2" apply fast
6885 using "rel-neg-T:3" apply fast
6886 using "oa-exist:2" apply blast
6887 using "cont-nec-fact1:1"[THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6888 THEN "≡E"(1), rotated, OF "cont-nec-fact2:3"] apply fast
6889 apply (rule "useful-tautologies:2"[THEN "→E"])
6890 using "cont-nec-fact2:2" apply blast
6891 apply (rule "=⇩d⇩fI"(2)[OF L_def]; "cqt:2[lambda]")
6892 using "oa-exist:2" apply fast
6893 using "cont-nec-fact2:4" apply fast
6894 apply (rule "useful-tautologies:2"[THEN "→E"])
6895 using "cont-nec-fact2:2" apply fast
6896 using "rel-neg-T:3" apply fast
6897 using "oa-exist:2" apply fast
6898 apply (rule "cont-nec-fact1:1"[unvarify F,
6899 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
6900 THEN "≡E"(1), rotated, OF "cont-nec-fact2:4"])
6901 apply (rule "=⇩d⇩fI"(2)[OF L_def]; "cqt:2[lambda]")
6902 apply (rule "useful-tautologies:2"[THEN "→E"])
6903 using "cont-nec-fact2:2" by blast
6904qed
6905
6906AOT_define necessary_or_contingently_false :: ‹φ ⇒ φ› ("❙Δ_" [49] 54)
6907 ‹❙Δp ≡⇩d⇩f □p ∨ (¬❙𝒜p & ◇p)›
6908
6909AOT_theorem sixteen:
6910 shows ‹∃F⇩1∃F⇩2∃F⇩3∃F⇩4∃F⇩5∃F⇩6∃F⇩7∃F⇩8∃F⇩9∃F⇩1⇩0∃F⇩1⇩1∃F⇩1⇩2∃F⇩1⇩3∃F⇩1⇩4∃F⇩1⇩5∃F⇩1⇩6 (
6911 «F⇩1::<κ>» ≠ F⇩2 & F⇩1 ≠ F⇩3 & F⇩1 ≠ F⇩4 & F⇩1 ≠ F⇩5 & F⇩1 ≠ F⇩6 & F⇩1 ≠ F⇩7 &
6912 F⇩1 ≠ F⇩8 & F⇩1 ≠ F⇩9 & F⇩1 ≠ F⇩1⇩0 & F⇩1 ≠ F⇩1⇩1 & F⇩1 ≠ F⇩1⇩2 & F⇩1 ≠ F⇩1⇩3 &
6913 F⇩1 ≠ F⇩1⇩4 & F⇩1 ≠ F⇩1⇩5 & F⇩1 ≠ F⇩1⇩6 &
6914 F⇩2 ≠ F⇩3 & F⇩2 ≠ F⇩4 & F⇩2 ≠ F⇩5 & F⇩2 ≠ F⇩6 & F⇩2 ≠ F⇩7 & F⇩2 ≠ F⇩8 &
6915 F⇩2 ≠ F⇩9 & F⇩2 ≠ F⇩1⇩0 & F⇩2 ≠ F⇩1⇩1 & F⇩2 ≠ F⇩1⇩2 & F⇩2 ≠ F⇩1⇩3 & F⇩2 ≠ F⇩1⇩4 &
6916 F⇩2 ≠ F⇩1⇩5 & F⇩2 ≠ F⇩1⇩6 &
6917 F⇩3 ≠ F⇩4 & F⇩3 ≠ F⇩5 & F⇩3 ≠ F⇩6 & F⇩3 ≠ F⇩7 & F⇩3 ≠ F⇩8 & F⇩3 ≠ F⇩9 & F⇩3 ≠ F⇩1⇩0 &
6918 F⇩3 ≠ F⇩1⇩1 & F⇩3 ≠ F⇩1⇩2 & F⇩3 ≠ F⇩1⇩3 & F⇩3 ≠ F⇩1⇩4 & F⇩3 ≠ F⇩1⇩5 & F⇩3 ≠ F⇩1⇩6 &
6919 F⇩4 ≠ F⇩5 & F⇩4 ≠ F⇩6 & F⇩4 ≠ F⇩7 & F⇩4 ≠ F⇩8 & F⇩4 ≠ F⇩9 & F⇩4 ≠ F⇩1⇩0 & F⇩4 ≠ F⇩1⇩1 &
6920 F⇩4 ≠ F⇩1⇩2 & F⇩4 ≠ F⇩1⇩3 & F⇩4 ≠ F⇩1⇩4 & F⇩4 ≠ F⇩1⇩5 & F⇩4 ≠ F⇩1⇩6 &
6921 F⇩5 ≠ F⇩6 & F⇩5 ≠ F⇩7 & F⇩5 ≠ F⇩8 & F⇩5 ≠ F⇩9 & F⇩5 ≠ F⇩1⇩0 & F⇩5 ≠ F⇩1⇩1 & F⇩5 ≠ F⇩1⇩2 &
6922 F⇩5 ≠ F⇩1⇩3 & F⇩5 ≠ F⇩1⇩4 & F⇩5 ≠ F⇩1⇩5 & F⇩5 ≠ F⇩1⇩6 &
6923 F⇩6 ≠ F⇩7 & F⇩6 ≠ F⇩8 & F⇩6 ≠ F⇩9 & F⇩6 ≠ F⇩1⇩0 & F⇩6 ≠ F⇩1⇩1 & F⇩6 ≠ F⇩1⇩2 & F⇩6 ≠ F⇩1⇩3 &
6924 F⇩6 ≠ F⇩1⇩4 & F⇩6 ≠ F⇩1⇩5 & F⇩6 ≠ F⇩1⇩6 &
6925 F⇩7 ≠ F⇩8 & F⇩7 ≠ F⇩9 & F⇩7 ≠ F⇩1⇩0 & F⇩7 ≠ F⇩1⇩1 & F⇩7 ≠ F⇩1⇩2 & F⇩7 ≠ F⇩1⇩3 & F⇩7 ≠ F⇩1⇩4 &
6926 F⇩7 ≠ F⇩1⇩5 & F⇩7 ≠ F⇩1⇩6 &
6927 F⇩8 ≠ F⇩9 & F⇩8 ≠ F⇩1⇩0 & F⇩8 ≠ F⇩1⇩1 & F⇩8 ≠ F⇩1⇩2 & F⇩8 ≠ F⇩1⇩3 & F⇩8 ≠ F⇩1⇩4 & F⇩8 ≠ F⇩1⇩5 &
6928 F⇩8 ≠ F⇩1⇩6 &
6929 F⇩9 ≠ F⇩1⇩0 & F⇩9 ≠ F⇩1⇩1 & F⇩9 ≠ F⇩1⇩2 & F⇩9 ≠ F⇩1⇩3 & F⇩9 ≠ F⇩1⇩4 & F⇩9 ≠ F⇩1⇩5 & F⇩9 ≠ F⇩1⇩6 &
6930 F⇩1⇩0 ≠ F⇩1⇩1 & F⇩1⇩0 ≠ F⇩1⇩2 & F⇩1⇩0 ≠ F⇩1⇩3 & F⇩1⇩0 ≠ F⇩1⇩4 & F⇩1⇩0 ≠ F⇩1⇩5 & F⇩1⇩0 ≠ F⇩1⇩6 &
6931 F⇩1⇩1 ≠ F⇩1⇩2 & F⇩1⇩1 ≠ F⇩1⇩3 & F⇩1⇩1 ≠ F⇩1⇩4 & F⇩1⇩1 ≠ F⇩1⇩5 & F⇩1⇩1 ≠ F⇩1⇩6 &
6932 F⇩1⇩2 ≠ F⇩1⇩3 & F⇩1⇩2 ≠ F⇩1⇩4 & F⇩1⇩2 ≠ F⇩1⇩5 & F⇩1⇩2 ≠ F⇩1⇩6 &
6933 F⇩1⇩3 ≠ F⇩1⇩4 & F⇩1⇩3 ≠ F⇩1⇩5 & F⇩1⇩3 ≠ F⇩1⇩6 &
6934 F⇩1⇩4 ≠ F⇩1⇩5 & F⇩1⇩4 ≠ F⇩1⇩6 &
6935 F⇩1⇩5 ≠ F⇩1⇩6)›
6936proof -
6937 AOT_have Delta_pos: ‹❙Δφ → ◇φ› for φ
6938 proof(rule "→I")
6939 AOT_assume ‹❙Δφ›
6940 AOT_hence ‹□φ ∨ (¬❙𝒜φ & ◇φ)›
6941 using "≡⇩d⇩fE"[OF necessary_or_contingently_false] by blast
6942 moreover {
6943 AOT_assume ‹□φ›
6944 AOT_hence ‹◇φ›
6945 by (metis "B◇" "T◇" "vdash-properties:10")
6946 }
6947 moreover {
6948 AOT_assume ‹¬❙𝒜φ & ◇φ›
6949 AOT_hence ‹◇φ›
6950 using "&E" by blast
6951 }
6952 ultimately AOT_show ‹◇φ›
6953 by (metis "∨E"(2) "raa-cor:1")
6954 qed
6955
6956 AOT_have act_and_not_nec_not_delta: ‹¬❙Δφ› if ‹❙𝒜φ› and ‹¬□φ› for φ
6957 using "≡⇩d⇩fE" "&E"(1) "∨E"(2) necessary_or_contingently_false
6958 "raa-cor:3" that(1,2) by blast
6959 AOT_have act_and_pos_not_not_delta: ‹¬❙Δφ› if ‹❙𝒜φ› and ‹◇¬φ› for φ
6960 using "KBasic:11" act_and_not_nec_not_delta "≡E"(2) that(1,2) by blast
6961 AOT_have impossible_delta: ‹¬❙Δφ› if ‹¬◇φ› for φ
6962 using Delta_pos "modus-tollens:1" that by blast
6963 AOT_have not_act_and_pos_delta: ‹❙Δφ› if ‹¬❙𝒜φ› and ‹◇φ› for φ
6964 by (meson "≡⇩d⇩fI" "&I" "∨I"(2) necessary_or_contingently_false that(1,2))
6965 AOT_have nec_delta: ‹❙Δφ› if ‹□φ› for φ
6966 using "≡⇩d⇩fI" "∨I"(1) necessary_or_contingently_false that by blast
6967
6968 AOT_obtain a where a_prop: ‹A!a›
6969 using "A-objects"[axiom_inst] "∃E"[rotated] "&E" by blast
6970 AOT_obtain b where b_prop: ‹◇[E!]b & ¬❙𝒜[E!]b›
6971 using "pos-not-pna:3" using "∃E"[rotated] by blast
6972
6973 AOT_have b_ord: ‹[O!]b›
6974 proof(rule "=⇩d⇩fI"(2)[OF AOT_ordinary])
6975 AOT_show ‹[λx ◇[E!]x]↓› by "cqt:2[lambda]"
6976 next
6977 AOT_show ‹[λx ◇[E!]x]b›
6978 proof (rule "β←C"(1); ("cqt:2[lambda]")?)
6979 AOT_show ‹b↓› by (rule "cqt:2[const_var]"[axiom_inst])
6980 AOT_show ‹◇[E!]b› by (fact b_prop[THEN "&E"(1)])
6981 qed
6982 qed
6983
6984 AOT_have nec_not_L_neg: ‹□¬[L⇧-]x› for x
6985 using "thm-noncont-e-e:2" "contingent-properties:2"[THEN "≡⇩d⇩fE"] "&E"
6986 CBF[THEN "→E"] "∀E" by blast
6987 AOT_have nec_L: ‹□[L]x› for x
6988 using "thm-noncont-e-e:1" "contingent-properties:1"[THEN "≡⇩d⇩fE"]
6989 CBF[THEN "→E"] "∀E" by blast
6990
6991 AOT_have act_ord_b: ‹❙𝒜[O!]b›
6992 using b_ord "≡E"(1) "oa-facts:7" by blast
6993 AOT_have delta_ord_b: ‹❙Δ[O!]b›
6994 by (meson "≡⇩d⇩fI" b_ord "∨I"(1) necessary_or_contingently_false
6995 "oa-facts:1" "→E")
6996 AOT_have not_act_ord_a: ‹¬❙𝒜[O!]a›
6997 by (meson a_prop "≡E"(1) "≡E"(3) "oa-contingent:3" "oa-facts:7")
6998 AOT_have not_delta_ord_a: ‹¬❙Δ[O!]a›
6999 by (metis Delta_pos "≡E"(4) not_act_ord_a "oa-facts:3" "oa-facts:7"
7000 "reductio-aa:1" "→E")
7001
7002 AOT_have not_act_abs_b: ‹¬❙𝒜[A!]b›
7003 by (meson b_ord "≡E"(1) "≡E"(3) "oa-contingent:2" "oa-facts:8")
7004 AOT_have not_delta_abs_b: ‹¬❙Δ[A!]b›
7005 proof(rule "raa-cor:2")
7006 AOT_assume ‹❙Δ[A!]b›
7007 AOT_hence ‹◇[A!]b›
7008 by (metis Delta_pos "vdash-properties:10")
7009 AOT_thus ‹[A!]b & ¬[A!]b›
7010 by (metis b_ord "&I" "≡E"(1) "oa-contingent:2"
7011 "oa-facts:4" "→E")
7012 qed
7013 AOT_have act_abs_a: ‹❙𝒜[A!]a›
7014 using a_prop "≡E"(1) "oa-facts:8" by blast
7015 AOT_have delta_abs_a: ‹❙Δ[A!]a›
7016 by (metis "≡⇩d⇩fI" a_prop "oa-facts:2" "→E" "∨I"(1)
7017 necessary_or_contingently_false)
7018
7019 AOT_have not_act_concrete_b: ‹¬❙𝒜[E!]b›
7020 using b_prop "&E"(2) by blast
7021 AOT_have delta_concrete_b: ‹❙Δ[E!]b›
7022 proof (rule "≡⇩d⇩fI"[OF necessary_or_contingently_false];
7023 rule "∨I"(2); rule "&I")
7024 AOT_show ‹¬❙𝒜[E!]b› using b_prop "&E"(2) by blast
7025 next
7026 AOT_show ‹◇[E!]b› using b_prop "&E"(1) by blast
7027 qed
7028 AOT_have not_act_concrete_a: ‹¬❙𝒜[E!]a›
7029 proof (rule "raa-cor:2")
7030 AOT_assume ‹❙𝒜[E!]a›
7031 AOT_hence 1: ‹◇[E!]a› by (metis "Act-Sub:3" "→E")
7032 AOT_have ‹[A!]a› by (simp add: a_prop)
7033 AOT_hence ‹[λx ¬◇[E!]x]a›
7034 by (rule "=⇩d⇩fE"(2)[OF AOT_abstract, rotated]) "cqt:2"
7035 AOT_hence ‹¬◇[E!]a› using "β→C"(1) by blast
7036 AOT_thus ‹◇[E!]a & ¬◇[E!]a› using 1 "&I" by blast
7037 qed
7038 AOT_have not_delta_concrete_a: ‹¬❙Δ[E!]a›
7039 proof (rule "raa-cor:2")
7040 AOT_assume ‹❙Δ[E!]a›
7041 AOT_hence 1: ‹◇[E!]a› by (metis Delta_pos "vdash-properties:10")
7042 AOT_have ‹[A!]a› by (simp add: a_prop)
7043 AOT_hence ‹[λx ¬◇[E!]x]a›
7044 by (rule "=⇩d⇩fE"(2)[OF AOT_abstract, rotated]) "cqt:2[lambda]"
7045 AOT_hence ‹¬◇[E!]a› using "β→C"(1) by blast
7046 AOT_thus ‹◇[E!]a & ¬◇[E!]a› using 1 "&I" by blast
7047 qed
7048
7049 AOT_have not_act_q_zero: ‹¬❙𝒜q⇩0›
7050 by (meson "log-prop-prop:2" "pos-not-pna:1"
7051 q⇩0_def "reductio-aa:1" "rule-id-df:2:a[zero]")
7052 AOT_have delta_q_zero: ‹❙Δq⇩0›
7053 proof(rule "≡⇩d⇩fI"[OF necessary_or_contingently_false];
7054 rule "∨I"(2); rule "&I")
7055 AOT_show ‹¬❙𝒜q⇩0› using not_act_q_zero.
7056 AOT_show ‹◇q⇩0› by (meson "&E"(1) q⇩0_prop)
7057 qed
7058 AOT_have act_not_q_zero: ‹❙𝒜¬q⇩0›
7059 using "Act-Basic:1" "∨E"(2) not_act_q_zero by blast
7060 AOT_have not_delta_not_q_zero: ‹¬❙Δ¬q⇩0›
7061 using "≡⇩d⇩fE" "conventions:5" "Act-Basic:1" act_and_not_nec_not_delta
7062 "&E"(1) "∨E"(2) not_act_q_zero q⇩0_prop by blast
7063
7064 AOT_have ‹[L⇧-]↓› by (simp add: "rel-neg-T:3")
7065 moreover AOT_have ‹¬❙𝒜[L⇧-]b & ¬❙Δ[L⇧-]b & ¬❙𝒜[L⇧-]a & ¬❙Δ[L⇧-]a›
7066 proof (safe intro!: "&I")
7067 AOT_show ‹¬❙𝒜[L⇧-]b›
7068 by (meson "≡E"(1) "logic-actual-nec:1"[axiom_inst] "nec-imp-act"
7069 nec_not_L_neg "→E")
7070 AOT_show ‹¬❙Δ[L⇧-]b›
7071 by (meson Delta_pos "KBasic2:1" "≡E"(1)
7072 "modus-tollens:1" nec_not_L_neg)
7073 AOT_show ‹¬❙𝒜[L⇧-]a›
7074 by (meson "≡E"(1) "logic-actual-nec:1"[axiom_inst]
7075 "nec-imp-act" nec_not_L_neg "→E")
7076 AOT_show ‹¬❙Δ[L⇧-]a›
7077 using Delta_pos "KBasic2:1" "≡E"(1) "modus-tollens:1"
7078 nec_not_L_neg by blast
7079 qed
7080 ultimately AOT_obtain F⇩0 where ‹¬❙𝒜[F⇩0]b & ¬❙Δ[F⇩0]b & ¬❙𝒜[F⇩0]a & ¬❙Δ[F⇩0]a›
7081 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7082 AOT_hence ‹¬❙𝒜[F⇩0]b› and ‹¬❙Δ[F⇩0]b› and ‹¬❙𝒜[F⇩0]a› and ‹¬❙Δ[F⇩0]a›
7083 using "&E" by blast+
7084 note props = this
7085
7086 let ?Π = "«[λy [A!]y & q⇩0]»"
7087 AOT_modally_strict {
7088 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7089 } note 1 = this
7090 moreover AOT_have ‹¬❙𝒜[«?Π»]b & ¬❙Δ[«?Π»]b & ¬❙𝒜[«?Π»]a & ❙Δ[«?Π»]a›
7091 proof (safe intro!: "&I"; AOT_subst ‹[λy A!y & q⇩0]x› ‹A!x & q⇩0› for: x)
7092 AOT_show ‹¬❙𝒜([A!]b & q⇩0)›
7093 using "Act-Basic:2" "&E"(1) "≡E"(1) not_act_abs_b "raa-cor:3" by blast
7094 next AOT_show ‹¬❙Δ([A!]b & q⇩0)›
7095 by (metis Delta_pos "KBasic2:3" "&E"(1) "≡E"(4) not_act_abs_b
7096 "oa-facts:4" "oa-facts:8" "raa-cor:3" "→E")
7097 next AOT_show ‹¬❙𝒜([A!]a & q⇩0)›
7098 using "Act-Basic:2" "&E"(2) "≡E"(1) not_act_q_zero
7099 "raa-cor:3" by blast
7100 next AOT_show ‹❙Δ([A!]a & q⇩0)›
7101 proof (rule not_act_and_pos_delta)
7102 AOT_show ‹¬❙𝒜([A!]a & q⇩0)›
7103 using "Act-Basic:2" "&E"(2) "≡E"(4) not_act_q_zero
7104 "raa-cor:3" by blast
7105 next AOT_show ‹◇([A!]a & q⇩0)›
7106 by (metis "&I" "→E" Delta_pos "KBasic:16" "&E"(1) delta_abs_a
7107 "≡E"(1) "oa-facts:6" q⇩0_prop)
7108 qed
7109 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7110 ultimately AOT_obtain F⇩1 where ‹¬❙𝒜[F⇩1]b & ¬❙Δ[F⇩1]b & ¬❙𝒜[F⇩1]a & ❙Δ[F⇩1]a›
7111 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7112 AOT_hence ‹¬❙𝒜[F⇩1]b› and ‹¬❙Δ[F⇩1]b› and ‹¬❙𝒜[F⇩1]a› and ‹❙Δ[F⇩1]a›
7113 using "&E" by blast+
7114 note props = props this
7115
7116 let ?Π = "«[λy [A!]y & ¬q⇩0]»"
7117 AOT_modally_strict {
7118 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7119 } note 1 = this
7120 moreover AOT_have ‹¬❙𝒜[«?Π»]b & ¬❙Δ[«?Π»]b & ❙𝒜[«?Π»]a & ¬❙Δ[«?Π»]a›
7121 proof (safe intro!: "&I"; AOT_subst ‹[λy A!y & ¬q⇩0]x› ‹A!x & ¬q⇩0› for: x)
7122 AOT_show ‹¬❙𝒜([A!]b & ¬q⇩0)›
7123 using "Act-Basic:2" "&E"(1) "≡E"(1) not_act_abs_b "raa-cor:3" by blast
7124 next AOT_show ‹¬❙Δ([A!]b & ¬q⇩0)›
7125 by (meson "RM◇" Delta_pos "Conjunction Simplification"(1) "≡E"(4)
7126 "modus-tollens:1" not_act_abs_b "oa-facts:4" "oa-facts:8")
7127 next AOT_show ‹❙𝒜([A!]a & ¬q⇩0)›
7128 by (metis "Act-Basic:1" "Act-Basic:2" act_abs_a "&I" "∨E"(2)
7129 "≡E"(3) not_act_q_zero "raa-cor:3")
7130 next AOT_show ‹¬❙Δ([A!]a & ¬q⇩0)›
7131 proof (rule act_and_not_nec_not_delta)
7132 AOT_show ‹❙𝒜([A!]a & ¬q⇩0)›
7133 by (metis "Act-Basic:1" "Act-Basic:2" act_abs_a "&I" "∨E"(2)
7134 "≡E"(3) not_act_q_zero "raa-cor:3")
7135 next
7136 AOT_show ‹¬□([A!]a & ¬q⇩0)›
7137 by (metis "KBasic2:1" "KBasic:3" "&E"(1) "&E"(2) "≡E"(4)
7138 q⇩0_prop "raa-cor:3")
7139 qed
7140 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7141 ultimately AOT_obtain F⇩2 where ‹¬❙𝒜[F⇩2]b & ¬❙Δ[F⇩2]b & ❙𝒜[F⇩2]a & ¬❙Δ[F⇩2]a›
7142 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7143 AOT_hence ‹¬❙𝒜[F⇩2]b› and ‹¬❙Δ[F⇩2]b› and ‹❙𝒜[F⇩2]a› and ‹¬❙Δ[F⇩2]a›
7144 using "&E" by blast+
7145 note props = props this
7146
7147 AOT_have abstract_prop: ‹¬❙𝒜[A!]b & ¬❙Δ[A!]b & ❙𝒜[A!]a & ❙Δ[A!]a›
7148 using act_abs_a "&I" delta_abs_a not_act_abs_b not_delta_abs_b
7149 by presburger
7150 then AOT_obtain F⇩3 where ‹¬❙𝒜[F⇩3]b & ¬❙Δ[F⇩3]b & ❙𝒜[F⇩3]a & ❙Δ[F⇩3]a›
7151 using "∃I"(1)[rotated, THEN "∃E"[rotated]] "oa-exist:2" by fastforce
7152 AOT_hence ‹¬❙𝒜[F⇩3]b› and ‹¬❙Δ[F⇩3]b› and ‹❙𝒜[F⇩3]a› and ‹❙Δ[F⇩3]a›
7153 using "&E" by blast+
7154 note props = props this
7155
7156 AOT_have ‹¬❙𝒜[E!]b & ❙Δ[E!]b & ¬❙𝒜[E!]a & ¬❙Δ[E!]a›
7157 by (meson "&I" delta_concrete_b not_act_concrete_a
7158 not_act_concrete_b not_delta_concrete_a)
7159 then AOT_obtain F⇩4 where ‹¬❙𝒜[F⇩4]b & ❙Δ[F⇩4]b & ¬❙𝒜[F⇩4]a & ¬❙Δ[F⇩4]a›
7160 using "∃I"(1)[rotated, THEN "∃E"[rotated]]
7161 by fastforce
7162 AOT_hence ‹¬❙𝒜[F⇩4]b› and ‹❙Δ[F⇩4]b› and ‹¬❙𝒜[F⇩4]a› and ‹¬❙Δ[F⇩4]a›
7163 using "&E" by blast+
7164 note props = props this
7165
7166 AOT_modally_strict {
7167 AOT_have ‹[λy q⇩0]↓› by "cqt:2[lambda]"
7168 } note 1 = this
7169 moreover AOT_have ‹¬❙𝒜[λy q⇩0]b & ❙Δ[λy q⇩0]b & ¬❙𝒜[λy q⇩0]a & ❙Δ[λy q⇩0]a›
7170 by (safe intro!: "&I"; AOT_subst ‹[λy q⇩0]b› ‹q⇩0› for: b)
7171 (auto simp: not_act_q_zero delta_q_zero "beta-C-meta"[THEN "→E", OF 1])
7172 ultimately AOT_obtain F⇩5 where ‹¬❙𝒜[F⇩5]b & ❙Δ[F⇩5]b & ¬❙𝒜[F⇩5]a & ❙Δ[F⇩5]a›
7173 using "∃I"(1)[rotated, THEN "∃E"[rotated]]
7174 by fastforce
7175 AOT_hence ‹¬❙𝒜[F⇩5]b› and ‹❙Δ[F⇩5]b› and ‹¬❙𝒜[F⇩5]a› and ‹❙Δ[F⇩5]a›
7176 using "&E" by blast+
7177 note props = props this
7178
7179 let ?Π = "«[λy [E!]y ∨ ([A!]y & ¬q⇩0)]»"
7180 AOT_modally_strict {
7181 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7182 } note 1 = this
7183 moreover AOT_have ‹¬❙𝒜[«?Π»]b & ❙Δ[«?Π»]b & ❙𝒜[«?Π»]a & ¬❙Δ[«?Π»]a›
7184 proof(safe intro!: "&I";
7185 AOT_subst ‹[λy E!y ∨ (A!y & ¬q⇩0)]x› ‹E!x ∨ (A!x & ¬q⇩0)› for: x)
7186 AOT_have ‹❙𝒜¬([A!]b & ¬q⇩0)›
7187 by (metis "Act-Basic:1" "Act-Basic:2" abstract_prop "&E"(1) "∨E"(2)
7188 "≡E"(1) "raa-cor:3")
7189 moreover AOT_have ‹¬❙𝒜[E!]b›
7190 using b_prop "&E"(2) by blast
7191 ultimately AOT_have 2: ‹❙𝒜(¬[E!]b & ¬([A!]b & ¬q⇩0))›
7192 by (metis "Act-Basic:2" "Act-Sub:1" "&I" "≡E"(3) "raa-cor:1")
7193 AOT_have ‹❙𝒜¬([E!]b ∨ ([A!]b & ¬q⇩0))›
7194 by (AOT_subst ‹¬([E!]b ∨ ([A!]b & ¬q⇩0))› ‹¬[E!]b & ¬([A!]b & ¬q⇩0)›)
7195 (auto simp: "oth-class-taut:5:d" 2)
7196 AOT_thus ‹¬❙𝒜([E!]b ∨ ([A!]b & ¬q⇩0))›
7197 by (metis "¬¬I" "Act-Sub:1" "≡E"(4))
7198 next
7199 AOT_show ‹❙Δ([E!]b ∨ ([A!]b & ¬q⇩0))›
7200 proof (rule not_act_and_pos_delta)
7201 AOT_show ‹¬❙𝒜([E!]b ∨ ([A!]b & ¬q⇩0))›
7202 by (metis "Act-Basic:2" "Act-Basic:9" "∨E"(2) "raa-cor:3"
7203 "Conjunction Simplification"(1) "≡E"(4)
7204 "modus-tollens:1" not_act_abs_b not_act_concrete_b)
7205 next
7206 AOT_show ‹◇([E!]b ∨ ([A!]b & ¬q⇩0))›
7207 using "KBasic2:2" b_prop "&E"(1) "∨I"(1) "≡E"(3) "raa-cor:3" by blast
7208 qed
7209 next AOT_show ‹❙𝒜([E!]a ∨ ([A!]a & ¬q⇩0))›
7210 by (metis "Act-Basic:1" "Act-Basic:2" "Act-Basic:9" act_abs_a "&I"
7211 "∨I"(2) "∨E"(2) "≡E"(3) not_act_q_zero "raa-cor:1")
7212 next AOT_show ‹¬❙Δ([E!]a ∨ ([A!]a & ¬q⇩0))›
7213 proof (rule act_and_not_nec_not_delta)
7214 AOT_show ‹❙𝒜([E!]a ∨ ([A!]a & ¬q⇩0))›
7215 by (metis "Act-Basic:1" "Act-Basic:2" "Act-Basic:9" act_abs_a "&I"
7216 "∨I"(2) "∨E"(2) "≡E"(3) not_act_q_zero "raa-cor:1")
7217 next
7218 AOT_have ‹□¬[E!]a›
7219 by (metis "≡⇩d⇩fI" "conventions:5" "&I" "∨I"(2)
7220 necessary_or_contingently_false
7221 not_act_concrete_a not_delta_concrete_a "raa-cor:3")
7222 moreover AOT_have ‹◇¬([A!]a & ¬q⇩0)›
7223 by (metis "KBasic2:1" "KBasic:11" "KBasic:3"
7224 "&E"(1,2) "≡E"(1) q⇩0_prop "raa-cor:3")
7225 ultimately AOT_have ‹◇(¬[E!]a & ¬([A!]a & ¬q⇩0))›
7226 by (metis "KBasic:16" "&I" "vdash-properties:10")
7227 AOT_hence ‹◇¬([E!]a ∨ ([A!]a & ¬q⇩0))›
7228 by (metis "RE◇" "≡E"(2) "oth-class-taut:5:d")
7229 AOT_thus ‹¬□([E!]a ∨ ([A!]a & ¬q⇩0))›
7230 by (metis "KBasic:12" "≡E"(1) "raa-cor:3")
7231 qed
7232 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7233 ultimately AOT_obtain F⇩6 where ‹¬❙𝒜[F⇩6]b & ❙Δ[F⇩6]b & ❙𝒜[F⇩6]a & ¬❙Δ[F⇩6]a›
7234 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7235 AOT_hence ‹¬❙𝒜[F⇩6]b› and ‹❙Δ[F⇩6]b› and ‹❙𝒜[F⇩6]a› and ‹¬❙Δ[F⇩6]a›
7236 using "&E" by blast+
7237 note props = props this
7238
7239 let ?Π = "«[λy [A!]y ∨ [E!]y]»"
7240 AOT_modally_strict {
7241 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7242 } note 1 = this
7243 moreover AOT_have ‹¬❙𝒜[«?Π»]b & ❙Δ[«?Π»]b & ❙𝒜[«?Π»]a & ❙Δ[«?Π»]a›
7244 proof(safe intro!: "&I"; AOT_subst ‹[λy A!y ∨ E!y]x› ‹A!x ∨ E!x› for: x)
7245 AOT_show ‹¬❙𝒜([A!]b ∨ [E!]b)›
7246 using "Act-Basic:9" "∨E"(2) "≡E"(4) not_act_abs_b
7247 not_act_concrete_b "raa-cor:3" by blast
7248 next AOT_show ‹❙Δ([A!]b ∨ [E!]b)›
7249 proof (rule not_act_and_pos_delta)
7250 AOT_show ‹¬❙𝒜([A!]b ∨ [E!]b)›
7251 using "Act-Basic:9" "∨E"(2) "≡E"(4) not_act_abs_b
7252 not_act_concrete_b "raa-cor:3" by blast
7253 next AOT_show ‹◇([A!]b ∨ [E!]b)›
7254 using "KBasic2:2" b_prop "&E"(1) "∨I"(2) "≡E"(2) by blast
7255 qed
7256 next AOT_show ‹❙𝒜([A!]a ∨ [E!]a)›
7257 by (meson "Act-Basic:9" act_abs_a "∨I"(1) "≡E"(2))
7258 next AOT_show ‹❙Δ([A!]a ∨ [E!]a) ›
7259 proof (rule nec_delta)
7260 AOT_show ‹□([A!]a ∨ [E!]a)›
7261 by (metis "KBasic:15" act_abs_a act_and_not_nec_not_delta
7262 "Disjunction Addition"(1) delta_abs_a "raa-cor:3" "→E")
7263 qed
7264 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7265 ultimately AOT_obtain F⇩7 where ‹¬❙𝒜[F⇩7]b & ❙Δ[F⇩7]b & ❙𝒜[F⇩7]a & ❙Δ[F⇩7]a›
7266 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7267 AOT_hence ‹¬❙𝒜[F⇩7]b› and ‹❙Δ[F⇩7]b› and ‹❙𝒜[F⇩7]a› and ‹❙Δ[F⇩7]a›
7268 using "&E" by blast+
7269 note props = props this
7270
7271 let ?Π = "«[λy [O!]y & ¬[E!]y]»"
7272 AOT_modally_strict {
7273 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7274 } note 1 = this
7275 moreover AOT_have ‹❙𝒜[«?Π»]b & ¬❙Δ[«?Π»]b & ¬❙𝒜[«?Π»]a & ¬❙Δ[«?Π»]a›
7276 proof(safe intro!: "&I"; AOT_subst ‹[λy O!y & ¬E!y]x› ‹O!x & ¬E!x› for: x)
7277 AOT_show ‹❙𝒜([O!]b & ¬[E!]b)›
7278 by (metis "Act-Basic:1" "Act-Basic:2" act_ord_b "&I" "∨E"(2)
7279 "≡E"(3) not_act_concrete_b "raa-cor:3")
7280 next AOT_show ‹¬❙Δ([O!]b & ¬[E!]b)›
7281 by (metis (no_types, opaque_lifting) "conventions:5" "Act-Sub:1" "RM:1"
7282 act_and_not_nec_not_delta "act-conj-act:3"
7283 act_ord_b b_prop "&I" "&E"(1) "Conjunction Simplification"(2)
7284 "df-rules-formulas[3]"
7285 "≡E"(3) "raa-cor:1" "→E")
7286 next AOT_show ‹¬❙𝒜([O!]a & ¬[E!]a)›
7287 using "Act-Basic:2" "&E"(1) "≡E"(1) not_act_ord_a "raa-cor:3" by blast
7288 next AOT_have ‹¬◇([O!]a & ¬[E!]a)›
7289 by (metis "KBasic2:3" "&E"(1) "≡E"(4) not_act_ord_a "oa-facts:3"
7290 "oa-facts:7" "raa-cor:3" "vdash-properties:10")
7291 AOT_thus ‹¬❙Δ([O!]a & ¬[E!]a)›
7292 by (rule impossible_delta)
7293 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7294 ultimately AOT_obtain F⇩8 where ‹❙𝒜[F⇩8]b & ¬❙Δ[F⇩8]b & ¬❙𝒜[F⇩8]a & ¬❙Δ[F⇩8]a›
7295 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7296 AOT_hence ‹❙𝒜[F⇩8]b› and ‹¬❙Δ[F⇩8]b› and ‹¬❙𝒜[F⇩8]a› and ‹¬❙Δ[F⇩8]a›
7297 using "&E" by blast+
7298 note props = props this
7299
7300 let ?Π = "«[λy ¬[E!]y & ([O!]y ∨ q⇩0)]»"
7301 AOT_modally_strict {
7302 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7303 } note 1 = this
7304 moreover AOT_have ‹❙𝒜[«?Π»]b & ¬❙Δ[«?Π»]b & ¬❙𝒜[«?Π»]a & ❙Δ[«?Π»]a›
7305 proof(safe intro!: "&I";
7306 AOT_subst ‹[λy ¬E!y & (O!y ∨ q⇩0)]x› ‹¬E!x & (O!x ∨ q⇩0)› for: x)
7307 AOT_show ‹❙𝒜(¬[E!]b & ([O!]b ∨ q⇩0))›
7308 by (metis "Act-Basic:1" "Act-Basic:2" "Act-Basic:9" act_ord_b "&I"
7309 "∨I"(1) "∨E"(2) "≡E"(3) not_act_concrete_b "raa-cor:1")
7310 next AOT_show ‹¬❙Δ(¬[E!]b & ([O!]b ∨ q⇩0))›
7311 proof (rule act_and_pos_not_not_delta)
7312 AOT_show ‹❙𝒜(¬[E!]b & ([O!]b ∨ q⇩0))›
7313 by (metis "Act-Basic:1" "Act-Basic:2" "Act-Basic:9" act_ord_b "&I"
7314 "∨I"(1) "∨E"(2) "≡E"(3) not_act_concrete_b "raa-cor:1")
7315 next
7316 AOT_show ‹◇¬(¬[E!]b & ([O!]b ∨ q⇩0))›
7317 proof (AOT_subst ‹¬(¬[E!]b & ([O!]b ∨ q⇩0))› ‹[E!]b ∨ ¬([O!]b ∨ q⇩0)›)
7318 AOT_modally_strict {
7319 AOT_show ‹¬(¬[E!]b & ([O!]b ∨ q⇩0)) ≡ [E!]b ∨ ¬([O!]b ∨ q⇩0)›
7320 by (metis "&I" "&E"(1,2) "∨I"(1,2) "∨E"(2)
7321 "→I" "≡I" "reductio-aa:1")
7322 }
7323 next
7324 AOT_show ‹◇([E!]b ∨ ¬([O!]b ∨ q⇩0))›
7325 using "KBasic2:2" b_prop "&E"(1) "∨I"(1) "≡E"(3)
7326 "raa-cor:3" by blast
7327 qed
7328 qed
7329 next
7330 AOT_show ‹¬❙𝒜(¬[E!]a & ([O!]a ∨ q⇩0))›
7331 using "Act-Basic:2" "Act-Basic:9" "&E"(2) "∨E"(3) "≡E"(1)
7332 not_act_ord_a not_act_q_zero "reductio-aa:2" by blast
7333 next
7334 AOT_show ‹❙Δ(¬[E!]a & ([O!]a ∨ q⇩0))›
7335 proof (rule not_act_and_pos_delta)
7336 AOT_show ‹¬❙𝒜(¬[E!]a & ([O!]a ∨ q⇩0))›
7337 by (metis "Act-Basic:2" "Act-Basic:9" "&E"(2) "∨E"(3) "≡E"(1)
7338 not_act_ord_a not_act_q_zero "reductio-aa:2")
7339 next
7340 AOT_have ‹□¬[E!]a›
7341 using "KBasic2:1" "≡E"(2) not_act_and_pos_delta not_act_concrete_a
7342 not_delta_concrete_a "raa-cor:5" by blast
7343 moreover AOT_have ‹◇([O!]a ∨ q⇩0)›
7344 by (metis "KBasic2:2" "&E"(1) "∨I"(2) "≡E"(3) q⇩0_prop "raa-cor:3")
7345 ultimately AOT_show ‹◇(¬[E!]a & ([O!]a ∨ q⇩0))›
7346 by (metis "KBasic:16" "&I" "vdash-properties:10")
7347 qed
7348 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7349 ultimately AOT_obtain F⇩9 where ‹❙𝒜[F⇩9]b & ¬❙Δ[F⇩9]b & ¬❙𝒜[F⇩9]a & ❙Δ[F⇩9]a›
7350 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7351 AOT_hence ‹❙𝒜[F⇩9]b› and ‹¬❙Δ[F⇩9]b› and ‹¬❙𝒜[F⇩9]a› and ‹❙Δ[F⇩9]a›
7352 using "&E" by blast+
7353 note props = props this
7354
7355 AOT_modally_strict {
7356 AOT_have ‹[λy ¬q⇩0]↓› by "cqt:2[lambda]"
7357 } note 1 = this
7358 moreover AOT_have ‹❙𝒜[λy ¬q⇩0]b & ¬❙Δ[λy ¬q⇩0]b & ❙𝒜[λy ¬q⇩0]a & ¬❙Δ[λy ¬q⇩0]a›
7359 by (safe intro!: "&I"; AOT_subst ‹[λy ¬q⇩0]x› ‹¬q⇩0› for: x)
7360 (auto simp: act_not_q_zero not_delta_not_q_zero
7361 "beta-C-meta"[THEN "→E", OF 1])
7362 ultimately AOT_obtain F⇩1⇩0 where ‹❙𝒜[F⇩1⇩0]b & ¬❙Δ[F⇩1⇩0]b & ❙𝒜[F⇩1⇩0]a & ¬❙Δ[F⇩1⇩0]a›
7363 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7364 AOT_hence ‹❙𝒜[F⇩1⇩0]b› and ‹¬❙Δ[F⇩1⇩0]b› and ‹❙𝒜[F⇩1⇩0]a› and ‹¬❙Δ[F⇩1⇩0]a›
7365 using "&E" by blast+
7366 note props = props this
7367
7368 AOT_modally_strict {
7369 AOT_have ‹[λy ¬[E!]y]↓› by "cqt:2[lambda]"
7370 } note 1 = this
7371 moreover AOT_have ‹❙𝒜[λy ¬[E!]y]b & ¬❙Δ[λy ¬[E!]y]b &
7372 ❙𝒜[λy ¬[E!]y]a & ❙Δ[λy ¬[E!]y]a›
7373 proof (safe intro!: "&I"; AOT_subst ‹[λy ¬[E!]y]x› ‹¬[E!]x› for: x)
7374 AOT_show ‹❙𝒜¬[E!]b›
7375 using "Act-Basic:1" "∨E"(2) not_act_concrete_b by blast
7376 next AOT_show ‹¬❙Δ¬[E!]b›
7377 using "≡⇩d⇩fE" "conventions:5" "Act-Basic:1" act_and_not_nec_not_delta
7378 b_prop "&E"(1) "∨E"(2) not_act_concrete_b by blast
7379 next AOT_show ‹❙𝒜¬[E!]a›
7380 using "Act-Basic:1" "∨E"(2) not_act_concrete_a by blast
7381 next AOT_show ‹❙Δ¬[E!]a›
7382 using "KBasic2:1" "≡E"(2) nec_delta not_act_and_pos_delta
7383 not_act_concrete_a not_delta_concrete_a "reductio-aa:1"
7384 by blast
7385 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7386 ultimately AOT_obtain F⇩1⇩1 where ‹❙𝒜[F⇩1⇩1]b & ¬❙Δ[F⇩1⇩1]b & ❙𝒜[F⇩1⇩1]a & ❙Δ[F⇩1⇩1]a›
7387 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7388 AOT_hence ‹❙𝒜[F⇩1⇩1]b› and ‹¬❙Δ[F⇩1⇩1]b› and ‹❙𝒜[F⇩1⇩1]a› and ‹❙Δ[F⇩1⇩1]a›
7389 using "&E" by blast+
7390 note props = props this
7391
7392 AOT_have ‹❙𝒜[O!]b & ❙Δ[O!]b & ¬❙𝒜[O!]a & ¬❙Δ[O!]a›
7393 by (simp add: act_ord_b "&I" delta_ord_b not_act_ord_a not_delta_ord_a)
7394 then AOT_obtain F⇩1⇩2 where ‹❙𝒜[F⇩1⇩2]b & ❙Δ[F⇩1⇩2]b & ¬❙𝒜[F⇩1⇩2]a & ¬❙Δ[F⇩1⇩2]a›
7395 using "oa-exist:1" "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7396 AOT_hence ‹❙𝒜[F⇩1⇩2]b› and ‹❙Δ[F⇩1⇩2]b› and ‹¬❙𝒜[F⇩1⇩2]a› and ‹¬❙Δ[F⇩1⇩2]a›
7397 using "&E" by blast+
7398 note props = props this
7399
7400 let ?Π = "«[λy [O!]y ∨ q⇩0]»"
7401 AOT_modally_strict {
7402 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7403 } note 1 = this
7404 moreover AOT_have ‹❙𝒜[«?Π»]b & ❙Δ[«?Π»]b & ¬❙𝒜[«?Π»]a & ❙Δ[«?Π»]a›
7405 proof (safe intro!: "&I"; AOT_subst ‹[λy O!y ∨ q⇩0]x› ‹O!x ∨ q⇩0› for: x)
7406 AOT_show ‹❙𝒜([O!]b ∨ q⇩0)›
7407 by (meson "Act-Basic:9" act_ord_b "∨I"(1) "≡E"(2))
7408 next AOT_show ‹❙Δ([O!]b ∨ q⇩0)›
7409 by (meson "KBasic:15" b_ord "∨I"(1) nec_delta "oa-facts:1" "→E")
7410 next AOT_show ‹¬❙𝒜([O!]a ∨ q⇩0)›
7411 using "Act-Basic:9" "∨E"(2) "≡E"(4) not_act_ord_a
7412 not_act_q_zero "raa-cor:3" by blast
7413 next AOT_show ‹❙Δ([O!]a ∨ q⇩0)›
7414 proof (rule not_act_and_pos_delta)
7415 AOT_show ‹¬❙𝒜([O!]a ∨ q⇩0)›
7416 using "Act-Basic:9" "∨E"(2) "≡E"(4) not_act_ord_a
7417 not_act_q_zero "raa-cor:3" by blast
7418 next AOT_show ‹◇([O!]a ∨ q⇩0)›
7419 using "KBasic2:2" "&E"(1) "∨I"(2) "≡E"(2) q⇩0_prop by blast
7420 qed
7421 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7422 ultimately AOT_obtain F⇩1⇩3 where ‹❙𝒜[F⇩1⇩3]b & ❙Δ[F⇩1⇩3]b & ¬❙𝒜[F⇩1⇩3]a & ❙Δ[F⇩1⇩3]a›
7423 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7424 AOT_hence ‹❙𝒜[F⇩1⇩3]b› and ‹❙Δ[F⇩1⇩3]b› and ‹¬❙𝒜[F⇩1⇩3]a› and ‹❙Δ[F⇩1⇩3]a›
7425 using "&E" by blast+
7426 note props = props this
7427
7428 let ?Π = "«[λy [O!]y ∨ ¬q⇩0]»"
7429 AOT_modally_strict {
7430 AOT_have ‹[«?Π»]↓› by "cqt:2[lambda]"
7431 } note 1 = this
7432 moreover AOT_have ‹❙𝒜[«?Π»]b & ❙Δ[«?Π»]b & ❙𝒜[«?Π»]a & ¬❙Δ[«?Π»]a›
7433 proof (safe intro!: "&I"; AOT_subst ‹[λy O!y ∨ ¬q⇩0]x› ‹O!x ∨ ¬q⇩0› for: x)
7434 AOT_show ‹❙𝒜([O!]b ∨ ¬q⇩0)›
7435 by (meson "Act-Basic:9" act_not_q_zero "∨I"(2) "≡E"(2))
7436 next AOT_show ‹❙Δ([O!]b ∨ ¬q⇩0)›
7437 by (meson "KBasic:15" b_ord "∨I"(1) nec_delta "oa-facts:1" "→E")
7438 next AOT_show ‹❙𝒜([O!]a ∨ ¬q⇩0)›
7439 by (meson "Act-Basic:9" act_not_q_zero "∨I"(2) "≡E"(2))
7440 next AOT_show ‹¬❙Δ([O!]a ∨ ¬q⇩0)›
7441 proof(rule act_and_pos_not_not_delta)
7442 AOT_show ‹❙𝒜([O!]a ∨ ¬q⇩0)›
7443 by (meson "Act-Basic:9" act_not_q_zero "∨I"(2) "≡E"(2))
7444 next
7445 AOT_have ‹□¬[O!]a›
7446 using "KBasic2:1" "≡E"(2) not_act_and_pos_delta
7447 not_act_ord_a not_delta_ord_a "raa-cor:6" by blast
7448 moreover AOT_have ‹◇q⇩0›
7449 by (meson "&E"(1) q⇩0_prop)
7450 ultimately AOT_have 2: ‹◇(¬[O!]a & q⇩0)›
7451 by (metis "KBasic:16" "&I" "vdash-properties:10")
7452 AOT_show ‹◇¬([O!]a ∨ ¬q⇩0)›
7453 proof (AOT_subst (reverse) ‹¬([O!]a ∨ ¬q⇩0)› ‹¬[O!]a & q⇩0›)
7454 AOT_modally_strict {
7455 AOT_show ‹¬[O!]a & q⇩0 ≡ ¬([O!]a ∨ ¬q⇩0)›
7456 by (metis "&I" "&E"(1) "&E"(2) "∨I"(1) "∨I"(2)
7457 "∨E"(3) "deduction-theorem" "≡I" "raa-cor:3")
7458 }
7459 next
7460 AOT_show ‹◇(¬[O!]a & q⇩0)›
7461 using "2" by blast
7462 qed
7463 qed
7464 qed(auto simp: "beta-C-meta"[THEN "→E", OF 1])
7465 ultimately AOT_obtain F⇩1⇩4 where ‹❙𝒜[F⇩1⇩4]b & ❙Δ[F⇩1⇩4]b & ❙𝒜[F⇩1⇩4]a & ¬❙Δ[F⇩1⇩4]a›
7466 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7467 AOT_hence ‹❙𝒜[F⇩1⇩4]b› and ‹❙Δ[F⇩1⇩4]b› and ‹❙𝒜[F⇩1⇩4]a› and ‹¬❙Δ[F⇩1⇩4]a›
7468 using "&E" by blast+
7469 note props = props this
7470
7471 AOT_have ‹[L]↓›
7472 by (rule "=⇩d⇩fI"(2)[OF L_def]) "cqt:2[lambda]"+
7473 moreover AOT_have ‹❙𝒜[L]b & ❙Δ[L]b & ❙𝒜[L]a & ❙Δ[L]a›
7474 proof (safe intro!: "&I")
7475 AOT_show ‹❙𝒜[L]b›
7476 by (meson nec_L "nec-imp-act" "vdash-properties:10")
7477 next AOT_show ‹❙Δ[L]b› using nec_L nec_delta by blast
7478 next AOT_show ‹❙𝒜[L]a› by (meson nec_L "nec-imp-act" "→E")
7479 next AOT_show ‹❙Δ[L]a› using nec_L nec_delta by blast
7480 qed
7481 ultimately AOT_obtain F⇩1⇩5 where ‹❙𝒜[F⇩1⇩5]b & ❙Δ[F⇩1⇩5]b & ❙𝒜[F⇩1⇩5]a & ❙Δ[F⇩1⇩5]a›
7482 using "∃I"(1)[rotated, THEN "∃E"[rotated]] by fastforce
7483 AOT_hence ‹❙𝒜[F⇩1⇩5]b› and ‹❙Δ[F⇩1⇩5]b› and ‹❙𝒜[F⇩1⇩5]a› and ‹❙Δ[F⇩1⇩5]a›
7484 using "&E" by blast+
7485 note props = props this
7486
7487 show ?thesis
7488 by (rule "∃I"(2)[where β=F⇩0]; rule "∃I"(2)[where β=F⇩1];
7489 rule "∃I"(2)[where β=F⇩2]; rule "∃I"(2)[where β=F⇩3];
7490 rule "∃I"(2)[where β=F⇩4]; rule "∃I"(2)[where β=F⇩5];
7491 rule "∃I"(2)[where β=F⇩6]; rule "∃I"(2)[where β=F⇩7];
7492 rule "∃I"(2)[where β=F⇩8]; rule "∃I"(2)[where β=F⇩9];
7493 rule "∃I"(2)[where β=F⇩1⇩0]; rule "∃I"(2)[where β=F⇩1⇩1];
7494 rule "∃I"(2)[where β=F⇩1⇩2]; rule "∃I"(2)[where β=F⇩1⇩3];
7495 rule "∃I"(2)[where β=F⇩1⇩4]; rule "∃I"(2)[where β=F⇩1⇩5];
7496 safe intro!: "&I")
7497 (match conclusion in "[?v ⊨ [F] ≠ [G]]" for F G ⇒ ‹
7498 match props in A: "[?v ⊨ ¬φ{F}]" for φ ⇒ ‹
7499 match (φ) in "λa . ?p" ⇒ ‹fail› ¦ "λa . a" ⇒ ‹fail› ¦ _ ⇒ ‹
7500 match props in B: "[?v ⊨ φ{G}]" ⇒ ‹
7501 fact "pos-not-equiv-ne:4"[where F=F and G=G and φ=φ, THEN "→E",
7502 OF "oth-class-taut:4:h"[THEN "≡E"(2)],
7503 OF "Disjunction Addition"(2)[THEN "→E"],
7504 OF "&I", OF A, OF B]››››)+
7505qed
7506
7507subsection‹The Theory of Objects›
7508text‹\label{PLM: 9.11}›
7509
7510AOT_theorem "o-objects-exist:1": ‹□∃x O!x›
7511proof(rule RN)
7512 AOT_modally_strict {
7513 AOT_obtain a where ‹◇(E!a & ¬❙𝒜[E!]a)›
7514 using "∃E"[rotated, OF "qml:4"[axiom_inst, THEN "BF◇"[THEN "→E"]]]
7515 by blast
7516 AOT_hence 1: ‹◇E!a› by (metis "KBasic2:3" "&E"(1) "→E")
7517 AOT_have ‹[λx ◇[E!]x]a›
7518 proof (rule "β←C"(1); "cqt:2[lambda]"?)
7519 AOT_show ‹a↓› using "cqt:2[const_var]"[axiom_inst] by blast
7520 next
7521 AOT_show ‹◇E!a› by (fact 1)
7522 qed
7523 AOT_hence ‹O!a› by (rule "=⇩d⇩fI"(2)[OF AOT_ordinary, rotated]) "cqt:2"
7524 AOT_thus ‹∃x [O!]x› by (rule "∃I")
7525 }
7526qed
7527
7528AOT_theorem "o-objects-exist:2": ‹□∃x A!x›
7529proof (rule RN)
7530 AOT_modally_strict {
7531 AOT_obtain a where ‹[A!]a›
7532 using "A-objects"[axiom_inst] "∃E"[rotated] "&E" by blast
7533 AOT_thus ‹∃x A!x› using "∃I" by blast
7534 }
7535qed
7536
7537AOT_theorem "o-objects-exist:3": ‹□¬∀x O!x›
7538 by (rule RN)
7539 (metis (no_types, opaque_lifting) "∃E" "cqt-orig:1[const_var]"
7540 "≡E"(4) "modus-tollens:1" "o-objects-exist:2" "oa-contingent:2"
7541 "qml:2"[axiom_inst] "reductio-aa:2")
7542
7543AOT_theorem "o-objects-exist:4": ‹□¬∀x A!x›
7544 by (rule RN)
7545 (metis (mono_tags, opaque_lifting) "∃E" "cqt-orig:1[const_var]"
7546 "≡E"(1) "modus-tollens:1" "o-objects-exist:1" "oa-contingent:2"
7547 "qml:2"[axiom_inst] "→E")
7548
7549AOT_theorem "o-objects-exist:5": ‹□¬∀x E!x›
7550proof (rule RN; rule "raa-cor:2")
7551 AOT_modally_strict {
7552 AOT_assume ‹∀x E!x›
7553 moreover AOT_obtain a where abs: ‹A!a›
7554 using "o-objects-exist:2"[THEN "qml:2"[axiom_inst, THEN "→E"]]
7555 "∃E"[rotated] by blast
7556 ultimately AOT_have ‹E!a› using "∀E" by blast
7557 AOT_hence 1: ‹◇E!a› by (metis "T◇" "→E")
7558 AOT_have ‹[λy ◇E!y]a›
7559 proof (rule "β←C"(1); "cqt:2[lambda]"?)
7560 AOT_show ‹a↓› using "cqt:2[const_var]"[axiom_inst].
7561 next
7562 AOT_show ‹◇E!a› by (fact 1)
7563 qed
7564 AOT_hence ‹O!a›
7565 by (rule "=⇩d⇩fI"(2)[OF AOT_ordinary, rotated]) "cqt:2[lambda]"
7566 AOT_hence ‹¬A!a› by (metis "≡E"(1) "oa-contingent:2")
7567 AOT_thus ‹p & ¬p› for p using abs by (metis "raa-cor:3")
7568 }
7569qed
7570
7571AOT_theorem partition: ‹¬∃x (O!x & A!x)›
7572proof(rule "raa-cor:2")
7573 AOT_assume ‹∃x (O!x & A!x)›
7574 then AOT_obtain a where ‹O!a & A!a›
7575 using "∃E"[rotated] by blast
7576 AOT_thus ‹p & ¬p› for p
7577 by (metis "&E"(1) "Conjunction Simplification"(2) "≡E"(1)
7578 "modus-tollens:1" "oa-contingent:2" "raa-cor:3")
7579qed
7580
7581AOT_define eq_E :: ‹Π› ("'(=⇩E')")
7582 "=E": ‹(=⇩E) =⇩d⇩f [λxy O!x & O!y & □∀F ([F]x ≡ [F]y)]›
7583
7584syntax "_AOT_eq_E_infix" :: ‹τ ⇒ τ ⇒ φ› (infixl "=⇩E" 50)
7585translations
7586 "_AOT_eq_E_infix κ κ'" == "CONST AOT_exe (CONST eq_E) (CONST Pair κ κ')"
7587print_translation‹
7588AOT_syntax_print_translations
7589[(\<^const_syntax>‹AOT_exe›, fn ctxt => fn [
7590 Const (\<^const_name>‹eq_E›, _),
7591 Const (\<^const_syntax>‹Pair›, _) $ lhs $ rhs
7592] => Const (\<^syntax_const>‹_AOT_eq_E_infix›, dummyT) $ lhs $ rhs)]›
7593
7594text‹Note: Not explicitly mentioned as theorem in PLM.›
7595AOT_theorem "=E[denotes]": ‹[(=⇩E)]↓›
7596 by (rule "=⇩d⇩fI"(2)[OF "=E"]) "cqt:2[lambda]"+
7597
7598AOT_theorem "=E-simple:1": ‹x =⇩E y ≡ (O!x & O!y & □∀F ([F]x ≡ [F]y))›
7599proof -
7600 AOT_have 1: ‹[λxy [O!]x & [O!]y & □∀F ([F]x ≡ [F]y)]↓› by "cqt:2"
7601 show ?thesis
7602 apply (rule "=⇩d⇩fI"(2)[OF "=E"]; "cqt:2[lambda]"?)
7603 using "beta-C-meta"[THEN "→E", OF 1, unvarify ν⇩1ν⇩n, of "(_,_)",
7604 OF tuple_denotes[THEN "≡⇩d⇩fI"], OF "&I",
7605 OF "cqt:2[const_var]"[axiom_inst],
7606 OF "cqt:2[const_var]"[axiom_inst]]
7607 by fast
7608qed
7609
7610AOT_theorem "=E-simple:2": ‹x =⇩E y → x = y›
7611proof (rule "→I")
7612 AOT_assume ‹x =⇩E y›
7613 AOT_hence ‹O!x & O!y & □∀F ([F]x ≡ [F]y)›
7614 using "=E-simple:1"[THEN "≡E"(1)] by blast
7615 AOT_thus ‹x = y›
7616 using "≡⇩d⇩fI"[OF "identity:1"] "∨I" by blast
7617qed
7618
7619AOT_theorem "id-nec3:1": ‹x =⇩E y ≡ □(x =⇩E y)›
7620proof (rule "≡I"; rule "→I")
7621 AOT_assume ‹x =⇩E y›
7622 AOT_hence ‹O!x & O!y & □∀F ([F]x ≡ [F]y)›
7623 using "=E-simple:1" "≡E" by blast
7624 AOT_hence ‹□O!x & □O!y & □□∀F ([F]x ≡ [F]y)›
7625 by (metis "S5Basic:6" "&I" "&E"(1) "&E"(2) "≡E"(4)
7626 "oa-facts:1" "raa-cor:3" "vdash-properties:10")
7627 AOT_hence ‹□(O!x & O!y & □∀F ([F]x ≡ [F]y))›
7628 by (metis "&E"(1) "&E"(2) "≡E"(2) "KBasic:3" "&I")
7629 AOT_thus ‹□(x =⇩E y)›
7630 using "=E-simple:1"
7631 by (AOT_subst ‹x =⇩E y› ‹O!x & O!y & □∀F ([F]x ≡ [F]y)›) auto
7632next
7633 AOT_assume ‹□(x =⇩E y)›
7634 AOT_thus ‹x =⇩E y› using "qml:2"[axiom_inst, THEN "→E"] by blast
7635qed
7636
7637AOT_theorem "id-nec3:2": ‹◇(x =⇩E y) ≡ x =⇩E y›
7638 by (meson "RE◇" "S5Basic:2" "id-nec3:1" "≡E"(1,5) "Commutativity of ≡")
7639
7640AOT_theorem "id-nec3:3": ‹◇(x =⇩E y) ≡ □(x =⇩E y)›
7641 by (meson "id-nec3:1" "id-nec3:2" "≡E"(5))
7642
7643syntax "_AOT_non_eq_E" :: ‹Π› ("'(≠⇩E')")
7644translations
7645 (Π) "(≠⇩E)" == (Π) "(=⇩E)⇧-"
7646syntax "_AOT_non_eq_E_infix" :: ‹τ ⇒ τ ⇒ φ› (infixl "≠⇩E" 50)
7647translations
7648 "_AOT_non_eq_E_infix κ κ'" ==
7649 "CONST AOT_exe (CONST relation_negation (CONST eq_E)) (CONST Pair κ κ')"
7650print_translation‹
7651AOT_syntax_print_translations
7652[(\<^const_syntax>‹AOT_exe›, fn ctxt => fn [
7653 Const (\<^const_syntax>‹relation_negation›, _) $ Const (\<^const_name>‹eq_E›, _),
7654 Const (\<^const_syntax>‹Pair›, _) $ lhs $ rhs
7655] => Const (\<^syntax_const>‹_AOT_non_eq_E_infix›, dummyT) $ lhs $ rhs)]›
7656AOT_theorem "thm-neg=E": ‹x ≠⇩E y ≡ ¬(x =⇩E y)›
7657proof -
7658 AOT_have θ: ‹[λx⇩1...x⇩2 ¬(=⇩E)x⇩1...x⇩2]↓› by "cqt:2"
7659 AOT_have ‹x ≠⇩E y ≡ [λx⇩1...x⇩2 ¬(=⇩E)x⇩1...x⇩2]xy›
7660 by (rule "=⇩d⇩fI"(1)[OF "df-relation-negation", OF θ])
7661 (meson "oth-class-taut:3:a")
7662 also AOT_have ‹… ≡ ¬(=⇩E)xy›
7663 by (safe intro!: "beta-C-meta"[THEN "→E", unvarify ν⇩1ν⇩n] "cqt:2"
7664 tuple_denotes[THEN "≡⇩d⇩fI"] "&I")
7665 finally show ?thesis.
7666qed
7667
7668AOT_theorem "id-nec4:1": ‹x ≠⇩E y ≡ □(x ≠⇩E y)›
7669proof -
7670 AOT_have ‹x ≠⇩E y ≡ ¬(x =⇩E y)› using "thm-neg=E".
7671 also AOT_have ‹… ≡ ¬◇(x =⇩E y)›
7672 by (meson "id-nec3:2" "≡E"(1) "Commutativity of ≡" "oth-class-taut:4:b")
7673 also AOT_have ‹… ≡ □¬(x =⇩E y)›
7674 by (meson "KBasic2:1" "≡E"(2) "Commutativity of ≡")
7675 also AOT_have ‹… ≡ □(x ≠⇩E y)›
7676 by (AOT_subst (reverse) ‹¬(x =⇩E y)› ‹x ≠⇩E y›)
7677 (auto simp: "thm-neg=E" "oth-class-taut:3:a")
7678 finally show ?thesis.
7679qed
7680
7681AOT_theorem "id-nec4:2": ‹◇(x ≠⇩E y) ≡ (x ≠⇩E y)›
7682 by (meson "RE◇" "S5Basic:2" "id-nec4:1" "≡E"(2,5) "Commutativity of ≡")
7683
7684AOT_theorem "id-nec4:3": ‹◇(x ≠⇩E y) ≡ □(x ≠⇩E y)›
7685 by (meson "id-nec4:1" "id-nec4:2" "≡E"(5))
7686
7687AOT_theorem "id-act2:1": ‹x =⇩E y ≡ ❙𝒜x =⇩E y›
7688 by (meson "Act-Basic:5" "Act-Sub:2" "RA[2]" "id-nec3:2" "≡E"(1,6))
7689AOT_theorem "id-act2:2": ‹x ≠⇩E y ≡ ❙𝒜x ≠⇩E y›
7690 by (meson "Act-Basic:5" "Act-Sub:2" "RA[2]" "id-nec4:2" "≡E"(1,6))
7691
7692AOT_theorem "ord=Eequiv:1": ‹O!x → x =⇩E x›
7693proof (rule "→I")
7694 AOT_assume 1: ‹O!x›
7695 AOT_show ‹x =⇩E x›
7696 apply (rule "=⇩d⇩fI"(2)[OF "=E"]) apply "cqt:2[lambda]"
7697 apply (rule "β←C"(1))
7698 apply "cqt:2[lambda]"
7699 apply (simp add: "&I" "cqt:2[const_var]"[axiom_inst] prod_denotesI)
7700 by (simp add: "1" RN "&I" "oth-class-taut:3:a" "universal-cor")
7701qed
7702
7703AOT_theorem "ord=Eequiv:2": ‹x =⇩E y → y =⇩E x›
7704proof(rule CP)
7705 AOT_assume 1: ‹x =⇩E y›
7706 AOT_hence 2: ‹x = y› by (metis "=E-simple:2" "vdash-properties:10")
7707 AOT_have ‹O!x› using 1 by (meson "&E"(1) "=E-simple:1" "≡E"(1))
7708 AOT_hence ‹x =⇩E x› using "ord=Eequiv:1" "→E" by blast
7709 AOT_thus ‹y =⇩E x› using "rule=E"[rotated, OF 2] by fast
7710qed
7711
7712AOT_theorem "ord=Eequiv:3": ‹(x =⇩E y & y =⇩E z) → x =⇩E z›
7713proof (rule CP)
7714 AOT_assume 1: ‹x =⇩E y & y =⇩E z›
7715 AOT_hence ‹x = y & y = z›
7716 by (metis "&I" "&E"(1) "&E"(2) "=E-simple:2" "vdash-properties:6")
7717 AOT_hence ‹x = z› by (metis "id-eq:3" "vdash-properties:6")
7718 moreover AOT_have ‹x =⇩E x›
7719 using 1[THEN "&E"(1)] "&E"(1) "=E-simple:1" "≡E"(1)
7720 "ord=Eequiv:1" "→E" by blast
7721 ultimately AOT_show ‹x =⇩E z›
7722 using "rule=E" by fast
7723qed
7724
7725AOT_theorem "ord-=E=:1": ‹(O!x ∨ O!y) → □(x = y ≡ x =⇩E y)›
7726proof(rule CP)
7727 AOT_assume ‹O!x ∨ O!y›
7728 moreover {
7729 AOT_assume ‹O!x›
7730 AOT_hence ‹□O!x› by (metis "oa-facts:1" "vdash-properties:10")
7731 moreover {
7732 AOT_modally_strict {
7733 AOT_have ‹O!x → (x = y ≡ x =⇩E y)›
7734 proof (rule "→I"; rule "≡I"; rule "→I")
7735 AOT_assume ‹O!x›
7736 AOT_hence ‹x =⇩E x› by (metis "ord=Eequiv:1" "→E")
7737 moreover AOT_assume ‹x = y›
7738 ultimately AOT_show ‹x =⇩E y› using "rule=E" by fast
7739 next
7740 AOT_assume ‹x =⇩E y›
7741 AOT_thus ‹x = y› by (metis "=E-simple:2" "→E")
7742 qed
7743 }
7744 AOT_hence ‹□O!x → □(x = y ≡ x =⇩E y)› by (metis "RM:1")
7745 }
7746 ultimately AOT_have ‹□(x = y ≡ x =⇩E y)› using "→E" by blast
7747 }
7748 moreover {
7749 AOT_assume ‹O!y›
7750 AOT_hence ‹□O!y› by (metis "oa-facts:1" "vdash-properties:10")
7751 moreover {
7752 AOT_modally_strict {
7753 AOT_have ‹O!y → (x = y ≡ x =⇩E y)›
7754 proof (rule "→I"; rule "≡I"; rule "→I")
7755 AOT_assume ‹O!y›
7756 AOT_hence ‹y =⇩E y› by (metis "ord=Eequiv:1" "→E")
7757 moreover AOT_assume ‹x = y›
7758 ultimately AOT_show ‹x =⇩E y› using "rule=E" id_sym by fast
7759 next
7760 AOT_assume ‹x =⇩E y›
7761 AOT_thus ‹x = y› by (metis "=E-simple:2" "→E")
7762 qed
7763 }
7764 AOT_hence ‹□O!y → □(x = y ≡ x =⇩E y)› by (metis "RM:1")
7765 }
7766 ultimately AOT_have ‹□(x = y ≡ x =⇩E y)› using "→E" by blast
7767 }
7768 ultimately AOT_show ‹□(x = y ≡ x =⇩E y)› by (metis "∨E"(3) "raa-cor:1")
7769qed
7770
7771AOT_theorem "ord-=E=:2": ‹O!y → [λx x = y]↓›
7772proof (rule "→I"; rule "safe-ext"[axiom_inst, THEN "→E"]; rule "&I")
7773 AOT_show ‹[λx x =⇩E y]↓› by "cqt:2[lambda]"
7774next
7775 AOT_assume ‹O!y›
7776 AOT_hence 1: ‹□(x = y ≡ x =⇩E y)› for x
7777 using "ord-=E=:1" "→E" "∨I" by blast
7778 AOT_have ‹□(x =⇩E y ≡ x = y)› for x
7779 by (AOT_subst ‹x =⇩E y ≡ x = y› ‹x = y ≡ x =⇩E y›)
7780 (auto simp add: "Commutativity of ≡" 1)
7781 AOT_hence ‹∀x □(x =⇩E y ≡ x = y)› by (rule GEN)
7782 AOT_thus ‹□∀x (x =⇩E y ≡ x = y)› by (rule BF[THEN "→E"])
7783qed
7784
7785
7786AOT_theorem "ord-=E=:3": ‹[λxy O!x & O!y & x = y]↓›
7787proof (rule "safe-ext[2]"[axiom_inst, THEN "→E"]; rule "&I")
7788 AOT_show ‹[λxy O!x & O!y & x =⇩E y]↓› by "cqt:2[lambda]"
7789next
7790 AOT_show ‹□∀x∀y ([O!]x & [O!]y & x =⇩E y ≡ [O!]x & [O!]y & x = y)›
7791 proof (rule RN; rule GEN; rule GEN; rule "≡I"; rule "→I")
7792 AOT_modally_strict {
7793 AOT_show ‹[O!]x & [O!]y & x = y› if ‹[O!]x & [O!]y & x =⇩E y› for x y
7794 by (metis "&I" "&E"(1) "Conjunction Simplification"(2) "=E-simple:2"
7795 "modus-tollens:1" "raa-cor:1" that)
7796 }
7797 next
7798 AOT_modally_strict {
7799 AOT_show ‹[O!]x & [O!]y & x =⇩E y› if ‹[O!]x & [O!]y & x = y› for x y
7800 apply(safe intro!: "&I")
7801 apply (metis that[THEN "&E"(1), THEN "&E"(1)])
7802 apply (metis that[THEN "&E"(1), THEN "&E"(2)])
7803 using "rule=E"[rotated, OF that[THEN "&E"(2)]]
7804 "ord=Eequiv:1"[THEN "→E", OF that[THEN "&E"(1), THEN "&E"(1)]]
7805 by fast
7806 }
7807 qed
7808qed
7809
7810AOT_theorem "ind-nec": ‹∀F ([F]x ≡ [F]y) → □∀F ([F]x ≡ [F]y)›
7811proof(rule "→I")
7812 AOT_assume ‹∀F ([F]x ≡ [F]y)›
7813 moreover AOT_have ‹[λx □∀F ([F]x ≡ [F]y)]↓› by "cqt:2[lambda]"
7814 ultimately AOT_have ‹[λx □∀F ([F]x ≡ [F]y)]x ≡ [λx □∀F ([F]x ≡ [F]y)]y›
7815 using "∀E" by blast
7816 moreover AOT_have ‹[λx □∀F ([F]x ≡ [F]y)]y›
7817 apply (rule "β←C"(1))
7818 apply "cqt:2[lambda]"
7819 apply (fact "cqt:2[const_var]"[axiom_inst])
7820 by (simp add: RN GEN "oth-class-taut:3:a")
7821 ultimately AOT_have ‹[λx □∀F ([F]x ≡ [F]y)]x› using "≡E" by blast
7822 AOT_thus ‹□∀F ([F]x ≡ [F]y)›
7823 using "β→C"(1) by blast
7824qed
7825
7826AOT_theorem "ord=E:1": ‹(O!x & O!y) → (∀F ([F]x ≡ [F]y) → x =⇩E y)›
7827proof (rule "→I"; rule "→I")
7828 AOT_assume ‹∀F ([F]x ≡ [F]y)›
7829 AOT_hence ‹□∀F ([F]x ≡ [F]y)›
7830 using "ind-nec"[THEN "→E"] by blast
7831 moreover AOT_assume ‹O!x & O!y›
7832 ultimately AOT_have ‹O!x & O!y & □∀F ([F]x ≡ [F]y)›
7833 using "&I" by blast
7834 AOT_thus ‹x =⇩E y› using "=E-simple:1"[THEN "≡E"(2)] by blast
7835qed
7836
7837AOT_theorem "ord=E:2": ‹(O!x & O!y) → (∀F ([F]x ≡ [F]y) → x = y)›
7838proof (rule "→I"; rule "→I")
7839 AOT_assume ‹O!x & O!y›
7840 moreover AOT_assume ‹∀F ([F]x ≡ [F]y)›
7841 ultimately AOT_have ‹x =⇩E y›
7842 using "ord=E:1" "→E" by blast
7843 AOT_thus ‹x = y› using "=E-simple:2"[THEN "→E"] by blast
7844qed
7845
7846AOT_theorem "ord=E2:1":
7847 ‹(O!x & O!y) → (x ≠ y ≡ [λz z =⇩E x] ≠ [λz z =⇩E y])›
7848proof (rule "→I"; rule "≡I"; rule "→I";
7849 rule "≡⇩d⇩fI"[OF "=-infix"]; rule "raa-cor:2")
7850 AOT_assume 0: ‹O!x & O!y›
7851 AOT_assume ‹x ≠ y›
7852 AOT_hence 1: ‹¬(x = y)› using "≡⇩d⇩fE"[OF "=-infix"] by blast
7853 AOT_assume ‹[λz z =⇩E x] = [λz z =⇩E y]›
7854 moreover AOT_have ‹[λz z =⇩E x]x›
7855 apply (rule "β←C"(1))
7856 apply "cqt:2[lambda]"
7857 apply (fact "cqt:2[const_var]"[axiom_inst])
7858 using "ord=Eequiv:1"[THEN "→E", OF 0[THEN "&E"(1)]].
7859 ultimately AOT_have ‹[λz z =⇩E y]x› using "rule=E" by fast
7860 AOT_hence ‹x =⇩E y› using "β→C"(1) by blast
7861 AOT_hence ‹x = y› by (metis "=E-simple:2" "vdash-properties:6")
7862 AOT_thus ‹x = y & ¬(x = y)› using 1 "&I" by blast
7863next
7864 AOT_assume ‹[λz z =⇩E x] ≠ [λz z =⇩E y]›
7865 AOT_hence 0: ‹¬([λz z =⇩E x] = [λz z =⇩E y])›
7866 using "≡⇩d⇩fE"[OF "=-infix"] by blast
7867 AOT_have ‹[λz z =⇩E x]↓› by "cqt:2[lambda]"
7868 AOT_hence ‹[λz z =⇩E x] = [λz z =⇩E x]›
7869 by (metis "rule=I:1")
7870 moreover AOT_assume ‹x = y›
7871 ultimately AOT_have ‹[λz z =⇩E x] = [λz z =⇩E y]›
7872 using "rule=E" by fast
7873 AOT_thus ‹[λz z =⇩E x] = [λz z =⇩E y] & ¬([λz z =⇩E x] = [λz z =⇩E y])›
7874 using 0 "&I" by blast
7875qed
7876
7877AOT_theorem "ord=E2:2":
7878 ‹(O!x & O!y) → (x ≠ y ≡ [λz z = x] ≠ [λz z = y])›
7879proof (rule "→I"; rule "≡I"; rule "→I";
7880 rule "≡⇩d⇩fI"[OF "=-infix"]; rule "raa-cor:2")
7881 AOT_assume 0: ‹O!x & O!y›
7882 AOT_assume ‹x ≠ y›
7883 AOT_hence 1: ‹¬(x = y)› using "≡⇩d⇩fE"[OF "=-infix"] by blast
7884 AOT_assume ‹[λz z = x] = [λz z = y]›
7885 moreover AOT_have ‹[λz z = x]x›
7886 apply (rule "β←C"(1))
7887 apply (fact "ord-=E=:2"[THEN "→E", OF 0[THEN "&E"(1)]])
7888 apply (fact "cqt:2[const_var]"[axiom_inst])
7889 by (simp add: "id-eq:1")
7890 ultimately AOT_have ‹[λz z = y]x› using "rule=E" by fast
7891 AOT_hence ‹x = y› using "β→C"(1) by blast
7892 AOT_thus ‹x = y & ¬(x = y)› using 1 "&I" by blast
7893next
7894 AOT_assume 0: ‹O!x & O!y›
7895 AOT_assume ‹[λz z = x] ≠ [λz z = y]›
7896 AOT_hence 1: ‹¬([λz z = x] = [λz z = y])›
7897 using "≡⇩d⇩fE"[OF "=-infix"] by blast
7898 AOT_have ‹[λz z = x]↓›
7899 by (fact "ord-=E=:2"[THEN "→E", OF 0[THEN "&E"(1)]])
7900 AOT_hence ‹[λz z = x] = [λz z = x]›
7901 by (metis "rule=I:1")
7902 moreover AOT_assume ‹x = y›
7903 ultimately AOT_have ‹[λz z = x] = [λz z = y]›
7904 using "rule=E" by fast
7905 AOT_thus ‹[λz z = x] = [λz z = y] & ¬([λz z = x] = [λz z = y])›
7906 using 1 "&I" by blast
7907qed
7908
7909AOT_theorem ordnecfail: ‹O!x → □¬∃F x[F]›
7910 by (meson "RM:1" "→I" nocoder[axiom_inst] "oa-facts:1" "→E")
7911
7912AOT_theorem "ab-obey:1": ‹(A!x & A!y) → (∀F (x[F] ≡ y[F]) → x = y)›
7913proof (rule "→I"; rule "→I")
7914 AOT_assume 1: ‹A!x & A!y›
7915 AOT_assume ‹∀F (x[F] ≡ y[F])›
7916 AOT_hence ‹x[F] ≡ y[F]› for F using "∀E" by blast
7917 AOT_hence ‹□(x[F] ≡ y[F])› for F by (metis "en-eq:6[1]" "≡E"(1))
7918 AOT_hence ‹∀F □(x[F] ≡ y[F])› by (rule GEN)
7919 AOT_hence ‹□∀F (x[F] ≡ y[F])› by (rule BF[THEN "→E"])
7920 AOT_thus ‹x = y›
7921 using "≡⇩d⇩fI"[OF "identity:1", OF "∨I"(2)] 1 "&I" by blast
7922qed
7923
7924AOT_theorem "ab-obey:2":
7925 ‹(∃F (x[F] & ¬y[F]) ∨ ∃F (y[F] & ¬x[F])) → x ≠ y›
7926proof (rule "→I"; rule "≡⇩d⇩fI"[OF "=-infix"]; rule "raa-cor:2")
7927 AOT_assume 1: ‹x = y›
7928 AOT_assume ‹∃F (x[F] & ¬y[F]) ∨ ∃F (y[F] & ¬x[F])›
7929 moreover {
7930 AOT_assume ‹∃F (x[F] & ¬y[F])›
7931 then AOT_obtain F where ‹x[F] & ¬y[F]›
7932 using "∃E"[rotated] by blast
7933 moreover AOT_have ‹y[F]›
7934 using calculation[THEN "&E"(1)] 1 "rule=E" by fast
7935 ultimately AOT_have ‹p & ¬p› for p
7936 by (metis "Conjunction Simplification"(2) "modus-tollens:2" "raa-cor:3")
7937 }
7938 moreover {
7939 AOT_assume ‹∃F (y[F] & ¬x[F])›
7940 then AOT_obtain F where ‹y[F] & ¬x[F]›
7941 using "∃E"[rotated] by blast
7942 moreover AOT_have ‹¬y[F]›
7943 using calculation[THEN "&E"(2)] 1 "rule=E" by fast
7944 ultimately AOT_have ‹p & ¬p› for p
7945 by (metis "Conjunction Simplification"(1) "modus-tollens:1" "raa-cor:3")
7946 }
7947 ultimately AOT_show ‹p & ¬p› for p
7948 by (metis "∨E"(3) "raa-cor:1")
7949qed
7950
7951AOT_theorem "encoders-are-abstract": ‹∃F x[F] → A!x›
7952 by (meson "deduction-theorem" "≡E"(2) "modus-tollens:2" nocoder
7953 "oa-contingent:3" "vdash-properties:1[2]")
7954
7955AOT_theorem "denote=:1": ‹∀H∃x x[H]›
7956 by (rule GEN; rule "existence:2[1]"[THEN "≡⇩d⇩fE"]; "cqt:2")
7957
7958AOT_theorem "denote=:2": ‹∀G∃x⇩1...∃x⇩n x⇩1...x⇩n[H]›
7959 by (rule GEN; rule "existence:2"[THEN "≡⇩d⇩fE"]; "cqt:2")
7960
7961AOT_theorem "denote=:2[2]": ‹∀G∃x⇩1∃x⇩2 x⇩1x⇩2[H]›
7962 by (rule GEN; rule "existence:2[2]"[THEN "≡⇩d⇩fE"]; "cqt:2")
7963
7964AOT_theorem "denote=:2[3]": ‹∀G∃x⇩1∃x⇩2∃x⇩3 x⇩1x⇩2x⇩3[H]›
7965 by (rule GEN; rule "existence:2[3]"[THEN "≡⇩d⇩fE"]; "cqt:2")
7966
7967AOT_theorem "denote=:2[4]": ‹∀G∃x⇩1∃x⇩2∃x⇩3∃x⇩4 x⇩1x⇩2x⇩3x⇩4[H]›
7968 by (rule GEN; rule "existence:2[4]"[THEN "≡⇩d⇩fE"]; "cqt:2")
7969
7970AOT_theorem "denote=:3": ‹∃x x[Π] ≡ ∃H (H = Π)›
7971 using "existence:2[1]" "free-thms:1" "≡E"(2,5)
7972 "Commutativity of ≡" "≡Df" by blast
7973
7974AOT_theorem "denote=:4": ‹(∃x⇩1...∃x⇩n x⇩1...x⇩n[Π]) ≡ ∃H (H = Π)›
7975 using "existence:2" "free-thms:1" "≡E"(6) "≡Df" by blast
7976
7977AOT_theorem "denote=:4[2]": ‹(∃x⇩1∃x⇩2 x⇩1x⇩2[Π]) ≡ ∃H (H = Π)›
7978 using "existence:2[2]" "free-thms:1" "≡E"(6) "≡Df" by blast
7979
7980AOT_theorem "denote=:4[3]": ‹(∃x⇩1∃x⇩2∃x⇩3 x⇩1x⇩2x⇩3[Π]) ≡ ∃H (H = Π)›
7981 using "existence:2[3]" "free-thms:1" "≡E"(6) "≡Df" by blast
7982
7983AOT_theorem "denote=:4[4]": ‹(∃x⇩1∃x⇩2∃x⇩3∃x⇩4 x⇩1x⇩2x⇩3x⇩4[Π]) ≡ ∃H (H = Π)›
7984 using "existence:2[4]" "free-thms:1" "≡E"(6) "≡Df" by blast
7985
7986AOT_theorem "A-objects!": ‹∃!x (A!x & ∀F (x[F] ≡ φ{F}))›
7987proof (rule "uniqueness:1"[THEN "≡⇩d⇩fI"])
7988 AOT_obtain a where a_prop: ‹A!a & ∀F (a[F] ≡ φ{F})›
7989 using "A-objects"[axiom_inst] "∃E"[rotated] by blast
7990 AOT_have ‹(A!β & ∀F (β[F] ≡ φ{F})) → β = a› for β
7991 proof (rule "→I")
7992 AOT_assume β_prop: ‹[A!]β & ∀F (β[F] ≡ φ{F})›
7993 AOT_hence ‹β[F] ≡ φ{F}› for F
7994 using "∀E" "&E" by blast
7995 AOT_hence ‹β[F] ≡ a[F]› for F
7996 using a_prop[THEN "&E"(2)] "∀E" "≡E"(2,5)
7997 "Commutativity of ≡" by fast
7998 AOT_hence ‹∀F (β[F] ≡ a[F])› by (rule GEN)
7999 AOT_thus ‹β = a›
8000 using "ab-obey:1"[THEN "→E",
8001 OF "&I"[OF β_prop[THEN "&E"(1)], OF a_prop[THEN "&E"(1)]],
8002 THEN "→E"] by blast
8003 qed
8004 AOT_hence ‹∀β ((A!β & ∀F (β[F] ≡ φ{F})) → β = a)› by (rule GEN)
8005 AOT_thus ‹∃α ([A!]α & ∀F (α[F] ≡ φ{F}) &
8006 ∀β ([A!]β & ∀F (β[F] ≡ φ{F}) → β = α))›
8007 using "∃I" using a_prop "&I" by fast
8008qed
8009
8010AOT_theorem "obj-oth:1": ‹∃!x (A!x & ∀F (x[F] ≡ [F]y))›
8011 using "A-objects!" by fast
8012
8013AOT_theorem "obj-oth:2": ‹∃!x (A!x & ∀F (x[F] ≡ [F]y & [F]z))›
8014 using "A-objects!" by fast
8015
8016AOT_theorem "obj-oth:3": ‹∃!x (A!x & ∀F (x[F] ≡ [F]y ∨ [F]z))›
8017 using "A-objects!" by fast
8018
8019AOT_theorem "obj-oth:4": ‹∃!x (A!x & ∀F (x[F] ≡ □[F]y))›
8020 using "A-objects!" by fast
8021
8022AOT_theorem "obj-oth:5": ‹∃!x (A!x & ∀F (x[F] ≡ F = G))›
8023 using "A-objects!" by fast
8024
8025AOT_theorem "obj-oth:6": ‹∃!x (A!x & ∀F (x[F] ≡ □∀y([G]y → [F]y)))›
8026 using "A-objects!" by fast
8027
8028AOT_theorem "A-descriptions": ‹❙ιx (A!x & ∀F (x[F] ≡ φ{F}))↓›
8029 by (rule "A-Exists:2"[THEN "≡E"(2)]; rule "RA[2]"; rule "A-objects!")
8030
8031AOT_act_theorem "thm-can-terms2":
8032 ‹y = ❙ιx(A!x & ∀F (x[F] ≡ φ{F})) → (A!y & ∀F (y[F] ≡ φ{F}))›
8033 using "y-in:2" by blast
8034
8035AOT_theorem "can-ab2": ‹y = ❙ιx(A!x & ∀F (x[F] ≡ φ{F})) → A!y›
8036proof(rule "→I")
8037 AOT_assume ‹y = ❙ιx(A!x & ∀F (x[F] ≡ φ{F}))›
8038 AOT_hence ‹❙𝒜(A!y & ∀F (y[F] ≡ φ{F}))›
8039 using "actual-desc:2"[THEN "→E"] by blast
8040 AOT_hence ‹❙𝒜A!y› by (metis "Act-Basic:2" "&E"(1) "≡E"(1))
8041 AOT_thus ‹A!y› by (metis "≡E"(2) "oa-facts:8")
8042qed
8043
8044AOT_act_theorem "desc-encode:1": ‹❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F}›
8045proof -
8046 AOT_have ‹❙ιx(A!x & ∀F (x[F] ≡ φ{F}))↓›
8047 by (simp add: "A-descriptions")
8048 AOT_hence ‹A!❙ιx(A!x & ∀F (x[F] ≡ φ{F})) &
8049 ∀F(❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F})›
8050 using "y-in:3"[THEN "→E"] by blast
8051 AOT_thus ‹❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F}›
8052 using "&E" "∀E" by blast
8053qed
8054
8055AOT_act_theorem "desc-encode:2": ‹❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[G] ≡ φ{G}›
8056 using "desc-encode:1".
8057
8058AOT_theorem "desc-nec-encode:1":
8059 ‹❙ιx (A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ ❙𝒜φ{F}›
8060proof -
8061 AOT_have 0: ‹❙ιx(A!x & ∀F (x[F] ≡ φ{F}))↓›
8062 by (simp add: "A-descriptions")
8063 AOT_hence ‹❙𝒜(A!❙ιx(A!x & ∀F (x[F] ≡ φ{F})) &
8064 ∀F(❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F}))›
8065 using "actual-desc:4"[THEN "→E"] by blast
8066 AOT_hence ‹❙𝒜∀F (❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F})›
8067 using "Act-Basic:2" "&E"(2) "≡E"(1) by blast
8068 AOT_hence ‹∀F ❙𝒜(❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F})›
8069 using "≡E"(1) "logic-actual-nec:3" "vdash-properties:1[2]" by blast
8070 AOT_hence ‹❙𝒜(❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F})›
8071 using "∀E" by blast
8072 AOT_hence ‹❙𝒜❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ ❙𝒜φ{F}›
8073 using "Act-Basic:5" "≡E"(1) by blast
8074 AOT_thus ‹❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ ❙𝒜φ{F}›
8075 using "en-eq:10[1]"[unvarify x⇩1, OF 0] "≡E"(6) by blast
8076qed
8077
8078AOT_theorem "desc-nec-encode:2":
8079 ‹❙ιx (A!x & ∀F (x[F] ≡ φ{F}))[G] ≡ ❙𝒜φ{G}›
8080 using "desc-nec-encode:1".
8081
8082AOT_theorem "Box-desc-encode:1": ‹□φ{G} → ❙ιx(A!x & ∀F (x[F] ≡ φ{G}))[G]›
8083 by (rule "→I"; rule "desc-nec-encode:2"[THEN "≡E"(2)])
8084 (meson "nec-imp-act" "vdash-properties:10")
8085
8086AOT_theorem "Box-desc-encode:2":
8087‹□φ{G} → □(❙ιx(A!x & ∀F (x[F] ≡ φ{G}))[G] ≡ φ{G})›
8088proof(rule CP)
8089 AOT_assume ‹□φ{G}›
8090 AOT_hence ‹□□φ{G}› by (metis "S5Basic:6" "≡E"(1))
8091 moreover AOT_have ‹□□φ{G} → □(❙ιx(A!x & ∀F (x[F] ≡ φ{G}))[G] ≡ φ{G})›
8092 proof (rule RM; rule "→I")
8093 AOT_modally_strict {
8094 AOT_assume 1: ‹□φ{G}›
8095 AOT_hence ‹❙ιx(A!x & ∀F (x[F] ≡ φ{G}))[G]›
8096 using "Box-desc-encode:1" "→E" by blast
8097 moreover AOT_have ‹φ{G}›
8098 using 1 by (meson "qml:2"[axiom_inst] "→E")
8099 ultimately AOT_show ‹❙ιx(A!x & ∀F (x[F] ≡ φ{G}))[G] ≡ φ{G}›
8100 using "→I" "≡I" by simp
8101 }
8102 qed
8103 ultimately AOT_show ‹□(❙ιx(A!x & ∀F (x[F] ≡ φ{G}))[G] ≡ φ{G})›
8104 using "→E" by blast
8105qed
8106
8107definition rigid_condition where
8108 ‹rigid_condition φ ≡ ∀v . [v ⊨ ∀α (φ{α} → □φ{α})]›
8109syntax rigid_condition :: ‹id_position ⇒ AOT_prop› ("RIGID'_CONDITION'(_')")
8110
8111AOT_theorem "strict-can:1[E]":
8112 assumes ‹RIGID_CONDITION(φ)›
8113 shows ‹∀α (φ{α} → □φ{α})›
8114 using assms[unfolded rigid_condition_def] by auto
8115
8116AOT_theorem "strict-can:1[I]":
8117 assumes ‹❙⊢⇩□ ∀α (φ{α} → □φ{α})›
8118 shows ‹RIGID_CONDITION(φ)›
8119 using assms rigid_condition_def by auto
8120
8121AOT_theorem "box-phi-a:1":
8122 assumes ‹RIGID_CONDITION(φ)›
8123 shows ‹(A!x & ∀F (x[F] ≡ φ{F})) → □(A!x & ∀F (x[F] ≡ φ{F}))›
8124proof (rule "→I")
8125 AOT_assume a: ‹A!x & ∀F (x[F] ≡ φ{F})›
8126 AOT_hence b: ‹□A!x›
8127 by (metis "Conjunction Simplification"(1) "oa-facts:2" "→E")
8128 AOT_have ‹x[F] ≡ φ{F}› for F
8129 using a[THEN "&E"(2)] "∀E" by blast
8130 moreover AOT_have ‹□(x[F] → □x[F])› for F
8131 by (meson "pre-en-eq:1[1]" RN)
8132 moreover AOT_have ‹□(φ{F} → □φ{F})› for F
8133 using RN "strict-can:1[E]"[OF assms] "∀E" by blast
8134 ultimately AOT_have ‹□(x[F] ≡ φ{F})› for F
8135 using "sc-eq-box-box:5" "qml:2"[axiom_inst, THEN "→E"] "→E" "&I" by metis
8136 AOT_hence ‹∀F □(x[F] ≡ φ{F})› by (rule GEN)
8137 AOT_hence ‹□∀F (x[F] ≡ φ{F})› by (rule BF[THEN "→E"])
8138 AOT_thus ‹□([A!]x & ∀F (x[F] ≡ φ{F}))›
8139 using b "KBasic:3" "≡S"(1) "≡E"(2) by blast
8140qed
8141
8142AOT_theorem "box-phi-a:2":
8143 assumes ‹RIGID_CONDITION(φ)›
8144 shows ‹y = ❙ιx(A!x & ∀F (x[F] ≡ φ{F})) → (A!y & ∀F (y[F] ≡ φ{F}))›
8145proof(rule "→I")
8146 AOT_assume ‹y = ❙ιx(A!x & ∀F (x[F] ≡ φ{F}))›
8147 AOT_hence ‹❙𝒜(A!y & ∀F (y[F] ≡ φ{F}))›
8148 using "actual-desc:2"[THEN "→E"] by fast
8149 AOT_hence abs: ‹❙𝒜A!y› and ‹❙𝒜∀F (y[F] ≡ φ{F})›
8150 using "Act-Basic:2" "&E" "≡E"(1) by blast+
8151 AOT_hence ‹∀F ❙𝒜(y[F] ≡ φ{F})›
8152 by (metis "≡E"(1) "logic-actual-nec:3" "vdash-properties:1[2]")
8153 AOT_hence ‹❙𝒜(y[F] ≡ φ{F})› for F
8154 using "∀E" by blast
8155 AOT_hence ‹❙𝒜y[F] ≡ ❙𝒜φ{F}› for F
8156 by (metis "Act-Basic:5" "≡E"(1))
8157 AOT_hence ‹y[F] ≡ φ{F}› for F
8158 using "sc-eq-fur:2"[THEN "→E",
8159 OF "strict-can:1[E]"[OF assms,
8160 THEN "∀E"(2)[where β=F], THEN RN]]
8161 by (metis "en-eq:10[1]" "≡E"(6))
8162 AOT_hence ‹∀F (y[F] ≡ φ{F})› by (rule GEN)
8163 AOT_thus ‹[A!]y & ∀F (y[F] ≡ φ{F})›
8164 using abs "&I" "≡E"(2) "oa-facts:8" by blast
8165qed
8166
8167AOT_theorem "box-phi-a:3":
8168 assumes ‹RIGID_CONDITION(φ)›
8169 shows ‹❙ιx(A!x & ∀F (x[F] ≡ φ{F}))[F] ≡ φ{F}›
8170 using "desc-nec-encode:2"
8171 "sc-eq-fur:2"[THEN "→E",
8172 OF "strict-can:1[E]"[OF assms,
8173 THEN "∀E"(2)[where β=F], THEN RN]]
8174 "≡E"(5) by blast
8175
8176AOT_define Null :: ‹τ ⇒ φ› ("Null'(_')")
8177 "df-null-uni:1": ‹Null(x) ≡⇩d⇩f A!x & ¬∃F x[F]›
8178
8179AOT_define Universal :: ‹τ ⇒ φ› ("Universal'(_')")
8180 "df-null-uni:2": ‹Universal(x) ≡⇩d⇩f A!x & ∀F x[F]›
8181
8182AOT_theorem "null-uni-uniq:1": ‹∃!x Null(x)›
8183proof (rule "uniqueness:1"[THEN "≡⇩d⇩fI"])
8184 AOT_obtain a where a_prop: ‹A!a & ∀F (a[F] ≡ ¬(F = F))›
8185 using "A-objects"[axiom_inst] "∃E"[rotated] by fast
8186 AOT_have a_null: ‹¬a[F]› for F
8187 proof (rule "raa-cor:2")
8188 AOT_assume ‹a[F]›
8189 AOT_hence ‹¬(F = F)› using a_prop[THEN "&E"(2)] "∀E" "≡E" by blast
8190 AOT_hence ‹F = F & ¬(F = F)› by (metis "id-eq:1" "raa-cor:3")
8191 AOT_thus ‹p & ¬p› for p by (metis "raa-cor:1")
8192 qed
8193 AOT_have ‹Null(a) & ∀β (Null(β) → β = a)›
8194 proof (rule "&I")
8195 AOT_have ‹¬∃F a[F]›
8196 using a_null by (metis "instantiation" "reductio-aa:1")
8197 AOT_thus ‹Null(a)›
8198 using "df-null-uni:1"[THEN "≡⇩d⇩fI"] a_prop[THEN "&E"(1)] "&I" by metis
8199 next
8200 AOT_show ‹∀β (Null(β) → β = a)›
8201 proof (rule GEN; rule "→I")
8202 fix β
8203 AOT_assume a: ‹Null(β)›
8204 AOT_hence ‹¬∃F β[F]›
8205 using "df-null-uni:1"[THEN "≡⇩d⇩fE"] "&E" by blast
8206 AOT_hence β_null: ‹¬β[F]› for F
8207 by (metis "existential:2[const_var]" "reductio-aa:1")
8208 AOT_have ‹∀F (β[F] ≡ a[F])›
8209 apply (rule GEN; rule "≡I"; rule CP)
8210 using "raa-cor:3" β_null a_null by blast+
8211 moreover AOT_have ‹A!β›
8212 using a "df-null-uni:1"[THEN "≡⇩d⇩fE"] "&E" by blast
8213 ultimately AOT_show ‹β = a›
8214 using a_prop[THEN "&E"(1)] "ab-obey:1"[THEN "→E", THEN "→E"]
8215 "&I" by blast
8216 qed
8217 qed
8218 AOT_thus ‹∃α (Null(α) & ∀β (Null(β) → β = α))›
8219 using "∃I"(2) by fast
8220qed
8221
8222AOT_theorem "null-uni-uniq:2": ‹∃!x Universal(x)›
8223proof (rule "uniqueness:1"[THEN "≡⇩d⇩fI"])
8224 AOT_obtain a where a_prop: ‹A!a & ∀F (a[F] ≡ F = F)›
8225 using "A-objects"[axiom_inst] "∃E"[rotated] by fast
8226 AOT_hence aF: ‹a[F]› for F using "&E" "∀E" "≡E" "id-eq:1" by fast
8227 AOT_hence ‹Universal(a)›
8228 using "df-null-uni:2"[THEN "≡⇩d⇩fI"] "&I" a_prop[THEN "&E"(1)] GEN by blast
8229 moreover AOT_have ‹∀β (Universal(β) → β = a)›
8230 proof (rule GEN; rule "→I")
8231 fix β
8232 AOT_assume ‹Universal(β)›
8233 AOT_hence abs_β: ‹A!β› and ‹β[F]› for F
8234 using "df-null-uni:2"[THEN "≡⇩d⇩fE"] "&E" "∀E" by blast+
8235 AOT_hence ‹β[F] ≡ a[F]› for F
8236 using aF by (metis "deduction-theorem" "≡I")
8237 AOT_hence ‹∀F (β[F] ≡ a[F])› by (rule GEN)
8238 AOT_thus ‹β = a›
8239 using a_prop[THEN "&E"(1)] "ab-obey:1"[THEN "→E", THEN "→E"]
8240 "&I" abs_β by blast
8241 qed
8242 ultimately AOT_show ‹∃α (Universal(α) & ∀β (Universal(β) → β = α))›
8243 using "&I" "∃I" by fast
8244qed
8245
8246AOT_theorem "null-uni-uniq:3": ‹❙ιx Null(x)↓›
8247 using "A-Exists:2" "RA[2]" "≡E"(2) "null-uni-uniq:1" by blast
8248
8249AOT_theorem "null-uni-uniq:4": ‹❙ιx Universal(x)↓›
8250 using "A-Exists:2" "RA[2]" "≡E"(2) "null-uni-uniq:2" by blast
8251
8252AOT_define Null_object :: ‹κ⇩s› (‹a⇩∅›)
8253 "df-null-uni-terms:1": ‹a⇩∅ =⇩d⇩f ❙ιx Null(x)›
8254
8255AOT_define Universal_object :: ‹κ⇩s› (‹a⇩V›)
8256 "df-null-uni-terms:2": ‹a⇩V =⇩d⇩f ❙ιx Universal(x)›
8257
8258AOT_theorem "null-uni-facts:1": ‹Null(x) → □Null(x)›
8259proof (rule "→I")
8260 AOT_assume ‹Null(x)›
8261 AOT_hence x_abs: ‹A!x› and x_null: ‹¬∃F x[F]›
8262 using "df-null-uni:1"[THEN "≡⇩d⇩fE"] "&E" by blast+
8263 AOT_have ‹¬x[F]› for F using x_null
8264 using "existential:2[const_var]" "reductio-aa:1"
8265 by metis
8266 AOT_hence ‹□¬x[F]› for F by (metis "en-eq:7[1]" "≡E"(1))
8267 AOT_hence ‹∀F □¬x[F]› by (rule GEN)
8268 AOT_hence ‹□∀F ¬x[F]› by (rule BF[THEN "→E"])
8269 moreover AOT_have ‹□∀F ¬x[F] → □¬∃F x[F]›
8270 apply (rule RM)
8271 by (metis (full_types) "instantiation" "cqt:2[const_var]"[axiom_inst]
8272 "→I" "reductio-aa:1" "rule-ui:1")
8273 ultimately AOT_have ‹□¬∃F x[F]›
8274 by (metis "→E")
8275 moreover AOT_have ‹□A!x› using x_abs
8276 using "oa-facts:2" "vdash-properties:10" by blast
8277 ultimately AOT_have r: ‹□(A!x & ¬∃F x[F])›
8278 by (metis "KBasic:3" "&I" "≡E"(3) "raa-cor:3")
8279 AOT_show ‹□Null(x)›
8280 by (AOT_subst ‹Null(x)› ‹A!x & ¬∃F x[F]›)
8281 (auto simp: "df-null-uni:1" "≡Df" r)
8282qed
8283
8284AOT_theorem "null-uni-facts:2": ‹Universal(x) → □Universal(x)›
8285proof (rule "→I")
8286 AOT_assume ‹Universal(x)›
8287 AOT_hence x_abs: ‹A!x› and x_univ: ‹∀F x[F]›
8288 using "df-null-uni:2"[THEN "≡⇩d⇩fE"] "&E" by blast+
8289 AOT_have ‹x[F]› for F using x_univ "∀E" by blast
8290 AOT_hence ‹□x[F]› for F by (metis "en-eq:2[1]" "≡E"(1))
8291 AOT_hence ‹∀F □x[F]› by (rule GEN)
8292 AOT_hence ‹□∀F x[F]› by (rule BF[THEN "→E"])
8293 moreover AOT_have ‹□A!x› using x_abs
8294 using "oa-facts:2" "vdash-properties:10" by blast
8295 ultimately AOT_have r: ‹□(A!x & ∀F x[F])›
8296 by (metis "KBasic:3" "&I" "≡E"(3) "raa-cor:3")
8297 AOT_show ‹□Universal(x)›
8298 by (AOT_subst ‹Universal(x)› ‹A!x & ∀F x[F]›)
8299 (auto simp add: "df-null-uni:2" "≡Df" r)
8300qed
8301
8302AOT_theorem "null-uni-facts:3": ‹Null(a⇩∅)›
8303 apply (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:1"])
8304 apply (simp add: "null-uni-uniq:3")
8305 using "actual-desc:4"[THEN "→E", OF "null-uni-uniq:3"]
8306 "sc-eq-fur:2"[THEN "→E",
8307 OF "null-uni-facts:1"[unvarify x, THEN RN, OF "null-uni-uniq:3"],
8308 THEN "≡E"(1)]
8309 by blast
8310
8311AOT_theorem "null-uni-facts:4": ‹Universal(a⇩V)›
8312 apply (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:2"])
8313 apply (simp add: "null-uni-uniq:4")
8314 using "actual-desc:4"[THEN "→E", OF "null-uni-uniq:4"]
8315 "sc-eq-fur:2"[THEN "→E",
8316 OF "null-uni-facts:2"[unvarify x, THEN RN, OF "null-uni-uniq:4"],
8317 THEN "≡E"(1)]
8318 by blast
8319
8320AOT_theorem "null-uni-facts:5": ‹a⇩∅ ≠ a⇩V›
8321proof (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:1", OF "null-uni-uniq:3"];
8322 rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:2", OF "null-uni-uniq:4"];
8323 rule "≡⇩d⇩fI"[OF "=-infix"];
8324 rule "raa-cor:2")
8325 AOT_obtain x where nullx: ‹Null(x)›
8326 by (metis "instantiation" "df-null-uni-terms:1" "existential:1"
8327 "null-uni-facts:3" "null-uni-uniq:3" "rule-id-df:2:b[zero]")
8328 AOT_hence act_null: ‹❙𝒜Null(x)›
8329 by (metis "nec-imp-act" "null-uni-facts:1" "→E")
8330 AOT_assume ‹❙ιx Null(x) = ❙ιx Universal(x)›
8331 AOT_hence ‹❙𝒜∀x(Null(x) ≡ Universal(x))›
8332 using "actual-desc:5"[THEN "→E"] by blast
8333 AOT_hence ‹∀x ❙𝒜(Null(x) ≡ Universal(x))›
8334 by (metis "≡E"(1) "logic-actual-nec:3" "vdash-properties:1[2]")
8335 AOT_hence ‹❙𝒜Null(x) ≡ ❙𝒜Universal(x)›
8336 using "Act-Basic:5" "≡E"(1) "rule-ui:3" by blast
8337 AOT_hence ‹❙𝒜Universal(x)› using act_null "≡E" by blast
8338 AOT_hence ‹Universal(x)›
8339 by (metis RN "≡E"(1) "null-uni-facts:2" "sc-eq-fur:2" "→E")
8340 AOT_hence ‹∀F x[F]› using "≡⇩d⇩fE"[OF "df-null-uni:2"] "&E" by metis
8341 moreover AOT_have ‹¬∃F x[F]›
8342 using nullx "≡⇩d⇩fE"[OF "df-null-uni:1"] "&E" by metis
8343 ultimately AOT_show ‹p & ¬p› for p
8344 by (metis "cqt-further:1" "raa-cor:3" "→E")
8345qed
8346
8347AOT_theorem "null-uni-facts:6": ‹a⇩∅ = ❙ιx(A!x & ∀F (x[F] ≡ F ≠ F))›
8348proof (rule "ab-obey:1"[unvarify x y, THEN "→E", THEN "→E"])
8349 AOT_show ‹❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))↓›
8350 by (simp add: "A-descriptions")
8351next
8352 AOT_show ‹a⇩∅↓›
8353 by (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:1", OF "null-uni-uniq:3"])
8354 (simp add: "null-uni-uniq:3")
8355next
8356 AOT_have ‹❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))↓›
8357 by (simp add: "A-descriptions")
8358 AOT_hence 1: ‹❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F)) = ❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))›
8359 using "rule=I:1" by blast
8360 AOT_show ‹[A!]a⇩∅ & [A!]❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))›
8361 apply (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:1", OF "null-uni-uniq:3"];
8362 rule "&I")
8363 apply (meson "≡⇩d⇩fE" "Conjunction Simplification"(1)
8364 "df-null-uni:1" "df-null-uni-terms:1" "null-uni-facts:3"
8365 "null-uni-uniq:3" "rule-id-df:2:a[zero]" "→E")
8366 using "can-ab2"[unvarify y, OF "A-descriptions", THEN "→E", OF 1].
8367next
8368 AOT_show ‹∀F (a⇩∅[F] ≡ ❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))[F])›
8369 proof (rule GEN)
8370 fix F
8371 AOT_have ‹¬a⇩∅[F]›
8372 by (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:1", OF "null-uni-uniq:3"])
8373 (metis (no_types, lifting) "≡⇩d⇩fE" "&E"(2) "∨I"(2) "∨E"(3) "∃I"(2)
8374 "df-null-uni:1" "df-null-uni-terms:1" "null-uni-facts:3"
8375 "raa-cor:2" "rule-id-df:2:a[zero]"
8376 "russell-axiom[enc,1].ψ_denotes_asm")
8377 moreover AOT_have ‹¬❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))[F]›
8378 proof(rule "raa-cor:2")
8379 AOT_assume 0: ‹❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))[F]›
8380 AOT_hence ‹❙𝒜(F ≠ F)›
8381 using "desc-nec-encode:2"[THEN "≡E"(1), OF 0] by blast
8382 moreover AOT_have ‹¬❙𝒜(F ≠ F)›
8383 using "≡⇩d⇩fE" "id-act:2" "id-eq:1" "≡E"(2)
8384 "=-infix" "raa-cor:3" by blast
8385 ultimately AOT_show ‹❙𝒜(F ≠ F) & ¬❙𝒜(F ≠ F)› by (rule "&I")
8386 qed
8387 ultimately AOT_show ‹a⇩∅[F] ≡ ❙ιx([A!]x & ∀F (x[F] ≡ F ≠ F))[F]›
8388 using "deduction-theorem" "≡I" "raa-cor:4" by blast
8389 qed
8390qed
8391
8392AOT_theorem "null-uni-facts:7": ‹a⇩V = ❙ιx(A!x & ∀F (x[F] ≡ F = F))›
8393proof (rule "ab-obey:1"[unvarify x y, THEN "→E", THEN "→E"])
8394 AOT_show ‹❙ιx([A!]x & ∀F (x[F] ≡ F = F))↓›
8395 by (simp add: "A-descriptions")
8396next
8397 AOT_show ‹a⇩V↓›
8398 by (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:2", OF "null-uni-uniq:4"])
8399 (simp add: "null-uni-uniq:4")
8400next
8401 AOT_have ‹❙ιx([A!]x & ∀F (x[F] ≡ F = F))↓›
8402 by (simp add: "A-descriptions")
8403 AOT_hence 1: ‹❙ιx([A!]x & ∀F (x[F] ≡ F = F)) = ❙ιx([A!]x & ∀F (x[F] ≡ F = F))›
8404 using "rule=I:1" by blast
8405 AOT_show ‹[A!]a⇩V & [A!]❙ιx([A!]x & ∀F (x[F] ≡ F = F))›
8406 apply (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:2", OF "null-uni-uniq:4"];
8407 rule "&I")
8408 apply (meson "≡⇩d⇩fE" "Conjunction Simplification"(1) "df-null-uni:2"
8409 "df-null-uni-terms:2" "null-uni-facts:4" "null-uni-uniq:4"
8410 "rule-id-df:2:a[zero]" "→E")
8411 using "can-ab2"[unvarify y, OF "A-descriptions", THEN "→E", OF 1].
8412next
8413 AOT_show ‹∀F (a⇩V[F] ≡ ❙ιx([A!]x & ∀F (x[F] ≡ F = F))[F])›
8414 proof (rule GEN)
8415 fix F
8416 AOT_have ‹a⇩V[F]›
8417 apply (rule "=⇩d⇩fI"(2)[OF "df-null-uni-terms:2", OF "null-uni-uniq:4"])
8418 using "≡⇩d⇩fE" "&E"(2) "df-null-uni:2" "df-null-uni-terms:2"
8419 "null-uni-facts:4" "null-uni-uniq:4" "rule-id-df:2:a[zero]"
8420 "rule-ui:3" by blast
8421 moreover AOT_have ‹❙ιx([A!]x & ∀F (x[F] ≡ F = F))[F]›
8422 using "RA[2]" "desc-nec-encode:2" "id-eq:1" "≡E"(2) by fastforce
8423 ultimately AOT_show ‹a⇩V[F] ≡ ❙ιx([A!]x & ∀F (x[F] ≡ F = F))[F]›
8424 using "deduction-theorem" "≡I" by simp
8425 qed
8426qed
8427
8428AOT_theorem "aclassical:1":
8429‹∀R∃x∃y(A!x & A!y & x ≠ y & [λz [R]zx] = [λz [R]zy])›
8430proof(rule GEN)
8431 fix R
8432 AOT_obtain a where a_prop:
8433 ‹A!a & ∀F (a[F] ≡ ∃y(A!y & F = [λz [R]zy] & ¬y[F]))›
8434 using "A-objects"[axiom_inst] "∃E"[rotated] by fast
8435 AOT_have a_enc: ‹a[λz [R]za]›
8436 proof (rule "raa-cor:1")
8437 AOT_assume 0: ‹¬a[λz [R]za]›
8438 AOT_hence ‹¬∃y(A!y & [λz [R]za] = [λz [R]zy] & ¬y[λz [R]za])›
8439 by (rule a_prop[THEN "&E"(2), THEN "∀E"(1)[where τ="«[λz [R]za]»"],
8440 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
8441 THEN "≡E"(1), rotated])
8442 "cqt:2[lambda]"
8443 AOT_hence ‹∀y ¬(A!y & [λz [R]za] = [λz [R]zy] & ¬y[λz [R]za])›
8444 using "cqt-further:4" "vdash-properties:10" by blast
8445 AOT_hence ‹¬(A!a & [λz [R]za] = [λz [R]za] & ¬a[λz [R]za])›
8446 using "∀E" by blast
8447 AOT_hence ‹(A!a & [λz [R]za] = [λz [R]za]) → a[λz [R]za]›
8448 by (metis "&I" "deduction-theorem" "raa-cor:3")
8449 moreover AOT_have ‹[λz [R]za] = [λz [R]za]›
8450 by (rule "=I") "cqt:2[lambda]"
8451 ultimately AOT_have ‹a[λz [R]za]›
8452 using a_prop[THEN "&E"(1)] "→E" "&I" by blast
8453 AOT_thus ‹a[λz [R]za] & ¬a[λz [R]za]›
8454 using 0 "&I" by blast
8455 qed
8456 AOT_hence ‹∃y(A!y & [λz [R]za] = [λz [R]zy] & ¬y[λz [R]za])›
8457 by (rule a_prop[THEN "&E"(2), THEN "∀E"(1), THEN "≡E"(1), rotated])
8458 "cqt:2"
8459 then AOT_obtain b where b_prop:
8460 ‹A!b & [λz [R]za] = [λz [R]zb] & ¬b[λz [R]za]›
8461 using "∃E"[rotated] by blast
8462 AOT_have ‹a ≠ b›
8463 apply (rule "≡⇩d⇩fI"[OF "=-infix"])
8464 using a_enc b_prop[THEN "&E"(2)]
8465 using "¬¬I" "rule=E" id_sym "≡E"(4) "oth-class-taut:3:a"
8466 "raa-cor:3" "reductio-aa:1" by fast
8467 AOT_hence ‹A!a & A!b & a ≠ b & [λz [R]za] = [λz [R]zb]›
8468 using b_prop "&E" a_prop "&I" by meson
8469 AOT_hence ‹∃y (A!a & A!y & a ≠ y & [λz [R]za] = [λz [R]zy])› by (rule "∃I")
8470 AOT_thus ‹∃x∃y (A!x & A!y & x ≠ y & [λz [R]zx] = [λz [R]zy])› by (rule "∃I")
8471qed
8472
8473AOT_theorem "aclassical:2":
8474 ‹∀R∃x∃y(A!x & A!y & x ≠ y & [λz [R]xz] = [λz [R]yz])›
8475proof(rule GEN)
8476 fix R
8477 AOT_obtain a where a_prop:
8478 ‹A!a & ∀F (a[F] ≡ ∃y(A!y & F = [λz [R]yz] & ¬y[F]))›
8479 using "A-objects"[axiom_inst] "∃E"[rotated] by fast
8480 AOT_have a_enc: ‹a[λz [R]az]›
8481 proof (rule "raa-cor:1")
8482 AOT_assume 0: ‹¬a[λz [R]az]›
8483 AOT_hence ‹¬∃y(A!y & [λz [R]az] = [λz [R]yz] & ¬y[λz [R]az])›
8484 by (rule a_prop[THEN "&E"(2), THEN "∀E"(1)[where τ="«[λz [R]az]»"],
8485 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
8486 THEN "≡E"(1), rotated])
8487 "cqt:2[lambda]"
8488 AOT_hence ‹∀y ¬(A!y & [λz [R]az] = [λz [R]yz] & ¬y[λz [R]az])›
8489 using "cqt-further:4" "vdash-properties:10" by blast
8490 AOT_hence ‹¬(A!a & [λz [R]az] = [λz [R]az] & ¬a[λz [R]az])›
8491 using "∀E" by blast
8492 AOT_hence ‹(A!a & [λz [R]az] = [λz [R]az]) → a[λz [R]az]›
8493 by (metis "&I" "deduction-theorem" "raa-cor:3")
8494 moreover AOT_have ‹[λz [R]az] = [λz [R]az]›
8495 by (rule "=I") "cqt:2[lambda]"
8496 ultimately AOT_have ‹a[λz [R]az]›
8497 using a_prop[THEN "&E"(1)] "→E" "&I" by blast
8498 AOT_thus ‹a[λz [R]az] & ¬a[λz [R]az]›
8499 using 0 "&I" by blast
8500 qed
8501 AOT_hence ‹∃y(A!y & [λz [R]az] = [λz [R]yz] & ¬y[λz [R]az])›
8502 by (rule a_prop[THEN "&E"(2), THEN "∀E"(1), THEN "≡E"(1), rotated])
8503 "cqt:2"
8504 then AOT_obtain b where b_prop:
8505 ‹A!b & [λz [R]az] = [λz [R]bz] & ¬b[λz [R]az]›
8506 using "∃E"[rotated] by blast
8507 AOT_have ‹a ≠ b›
8508 apply (rule "≡⇩d⇩fI"[OF "=-infix"])
8509 using a_enc b_prop[THEN "&E"(2)]
8510 using "¬¬I" "rule=E" id_sym "≡E"(4) "oth-class-taut:3:a"
8511 "raa-cor:3" "reductio-aa:1" by fast
8512 AOT_hence ‹A!a & A!b & a ≠ b & [λz [R]az] = [λz [R]bz]›
8513 using b_prop "&E" a_prop "&I" by meson
8514 AOT_hence ‹∃y (A!a & A!y & a ≠ y & [λz [R]az] = [λz [R]yz])› by (rule "∃I")
8515 AOT_thus ‹∃x∃y (A!x & A!y & x ≠ y & [λz [R]xz] = [λz [R]yz])› by (rule "∃I")
8516qed
8517
8518AOT_theorem "aclassical:3":
8519 ‹∀F∃x∃y(A!x & A!y & x ≠ y & [λ [F]x] = [λ [F]y])›
8520proof(rule GEN)
8521 fix R
8522 AOT_obtain a where a_prop:
8523 ‹A!a & ∀F (a[F] ≡ ∃y(A!y & F = [λz [R]y] & ¬y[F]))›
8524 using "A-objects"[axiom_inst] "∃E"[rotated] by fast
8525 AOT_have den: ‹[λz [R]a]↓› by "cqt:2[lambda]"
8526 AOT_have a_enc: ‹a[λz [R]a]›
8527 proof (rule "raa-cor:1")
8528 AOT_assume 0: ‹¬a[λz [R]a]›
8529 AOT_hence ‹¬∃y(A!y & [λz [R]a] = [λz [R]y] & ¬y[λz [R]a])›
8530 by (safe intro!: a_prop[THEN "&E"(2), THEN "∀E"(1)[where τ=‹«[λz [R]a]»›],
8531 THEN "oth-class-taut:4:b"[THEN "≡E"(1)],
8532 THEN "≡E"(1), rotated] "cqt:2")
8533 AOT_hence ‹∀y ¬(A!y & [λz [R]a] = [λz [R]y] & ¬y[λz [R]a])›
8534 using "cqt-further:4" "→E" by blast
8535 AOT_hence ‹¬(A!a & [λz [R]a] = [λz [R]a] & ¬a[λz [R]a])› using "∀E" by blast
8536 AOT_hence ‹(A!a & [λz [R]a] = [λz [R]a]) → a[λz [R]a]›
8537 by (metis "&I" "deduction-theorem" "raa-cor:3")
8538 AOT_hence ‹a[λz [R]a]›
8539 using a_prop[THEN "&E"(1)] "→E" "&I"
8540 by (metis "rule=I:1" den)
8541 AOT_thus ‹a[λz [R]a] & ¬a[λz [R]a]› by (metis "0" "raa-cor:3")
8542 qed
8543 AOT_hence ‹∃y(A!y & [λz [R]a] = [λz [R]y] & ¬y[λz [R]a])›
8544 by (rule a_prop[THEN "&E"(2), THEN "∀E"(1), OF den, THEN "≡E"(1), rotated])
8545 then AOT_obtain b where b_prop: ‹A!b & [λz [R]a] = [λz [R]b] & ¬b[λz [R]a]›
8546 using "∃E"[rotated] by blast
8547 AOT_have 1: ‹a ≠ b›
8548 apply (rule "≡⇩d⇩fI"[OF "=-infix"])
8549 using a_enc b_prop[THEN "&E"(2)]
8550 using "¬¬I" "rule=E" id_sym "≡E"(4) "oth-class-taut:3:a"
8551 "raa-cor:3" "reductio-aa:1" by fast
8552 AOT_have a: ‹[λ [R]a] = ([R]a)›
8553 apply (rule "lambda-predicates:3[zero]"[axiom_inst, unvarify p])
8554 by (meson "log-prop-prop:2")
8555 AOT_have b: ‹[λ [R]b] = ([R]b)›
8556 apply (rule "lambda-predicates:3[zero]"[axiom_inst, unvarify p])
8557 by (meson "log-prop-prop:2")
8558 AOT_have ‹[λ [R]a] = [λ [R]b]›
8559 apply (rule "rule=E"[rotated, OF a[THEN id_sym]])
8560 apply (rule "rule=E"[rotated, OF b[THEN id_sym]])
8561 apply (rule "identity:4"[THEN "≡⇩d⇩fI", OF "&I", rotated])
8562 using b_prop "&E" apply blast
8563 apply (safe intro!: "&I")
8564 by (simp add: "log-prop-prop:2")+
8565 AOT_hence ‹A!a & A!b & a ≠ b & [λ [R]a] = [λ [R]b]›
8566 using 1 a_prop[THEN "&E"(1)] b_prop[THEN "&E"(1), THEN "&E"(1)]
8567 "&I" by auto
8568 AOT_hence ‹∃y (A!a & A!y & a ≠ y & [λ [R]a] = [λ [R]y])› by (rule "∃I")
8569 AOT_thus ‹∃x∃y (A!x & A!y & x ≠ y & [λ [R]x] = [λ [R]y])› by (rule "∃I")
8570qed
8571
8572AOT_theorem aclassical2: ‹∃x∃y (A!x & A!y & x ≠ y & ∀F ([F]x ≡ [F]y))›
8573proof -
8574 AOT_have ‹∃x ∃y ([A!]x & [A!]y & x ≠ y &
8575 [λz [λxy ∀F ([F]x ≡ [F]y)]zx] =
8576 [λz [λxy ∀F ([F]x ≡ [F]y)]zy])›
8577 by (rule "aclassical:1"[THEN "∀E"(1)[where τ="«[λxy ∀F ([F]x ≡ [F]y)]»"]])
8578 "cqt:2"
8579 then AOT_obtain x where ‹∃y ([A!]x & [A!]y & x ≠ y &
8580 [λz [λxy ∀F ([F]x ≡ [F]y)]zx] =
8581 [λz [λxy ∀F ([F]x ≡ [F]y)]zy])›
8582 using "∃E"[rotated] by blast
8583 then AOT_obtain y where 0: ‹([A!]x & [A!]y & x ≠ y &
8584 [λz [λxy ∀F ([F]x ≡ [F]y)]zx] =
8585 [λz [λxy ∀F ([F]x ≡ [F]y)]zy])›
8586 using "∃E"[rotated] by blast
8587 AOT_have ‹[λz [λxy ∀F ([F]x ≡ [F]y)]zx]x›
8588 by (auto intro!: "β←C"(1) "cqt:2"
8589 simp: "&I" "ex:1:a" prod_denotesI "rule-ui:3"
8590 "oth-class-taut:3:a" "universal-cor")
8591 AOT_hence ‹[λz [λxy ∀F ([F]x ≡ [F]y)]zy]x›
8592 by (rule "rule=E"[rotated, OF 0[THEN "&E"(2)]])
8593 AOT_hence ‹[λxy ∀F ([F]x ≡ [F]y)]xy›
8594 by (rule "β→C"(1))
8595 AOT_hence ‹∀F ([F]x ≡ [F]y)›
8596 using "β→C"(1) old.prod.case by fast
8597 AOT_hence ‹[A!]x & [A!]y & x ≠ y & ∀F ([F]x ≡ [F]y)›
8598 using 0 "&E" "&I" by blast
8599 AOT_hence ‹∃y ([A!]x & [A!]y & x ≠ y & ∀F ([F]x ≡ [F]y))› by (rule "∃I")
8600 AOT_thus ‹∃x∃y ([A!]x & [A!]y & x ≠ y & ∀F ([F]x ≡ [F]y))› by (rule "∃I"(2))
8601qed
8602
8603AOT_theorem "kirchner-thm:1":
8604 ‹[λx φ{x}]↓ ≡ □∀x∀y(∀F([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8605proof(rule "≡I"; rule "→I")
8606 AOT_assume ‹[λx φ{x}]↓›
8607 AOT_hence ‹□[λx φ{x}]↓› by (metis "exist-nec" "vdash-properties:10")
8608 moreover AOT_have ‹□[λx φ{x}]↓ → □∀x∀y(∀F([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8609 proof (rule "RM:1"; rule "→I"; rule GEN; rule GEN; rule "→I")
8610 AOT_modally_strict {
8611 fix x y
8612 AOT_assume 0: ‹[λx φ{x}]↓›
8613 moreover AOT_assume ‹∀F([F]x ≡ [F]y)›
8614 ultimately AOT_have ‹[λx φ{x}]x ≡ [λx φ{x}]y›
8615 using "∀E" by blast
8616 AOT_thus ‹(φ{x} ≡ φ{y})›
8617 using "beta-C-meta"[THEN "→E", OF 0] "≡E"(6) by meson
8618 }
8619 qed
8620 ultimately AOT_show ‹□∀x∀y(∀F([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8621 using "→E" by blast
8622next
8623 AOT_have ‹□∀x∀y(∀F([F]x ≡ [F]y) → (φ{x} ≡ φ{y})) →
8624 □∀y(∃x(∀F([F]x ≡ [F]y) & φ{x}) ≡ φ{y})›
8625 proof(rule "RM:1"; rule "→I"; rule GEN)
8626 AOT_modally_strict {
8627 AOT_assume ‹∀x∀y(∀F([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8628 AOT_hence indisc: ‹φ{x} ≡ φ{y}› if ‹∀F([F]x ≡ [F]y)› for x y
8629 using "∀E"(2) "→E" that by blast
8630 AOT_show ‹(∃x(∀F([F]x ≡ [F]y) & φ{x}) ≡ φ{y})› for y
8631 proof (rule "raa-cor:1")
8632 AOT_assume ‹¬(∃x(∀F([F]x ≡ [F]y) & φ{x}) ≡ φ{y})›
8633 AOT_hence ‹(∃x(∀F([F]x ≡ [F]y) & φ{x}) & ¬φ{y}) ∨
8634 (¬(∃x(∀F([F]x ≡ [F]y) & φ{x})) & φ{y})›
8635 using "≡E"(1) "oth-class-taut:4:h" by blast
8636 moreover {
8637 AOT_assume 0: ‹∃x(∀F([F]x ≡ [F]y) & φ{x}) & ¬φ{y}›
8638 AOT_obtain a where ‹∀F([F]a ≡ [F]y) & φ{a}›
8639 using "∃E"[rotated, OF 0[THEN "&E"(1)]] by blast
8640 AOT_hence ‹φ{y}›
8641 using indisc[THEN "≡E"(1)] "&E" by blast
8642 AOT_hence ‹p & ¬p› for p
8643 using 0[THEN "&E"(2)] "&I" "raa-cor:3" by blast
8644 }
8645 moreover {
8646 AOT_assume 0: ‹(¬(∃x(∀F([F]x ≡ [F]y) & φ{x})) & φ{y})›
8647 AOT_hence ‹∀x ¬(∀F([F]x ≡ [F]y) & φ{x})›
8648 using "&E"(1) "cqt-further:4" "→E" by blast
8649 AOT_hence ‹¬(∀F([F]y ≡ [F]y) & φ{y})›
8650 using "∀E" by blast
8651 AOT_hence ‹¬∀F([F]y ≡ [F]y) ∨ ¬φ{y}›
8652 using "≡E"(1) "oth-class-taut:5:c" by blast
8653 moreover AOT_have ‹∀F([F]y ≡ [F]y)›
8654 by (simp add: "oth-class-taut:3:a" "universal-cor")
8655 ultimately AOT_have ‹¬φ{y}› by (metis "¬¬I" "∨E"(2))
8656 AOT_hence ‹p & ¬p› for p
8657 using 0[THEN "&E"(2)] "&I" "raa-cor:3" by blast
8658 }
8659 ultimately AOT_show ‹p & ¬p› for p
8660 using "∨E"(3) "raa-cor:1" by blast
8661 qed
8662 }
8663 qed
8664 moreover AOT_assume ‹□∀x∀y(∀F([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8665 ultimately AOT_have ‹□∀y(∃x(∀F([F]x ≡ [F]y) & φ{x}) ≡ φ{y})›
8666 using "→E" by blast
8667 AOT_thus ‹[λx φ{x}]↓›
8668 by (rule "safe-ext"[axiom_inst, THEN "→E", OF "&I", rotated]) "cqt:2"
8669qed
8670
8671AOT_theorem "kirchner-thm:2":
8672 ‹[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓ ≡ □∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8673 (∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8674proof(rule "≡I"; rule "→I")
8675 AOT_assume ‹[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓›
8676 AOT_hence ‹□[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓› by (metis "exist-nec" "→E")
8677 moreover AOT_have ‹□[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓ → □∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8678 (∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8679 proof (rule "RM:1"; rule "→I"; rule GEN; rule GEN; rule "→I")
8680 AOT_modally_strict {
8681 fix x⇩1x⇩n y⇩1y⇩n :: ‹'a AOT_var›
8682 AOT_assume 0: ‹[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓›
8683 moreover AOT_assume ‹∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)›
8684 ultimately AOT_have ‹[λx⇩1...x⇩n φ{x⇩1...x⇩n}]x⇩1...x⇩n ≡
8685 [λx⇩1...x⇩n φ{x⇩1...x⇩n}]y⇩1...y⇩n›
8686 using "∀E" by blast
8687 AOT_thus ‹(φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n})›
8688 using "beta-C-meta"[THEN "→E", OF 0] "≡E"(6) by meson
8689 }
8690 qed
8691 ultimately AOT_show ‹□∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n(
8692 ∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n})
8693 )›
8694 using "→E" by blast
8695next
8696 AOT_have ‹
8697 □(∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8698 (∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n})))
8699 → □∀y⇩1...∀y⇩n
8700 ((∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n})) ≡
8701 φ{y⇩1...y⇩n})›
8702 proof(rule "RM:1"; rule "→I"; rule GEN)
8703 AOT_modally_strict {
8704 AOT_assume ‹∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8705 (∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8706 AOT_hence indisc: ‹φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}›
8707 if ‹∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)› for x⇩1x⇩n y⇩1y⇩n
8708 using "∀E"(2) "→E" that by blast
8709 AOT_show ‹(∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n})) ≡
8710 φ{y⇩1...y⇩n}› for y⇩1y⇩n
8711 proof (rule "raa-cor:1")
8712 AOT_assume ‹¬((∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n})) ≡
8713 φ{y⇩1...y⇩n})›
8714 AOT_hence ‹((∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)
8715 & φ{x⇩1...x⇩n}))
8716 & ¬φ{y⇩1...y⇩n}) ∨
8717 (¬(∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n}))
8718 & φ{y⇩1...y⇩n})›
8719 using "≡E"(1) "oth-class-taut:4:h" by blast
8720 moreover {
8721 AOT_assume 0: ‹(∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n}))
8722 & ¬φ{y⇩1...y⇩n}›
8723 AOT_obtain a⇩1a⇩n where ‹∀F([F]a⇩1...a⇩n ≡ [F]y⇩1...y⇩n) & φ{a⇩1...a⇩n}›
8724 using "∃E"[rotated, OF 0[THEN "&E"(1)]] by blast
8725 AOT_hence ‹φ{y⇩1...y⇩n}›
8726 using indisc[THEN "≡E"(1)] "&E" by blast
8727 AOT_hence ‹p & ¬p› for p
8728 using 0[THEN "&E"(2)] "&I" "raa-cor:3" by blast
8729 }
8730 moreover {
8731 AOT_assume 0: ‹¬(∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n}))
8732 & φ{y⇩1...y⇩n}›
8733 AOT_hence ‹∀x⇩1...∀x⇩n ¬(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n})›
8734 using "&E"(1) "cqt-further:4" "→E" by blast
8735 AOT_hence ‹¬(∀F([F]y⇩1...y⇩n ≡ [F]y⇩1...y⇩n) & φ{y⇩1...y⇩n})›
8736 using "∀E" by blast
8737 AOT_hence ‹¬∀F([F]y⇩1...y⇩n ≡ [F]y⇩1...y⇩n) ∨ ¬φ{y⇩1...y⇩n}›
8738 using "≡E"(1) "oth-class-taut:5:c" by blast
8739 moreover AOT_have ‹∀F([F]y⇩1...y⇩n ≡ [F]y⇩1...y⇩n)›
8740 by (simp add: "oth-class-taut:3:a" "universal-cor")
8741 ultimately AOT_have ‹¬φ{y⇩1...y⇩n}›
8742 by (metis "¬¬I" "∨E"(2))
8743 AOT_hence ‹p & ¬p› for p
8744 using 0[THEN "&E"(2)] "&I" "raa-cor:3" by blast
8745 }
8746 ultimately AOT_show ‹p & ¬p› for p
8747 using "∨E"(3) "raa-cor:1" by blast
8748 qed
8749 }
8750 qed
8751 moreover AOT_assume ‹□∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8752 (∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8753 ultimately AOT_have ‹□∀y⇩1...∀y⇩n
8754 ((∃x⇩1...∃x⇩n(∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) & φ{x⇩1...x⇩n})) ≡
8755 φ{y⇩1...y⇩n})›
8756 using "→E" by blast
8757 AOT_thus ‹[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓›
8758 by (rule "safe-ext"[axiom_inst, THEN "→E", OF "&I", rotated]) "cqt:2"
8759qed
8760
8761AOT_theorem "kirchner-thm-cor:1":
8762 ‹[λx φ{x}]↓ → ∀x∀y(∀F([F]x ≡ [F]y) → □(φ{x} ≡ φ{y}))›
8763proof(rule "→I"; rule GEN; rule GEN; rule "→I")
8764 fix x y
8765 AOT_assume ‹[λx φ{x}]↓›
8766 AOT_hence ‹□∀x∀y (∀F ([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8767 by (rule "kirchner-thm:1"[THEN "≡E"(1)])
8768 AOT_hence ‹∀x□∀y (∀F ([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8769 using CBF[THEN "→E"] by blast
8770 AOT_hence ‹□∀y (∀F ([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8771 using "∀E" by blast
8772 AOT_hence ‹∀y □(∀F ([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8773 using CBF[THEN "→E"] by blast
8774 AOT_hence ‹□(∀F ([F]x ≡ [F]y) → (φ{x} ≡ φ{y}))›
8775 using "∀E" by blast
8776 AOT_hence ‹□∀F ([F]x ≡ [F]y) → □(φ{x} ≡ φ{y})›
8777 using "qml:1"[axiom_inst] "vdash-properties:6" by blast
8778 moreover AOT_assume ‹∀F([F]x ≡ [F]y)›
8779 ultimately AOT_show ‹□(φ{x} ≡ φ{y})› using "→E" "ind-nec" by blast
8780qed
8781
8782AOT_theorem "kirchner-thm-cor:2":
8783 ‹[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓ → ∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8784 (∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → □(φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8785proof(rule "→I"; rule GEN; rule GEN; rule "→I")
8786 fix x⇩1x⇩n y⇩1y⇩n
8787 AOT_assume ‹[λx⇩1...x⇩n φ{x⇩1...x⇩n}]↓›
8788 AOT_hence 0: ‹□∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8789 (∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8790 by (rule "kirchner-thm:2"[THEN "≡E"(1)])
8791 AOT_have ‹∀x⇩1...∀x⇩n∀y⇩1...∀y⇩n
8792 □(∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8793 proof(rule GEN; rule GEN)
8794 fix x⇩1x⇩n y⇩1y⇩n
8795 AOT_show ‹□(∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8796 apply (rule "RM:1"[THEN "→E", rotated, OF 0]; rule "→I")
8797 using "∀E" by blast
8798 qed
8799 AOT_hence ‹∀y⇩1...∀y⇩n □(∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) →
8800 (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8801 using "∀E" by blast
8802 AOT_hence ‹□(∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8803 using "∀E" by blast
8804 AOT_hence ‹□(∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → (φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n}))›
8805 using "∀E" by blast
8806 AOT_hence 0: ‹□∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n) → □(φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n})›
8807 using "qml:1"[axiom_inst] "vdash-properties:6" by blast
8808 moreover AOT_assume ‹∀F([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)›
8809 moreover AOT_have ‹[λx⇩1...x⇩n □∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)]↓› by "cqt:2"
8810 ultimately AOT_have ‹[λx⇩1...x⇩n □∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)]x⇩1...x⇩n ≡
8811 [λx⇩1...x⇩n □∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)]y⇩1...y⇩n›
8812 using "∀E" by blast
8813 moreover AOT_have ‹[λx⇩1...x⇩n □∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)]y⇩1...y⇩n›
8814 apply (rule "β←C"(1))
8815 apply "cqt:2[lambda]"
8816 apply (fact "cqt:2[const_var]"[axiom_inst])
8817 by (simp add: RN GEN "oth-class-taut:3:a")
8818 ultimately AOT_have ‹[λx⇩1...x⇩n □∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)]x⇩1...x⇩n›
8819 using "≡E"(2) by blast
8820 AOT_hence ‹□∀F ([F]x⇩1...x⇩n ≡ [F]y⇩1...y⇩n)›
8821 using "β→C"(1) by blast
8822 AOT_thus ‹□(φ{x⇩1...x⇩n} ≡ φ{y⇩1...y⇩n})› using "→E" 0 by blast
8823qed
8824
8825subsection‹Propositional Properties›
8826text‹\label{PLM: 9.12}›
8827
8828AOT_define propositional :: ‹Π ⇒ φ› (‹Propositional'(_')›)
8829 "prop-prop1": ‹Propositional([F]) ≡⇩d⇩f ∃p(F = [λy p])›
8830
8831AOT_theorem "prop-prop2:1": ‹∀p [λy p]↓›
8832 by (rule GEN) "cqt:2[lambda]"
8833
8834AOT_theorem "prop-prop2:2": ‹[λν φ]↓›
8835 by "cqt:2[lambda]"
8836
8837AOT_theorem "prop-prop2:3": ‹F = [λy p] → □∀x([F]x ≡ p)›
8838proof (rule "→I")
8839 AOT_assume 0: ‹F = [λy p]›
8840 AOT_show ‹□∀x([F]x ≡ p)›
8841 by (rule "rule=E"[rotated, OF 0[symmetric]];
8842 rule RN; rule GEN; rule "beta-C-meta"[THEN "→E"])
8843 "cqt:2[lambda]"
8844qed
8845
8846AOT_theorem "prop-prop2:4": ‹Propositional([F]) → □Propositional([F])›
8847proof(rule "→I")
8848 AOT_assume ‹Propositional([F])›
8849 AOT_hence ‹∃p(F = [λy p])›
8850 using "≡⇩d⇩fE"[OF "prop-prop1"] by blast
8851 then AOT_obtain p where ‹F = [λy p]›
8852 using "∃E"[rotated] by blast
8853 AOT_hence ‹□(F = [λy p])›
8854 using "id-nec:2" "modus-tollens:1" "raa-cor:3" by blast
8855 AOT_hence ‹∃p □(F = [λy p])›
8856 using "∃I" by fast
8857 AOT_hence 0: ‹□∃p (F = [λy p])›
8858 by (metis Buridan "vdash-properties:10")
8859 AOT_thus ‹□Propositional([F])›
8860 using "prop-prop1"[THEN "≡Df"]
8861 by (AOT_subst ‹Propositional([F])› ‹∃p (F = [λy p])›) auto
8862qed
8863
8864AOT_define indicriminate :: ‹Π ⇒ φ› ("Indiscriminate'(_')")
8865 "prop-indis": ‹Indiscriminate([F]) ≡⇩d⇩f F↓ & □(∃x [F]x → ∀x [F]x)›
8866
8867AOT_theorem "prop-in-thm": ‹Propositional([Π]) → Indiscriminate([Π])›
8868proof(rule "→I")
8869 AOT_assume ‹Propositional([Π])›
8870 AOT_hence ‹∃p Π = [λy p]› using "≡⇩d⇩fE"[OF "prop-prop1"] by blast
8871 then AOT_obtain p where Π_def: ‹Π = [λy p]› using "∃E"[rotated] by blast
8872 AOT_show ‹Indiscriminate([Π])›
8873 proof (rule "≡⇩d⇩fI"[OF "prop-indis"]; rule "&I")
8874 AOT_show ‹Π↓›
8875 using Π_def by (meson "t=t-proper:1" "vdash-properties:6")
8876 next
8877 AOT_show ‹□(∃x [Π]x → ∀x [Π]x)›
8878 proof (rule "rule=E"[rotated, OF Π_def[symmetric]];
8879 rule RN; rule "→I"; rule GEN)
8880 AOT_modally_strict {
8881 AOT_assume ‹∃x [λy p]x›
8882 then AOT_obtain a where ‹[λy p]a› using "∃E"[rotated] by blast
8883 AOT_hence 0: ‹p› by (metis "β→C"(1))
8884 AOT_show ‹[λy p]x› for x
8885 apply (rule "β←C"(1))
8886 apply "cqt:2[lambda]"
8887 apply (fact "cqt:2[const_var]"[axiom_inst])
8888 by (fact 0)
8889 }
8890 qed
8891 qed
8892qed
8893
8894AOT_theorem "prop-in-f:1": ‹Necessary([F]) → Indiscriminate([F])›
8895proof (rule "→I")
8896 AOT_assume ‹Necessary([F])›
8897 AOT_hence 0: ‹□∀x⇩1...∀x⇩n [F]x⇩1...x⇩n›
8898 using "≡⇩d⇩fE"[OF "contingent-properties:1"] by blast
8899 AOT_show ‹Indiscriminate([F])›
8900 by (rule "≡⇩d⇩fI"[OF "prop-indis"])
8901 (metis "0" "KBasic:1" "&I" "ex:1:a" "rule-ui:2[const_var]" "→E")
8902qed
8903
8904AOT_theorem "prop-in-f:2": ‹Impossible([F]) → Indiscriminate([F])›
8905proof (rule "→I")
8906 AOT_modally_strict {
8907 AOT_have ‹∀x ¬[F]x → (∃x [F]x → ∀x [F]x)›
8908 by (metis "∃E" "cqt-orig:3" "Hypothetical Syllogism" "→I" "raa-cor:3")
8909 }
8910 AOT_hence 0: ‹□∀x ¬[F]x → □(∃x [F]x → ∀x [F]x)›
8911 by (rule "RM:1")
8912 AOT_assume ‹Impossible([F])›
8913 AOT_hence ‹□∀x ¬[F]x›
8914 using "≡⇩d⇩fE"[OF "contingent-properties:2"] "&E" by blast
8915 AOT_hence 1: ‹□(∃x [F]x → ∀x [F]x)›
8916 using 0 "→E" by blast
8917 AOT_show ‹Indiscriminate([F])›
8918 by (rule "≡⇩d⇩fI"[OF "prop-indis"]; rule "&I")
8919 (simp add: "ex:1:a" "rule-ui:2[const_var]" 1)+
8920qed
8921
8922AOT_theorem "prop-in-f:3:a": ‹¬Indiscriminate([E!])›
8923proof(rule "raa-cor:2")
8924 AOT_assume ‹Indiscriminate([E!])›
8925 AOT_hence 0: ‹□(∃x [E!]x → ∀x [E!]x)›
8926 using "≡⇩d⇩fE"[OF "prop-indis"] "&E" by blast
8927 AOT_hence ‹◇∃x [E!]x → ◇∀x [E!]x›
8928 using "KBasic:13" "vdash-properties:10" by blast
8929 moreover AOT_have ‹◇∃x [E!]x›
8930 by (simp add: "thm-cont-e:3")
8931 ultimately AOT_have ‹◇∀x [E!]x›
8932 by (metis "vdash-properties:6")
8933 AOT_thus ‹p & ¬p› for p
8934 by (metis "≡⇩d⇩fE" "conventions:5" "o-objects-exist:5" "reductio-aa:1")
8935qed
8936
8937AOT_theorem "prop-in-f:3:b": ‹¬Indiscriminate([E!]⇧-)›
8938proof (rule "rule=E"[rotated, OF "rel-neg-T:2"[symmetric]];
8939 rule "raa-cor:2")
8940 AOT_assume ‹Indiscriminate([λx ¬[E!]x])›
8941 AOT_hence 0: ‹□(∃x [λx ¬[E!]x]x → ∀x [λx ¬[E!]x]x)›
8942 using "≡⇩d⇩fE"[OF "prop-indis"] "&E" by blast
8943 AOT_hence ‹□∃x [λx ¬[E!]x]x → □∀x [λx ¬[E!]x]x›
8944 using "→E" "qml:1" "vdash-properties:1[2]" by blast
8945 moreover AOT_have ‹□∃x [λx ¬[E!]x]x›
8946 apply (AOT_subst ‹[λx ¬E!x]x› ‹¬E!x› for: x)
8947 apply (rule "beta-C-meta"[THEN "→E"])
8948 apply "cqt:2"
8949 by (metis (full_types) "B◇" RN "T◇" "cqt-further:2"
8950 "o-objects-exist:5" "→E")
8951 ultimately AOT_have 1: ‹□∀x [λx ¬[E!]x]x›
8952 by (metis "vdash-properties:6")
8953 AOT_hence ‹□∀x ¬[E!]x›
8954 by (AOT_subst (reverse) ‹¬[E!]x› ‹[λx ¬[E!]x]x› for: x)
8955 (auto intro!: "cqt:2" "beta-C-meta"[THEN "→E"])
8956 AOT_hence ‹∀x □¬[E!]x› by (metis "CBF" "vdash-properties:10")
8957 moreover AOT_obtain a where abs_a: ‹O!a›
8958 using "∃E" "o-objects-exist:1" "qml:2"[axiom_inst] "→E" by blast
8959 ultimately AOT_have ‹□¬[E!]a› using "∀E" by blast
8960 AOT_hence 2: ‹¬◇[E!]a› by (metis "≡⇩d⇩fE" "conventions:5" "reductio-aa:1")
8961 AOT_have ‹A!a›
8962 apply (rule "=⇩d⇩fI"(2)[OF AOT_abstract])
8963 apply "cqt:2[lambda]"
8964 apply (rule "β←C"(1))
8965 apply "cqt:2[lambda]"
8966 using "cqt:2[const_var]"[axiom_inst] apply blast
8967 by (fact 2)
8968 AOT_thus ‹p & ¬p› for p using abs_a
8969 by (metis "≡E"(1) "oa-contingent:2" "reductio-aa:1")
8970qed
8971
8972AOT_theorem "prop-in-f:3:c": ‹¬Indiscriminate(O!)›
8973proof(rule "raa-cor:2")
8974 AOT_assume ‹Indiscriminate(O!)›
8975 AOT_hence 0: ‹□(∃x O!x → ∀x O!x)›
8976 using "≡⇩d⇩fE"[OF "prop-indis"] "&E" by blast
8977 AOT_hence ‹□∃x O!x → □∀x O!x›
8978 using "qml:1"[axiom_inst] "vdash-properties:6" by blast
8979 moreover AOT_have ‹□∃x O!x›
8980 using "o-objects-exist:1" by blast
8981 ultimately AOT_have ‹□∀x O!x›
8982 by (metis "vdash-properties:6")
8983 AOT_thus ‹p & ¬p› for p
8984 by (metis "o-objects-exist:3" "qml:2"[axiom_inst] "raa-cor:3" "→E")
8985qed
8986
8987AOT_theorem "prop-in-f:3:d": ‹¬Indiscriminate(A!)›
8988proof(rule "raa-cor:2")
8989 AOT_assume ‹Indiscriminate(A!)›
8990 AOT_hence 0: ‹□(∃x A!x → ∀x A!x)›
8991 using "≡⇩d⇩fE"[OF "prop-indis"] "&E" by blast
8992 AOT_hence ‹□∃x A!x → □∀x A!x›
8993 using "qml:1"[axiom_inst] "vdash-properties:6" by blast
8994 moreover AOT_have ‹□∃x A!x›
8995 using "o-objects-exist:2" by blast
8996 ultimately AOT_have ‹□∀x A!x›
8997 by (metis "vdash-properties:6")
8998 AOT_thus ‹p & ¬p› for p
8999 by (metis "o-objects-exist:4" "qml:2"[axiom_inst] "raa-cor:3" "→E")
9000qed
9001
9002AOT_theorem "prop-in-f:4:a": ‹¬Propositional(E!)›
9003 using "modus-tollens:1" "prop-in-f:3:a" "prop-in-thm" by blast
9004
9005AOT_theorem "prop-in-f:4:b": ‹¬Propositional(E!⇧-)›
9006 using "modus-tollens:1" "prop-in-f:3:b" "prop-in-thm" by blast
9007
9008AOT_theorem "prop-in-f:4:c": ‹¬Propositional(O!)›
9009 using "modus-tollens:1" "prop-in-f:3:c" "prop-in-thm" by blast
9010
9011AOT_theorem "prop-in-f:4:d": ‹¬Propositional(A!)›
9012 using "modus-tollens:1" "prop-in-f:3:d" "prop-in-thm" by blast
9013
9014AOT_theorem "prop-prop-nec:1": ‹◇∃p (F = [λy p]) → ∃p(F = [λy p])›
9015proof(rule "→I")
9016 AOT_assume ‹◇∃p (F = [λy p])›
9017 AOT_hence ‹∃p ◇(F = [λy p])›
9018 by (metis "BF◇" "→E")
9019 then AOT_obtain p where ‹◇(F = [λy p])›
9020 using "∃E"[rotated] by blast
9021 AOT_hence ‹F = [λy p]›
9022 by (metis "derived-S5-rules:2" emptyE "id-nec:2" "→E")
9023 AOT_thus ‹∃p(F = [λy p])› by (rule "∃I")
9024qed
9025
9026AOT_theorem "prop-prop-nec:2": ‹∀p (F ≠ [λy p]) → □∀p(F ≠ [λy p])›
9027proof(rule "→I")
9028 AOT_assume ‹∀p (F ≠ [λy p])›
9029 AOT_hence ‹(F ≠ [λy p])› for p
9030 using "∀E" by blast
9031 AOT_hence ‹□(F ≠ [λy p])› for p
9032 by (rule "id-nec2:2"[unvarify β, THEN "→E", rotated]) "cqt:2"
9033 AOT_hence ‹∀p □(F ≠ [λy p])› by (rule GEN)
9034 AOT_thus ‹□∀p (F ≠ [λy p])› using BF[THEN "→E"] by fast
9035qed
9036
9037AOT_theorem "prop-prop-nec:3": ‹∃p (F = [λy p]) → □∃p(F = [λy p])›
9038proof(rule "→I")
9039 AOT_assume ‹∃p (F = [λy p])›
9040 then AOT_obtain p where ‹(F = [λy p])› using "∃E"[rotated] by blast
9041 AOT_hence ‹□(F = [λy p])› by (metis "id-nec:2" "→E")
9042 AOT_hence ‹∃p□(F = [λy p])› by (rule "∃I")
9043 AOT_thus ‹□∃p(F = [λy p])› by (metis Buridan "→E")
9044qed
9045
9046AOT_theorem "prop-prop-nec:4": ‹◇∀p (F ≠ [λy p]) → ∀p(F ≠ [λy p])›
9047proof(rule "→I")
9048 AOT_assume ‹◇∀p (F ≠ [λy p])›
9049 AOT_hence ‹∀p ◇(F ≠ [λy p])› by (metis "Buridan◇" "→E")
9050 AOT_hence ‹◇(F ≠ [λy p])› for p
9051 using "∀E" by blast
9052 AOT_hence ‹F ≠ [λy p]› for p
9053 by (rule "id-nec2:3"[unvarify β, THEN "→E", rotated]) "cqt:2"
9054 AOT_thus ‹∀p (F ≠ [λy p])› by (rule GEN)
9055qed
9056
9057AOT_theorem "enc-prop-nec:1":
9058 ‹◇∀F (x[F] → ∃p(F = [λy p])) → ∀F(x[F] → ∃p (F = [λy p]))›
9059proof(rule "→I"; rule GEN; rule "→I")
9060 fix F
9061 AOT_assume ‹◇∀F (x[F] → ∃p(F = [λy p]))›
9062 AOT_hence ‹∀F ◇(x[F] → ∃p(F = [λy p]))›
9063 using "Buridan◇" "vdash-properties:10" by blast
9064 AOT_hence 0: ‹◇(x[F] → ∃p(F = [λy p]))› using "∀E" by blast
9065 AOT_assume ‹x[F]›
9066 AOT_hence ‹□x[F]› by (metis "en-eq:2[1]" "≡E"(1))
9067 AOT_hence ‹◇∃p(F = [λy p])›
9068 using 0 by (metis "KBasic2:4" "≡E"(1) "vdash-properties:10")
9069 AOT_thus ‹∃p(F = [λy p])›
9070 using "prop-prop-nec:1"[THEN "→E"] by blast
9071qed
9072
9073AOT_theorem "enc-prop-nec:2":
9074 ‹∀F (x[F] → ∃p(F = [λy p])) → □∀F(x[F] → ∃p (F = [λy p]))›
9075 using "derived-S5-rules:1"[where Γ="{}", simplified, OF "enc-prop-nec:1"]
9076 by blast
9077
9078
9079end
9080