Skip to content

Commit c71fe97

Browse files
authored
add(Incompleteness): Add LT version WitnessComparison (#780)
1 parent 492ea99 commit c71fe97

3 files changed

Lines changed: 90 additions & 54 deletions

File tree

Foundation/FirstOrder/Incompleteness/RosserProvability.lean

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ variable {L : Language} [L.Encodable] [L.LORDefinable]
1515

1616
variable (T : Theory L) [T.Δ₁]
1717

18-
def _root_.LO.FirstOrder.Theory.RosserProvable (φ : V) : Prop := T.ProvabilityComparison φ (neg L φ)
18+
def _root_.LO.FirstOrder.Theory.RosserProvable (φ : V) : Prop := T.ProvabilityComparisonLE φ (neg L φ)
1919

2020
section
2121

2222
noncomputable def _root_.LO.FirstOrder.Theory.rosserProvable : 𝚺₁.Semisentence 1 := .mkSigma
23-
“φ. ∃ nφ, !(negGraph L) nφ φ ∧ !T.provabilityComparison φ nφ”
23+
“φ. ∃ nφ, !(negGraph L) nφ φ ∧ !T.provabilityComparisonLE φ nφ”
2424

2525
instance _root_.LO.FirstOrder.Theory.RosserProvable_defined :
2626
𝚺₁-Predicate (T.RosserProvable : V → Prop) via T.rosserProvable := .mk fun v ↦ by
@@ -35,10 +35,10 @@ end
3535

3636
variable {T}
3737

38-
lemma rosser_quote {φ : SyntacticFormula L} : T.RosserProvable (V := V) ⌜φ⌝ ↔ T.ProvabilityComparison (V := V) ⌜φ⌝ ⌜∼φ⌝ := by
38+
lemma rosser_quote {φ : SyntacticFormula L} : T.RosserProvable (V := V) ⌜φ⌝ ↔ T.ProvabilityComparisonLE (V := V) ⌜φ⌝ ⌜∼φ⌝ := by
3939
simp [Theory.RosserProvable, Semiformula.quote_def]
4040

41-
lemma rosser_quote₀ {φ : Sentence L} : T.RosserProvable (V := V) ⌜φ⌝ ↔ T.ProvabilityComparison (V := V) ⌜φ⌝ ⌜∼φ⌝ := by
41+
lemma rosser_quote₀ {φ : Sentence L} : T.RosserProvable (V := V) ⌜φ⌝ ↔ T.ProvabilityComparisonLE (V := V) ⌜φ⌝ ⌜∼φ⌝ := by
4242
simpa [Sentence.quote_def] using rosser_quote
4343

4444
lemma rosser_quote_def {φ : SyntacticFormula L} :
@@ -47,7 +47,7 @@ lemma rosser_quote_def {φ : SyntacticFormula L} :
4747
lemma rosser_quote_def₀ {φ : Sentence L} :
4848
T.RosserProvable (V := V) ⌜φ⌝ ↔ ∃ b : V, T.Proof b ⌜φ⌝ ∧ ∀ b' < b, ¬T.Proof b' ⌜∼φ⌝ := by simpa [Sentence.quote_def] using rosser_quote
4949

50-
def RosserProvable.to_provable {φ : V} : T.RosserProvable φ → T.Provable φ := ProvabilityComparison.to_provable
50+
def RosserProvable.to_provable {φ : V} : T.RosserProvable φ → T.Provable φ := ProvabilityComparison.le_to_provable
5151

5252
lemma provable_of_standard_proof {n : ℕ} {φ : Sentence L} : T.Proof (n : V) ⌜φ⌝ → T ⊢ φ := fun h ↦ by
5353
have : T.Proof n ⌜φ⌝ ↔ T.Proof (↑n : V) ⌜φ⌝ := by
@@ -81,10 +81,7 @@ def not_rosserProvable [Entailment.Consistent T] {φ : Sentence L} : T ⊢ ∼φ
8181
let n : ℕ := ⌜h.get⌝
8282
have hn : T.Proof (↑n : V) ⌜∼φ⌝ := by simp [n, coe_quote_proof_eq]
8383
rcases rosser_quote₀.mp r with ⟨b, hb, Hb⟩
84-
have : b ≤ n := by
85-
by_contra A
86-
have : ¬T.Proof (↑n : V) ⌜∼φ⌝ := Hb n (lt_of_not_ge A)
87-
contradiction
84+
have : b ≤ n := by grind;
8885
rcases eq_nat_of_le_nat this with ⟨b, rfl⟩
8986
have : T ⊢ φ := provable_of_standard_proof hb
9087
have : Entailment.Inconsistent T := Entailment.inconsistent_of_provable_of_unprovable this h

Foundation/FirstOrder/Incompleteness/WitnessComparison.lean

Lines changed: 67 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -17,60 +17,99 @@ variable {L : Language} [L.Encodable] [L.LORDefinable]
1717

1818
variable (T : Theory L) [T.Δ₁]
1919

20-
def _root_.LO.FirstOrder.Theory.ProvabilityComparison (φ ψ : V) : Prop :=
20+
def _root_.LO.FirstOrder.Theory.ProvabilityComparisonLE (φ ψ : V) : Prop :=
2121
∃ b, T.Proof b φ ∧ ∀ b' < b, ¬T.Proof b' ψ
2222

23+
def _root_.LO.FirstOrder.Theory.ProvabilityComparisonLT (φ ψ : V) : Prop :=
24+
∃ b, T.Proof b φ ∧ ∀ b' ≤ b, ¬T.Proof b' ψ
25+
2326
section
2427

25-
noncomputable def _root_.LO.FirstOrder.Theory.provabilityComparison : 𝚺₁.Semisentence 2 := .mkSigma
28+
noncomputable def _root_.LO.FirstOrder.Theory.provabilityComparisonLE : 𝚺₁.Semisentence 2 := .mkSigma
2629
“φ ψ. ∃ b, !T.proof.sigma b φ ∧ ∀ b' < b, ¬!T.proof.pi b' ψ”
2730

28-
instance _root_.LO.FirstOrder.Theory.provability_comparison_defined :
29-
𝚺₁-Relation[V] T.ProvabilityComparison via T.provabilityComparison := .mk fun v ↦ by
30-
simp [Theory.provabilityComparison, Theory.ProvabilityComparison]
31+
instance _root_.LO.FirstOrder.Theory.provability_comparison_le_defined :
32+
𝚺₁-Relation[V] T.ProvabilityComparisonLE via T.provabilityComparisonLE := .mk fun v ↦ by
33+
simp [Theory.provabilityComparisonLE, Theory.ProvabilityComparisonLE]
34+
35+
instance _root_.LO.FirstOrder.Theory.provability_comparison_le_definable : 𝚺₁-Relation[V] T.ProvabilityComparisonLE :=
36+
T.provability_comparison_le_defined.to_definable
37+
38+
/-- instance for definability tactic -/
39+
instance _root_.LO.FirstOrder.Theory.provability_comparison_le_definable' :
40+
𝚺-[0 + 1]-Relation[V] T.ProvabilityComparisonLE := T.provability_comparison_le_definable
41+
3142

32-
instance _root_.LO.FirstOrder.Theory.provability_comparison_definable : 𝚺₁-Relation[V] T.ProvabilityComparison :=
33-
T.provability_comparison_defined.to_definable
43+
noncomputable def _root_.LO.FirstOrder.Theory.provabilityComparisonLT : 𝚺₁.Semisentence 2 := .mkSigma
44+
“φ ψ. ∃ b, !T.proof.sigma b φ ∧ ∀ b' <⁺ b, ¬!T.proof.pi b' ψ”
3445

35-
/-- instance for definability tactic-/
36-
instance _root_.LO.FirstOrder.Theory.provability_comparison_definable' :
37-
𝚺-[0 + 1]-Relation[V] T.ProvabilityComparison := T.provability_comparison_definable
46+
instance _root_.LO.FirstOrder.Theory.provability_comparison_lt_defined :
47+
𝚺₁-Relation[V] T.ProvabilityComparisonLT via T.provabilityComparisonLT := .mk fun v ↦ by
48+
simp [Theory.provabilityComparisonLT, Theory.ProvabilityComparisonLT]
49+
50+
instance _root_.LO.FirstOrder.Theory.provability_comparison_lt_definable : 𝚺₁-Relation[V] T.ProvabilityComparisonLT :=
51+
T.provability_comparison_lt_defined.to_definable
52+
53+
/-- instance for definability tactic -/
54+
instance _root_.LO.FirstOrder.Theory.provability_comparison_lt_definable' :
55+
𝚺-[0 + 1]-Relation[V] T.ProvabilityComparisonLT := T.provability_comparison_lt_definable
3856

3957
end
4058

41-
variable {T}
59+
variable {T : Theory L} [T.Δ₁]
4260

4361
namespace ProvabilityComparison
4462

45-
variable {φ ψ : V}
63+
variable {φ ψ χ : V}
4664

47-
lemma to_provable : T.ProvabilityComparison φ ψ → T.Provable φ := by rintro ⟨b, hb, _⟩; exact ⟨b, hb⟩
65+
local infixl:50 "" => T.ProvabilityComparisonLE
66+
local infixl:50 "" => T.ProvabilityComparisonLT
67+
local prefix:50 "" => T.Provable
4868

49-
lemma refl_iff_provable : T.ProvabilityComparison φ φ ↔ T.Provable φ := by
50-
constructor
51-
· exact to_provable
52-
· rintro ⟨b, hb⟩
53-
have : ∃ b, T.Proof b φ ∧ ∀ z < b, ¬T.Proof z φ :=
54-
InductionOnHierarchy.least_number_sigma 𝚺 1 (P := (T.Proof · φ)) (by definability) hb
55-
rcases this with ⟨b, bd, h⟩
56-
exact ⟨b, bd, h⟩
69+
@[grind =>]
70+
lemma le_of_lt : φ ≺ ψ → φ ≼ ψ := by rintro ⟨b, _⟩; exact ⟨b, by grind⟩
71+
72+
@[grind =>]
73+
lemma le_to_provable : φ ≼ ψ → □φ := by rintro ⟨b, hb, _⟩; exact ⟨b, by grind⟩
74+
75+
@[grind =>]
76+
lemma le_trans : φ ≼ ψ → ψ ≼ χ → φ ≼ χ := by rintro ⟨b, hb, h⟩ ⟨d, hd, H⟩; use b; grind;
5777

58-
lemma antisymm : T.ProvabilityComparison φ ψ → T.ProvabilityComparison ψ φ → φ = ψ := by
78+
@[grind =>]
79+
lemma le_antisymm : φ ≼ ψ → ψ ≼ φ → φ = ψ := by
5980
rintro ⟨b, hb, Hb⟩ ⟨d, hd, Hd⟩
6081
have : b = d := by
6182
by_contra ne
6283
wlog lt : b < d
63-
· have : b ≤ d := le_of_not_gt <| this d hd Hd b hb Hb (Ne.symm ne)
64-
have : d ≤ b := le_of_not_gt lt
65-
have : b = d := le_antisymm (by assumption) (by assumption)
66-
contradiction
84+
· grind;
6785
have : ¬T.Proof b φ := Hd b lt
6886
contradiction
6987
have : ({φ} : V) = {ψ} := by simp [←hb.1, ←hd.1, this]
7088
simpa using this
7189

72-
lemma find_minimal_proof_fintype [Fintype ι] (φ : ι → V) (H : T.Provable (φ i)) :
73-
∃ j, ∀ k, T.ProvabilityComparison (φ j) (φ k) := by
90+
91+
lemma iff_le_refl_provable : φ ≼ φ ↔ □φ := by
92+
constructor
93+
· exact le_to_provable
94+
· rintro ⟨b, hb⟩
95+
have : ∃ b, T.Proof b φ ∧ ∀ z < b, ¬T.Proof z φ :=
96+
InductionOnHierarchy.least_number_sigma 𝚺 1 (P := (T.Proof · φ)) (by definability) hb
97+
rcases this with ⟨b, bd, h⟩
98+
exact ⟨b, bd, h⟩
99+
100+
@[grind .]
101+
lemma lt_irrefl : ¬φ ≺ φ := by rintro ⟨b, hb, h⟩; have : ¬T.Proof b φ := h b (by simp); contradiction
102+
103+
@[grind =>]
104+
lemma lt_trans : φ ≺ ψ → ψ ≺ χ → φ ≺ χ := by rintro ⟨b, hb, h⟩ ⟨d, hd, H⟩; use b; grind;
105+
106+
107+
@[grind =>]
108+
lemma not_lt_of_le : φ ≼ ψ → ¬ψ ≺ φ := by grind;
109+
110+
111+
lemma find_minimal_proof_fintype [Fintype ι] (φ : ι → V) (H : □(φ i)) :
112+
∃ j, ∀ k, (φ j) ≼ (φ k) := by
74113
rcases show ∃ dᵢ, T.Proof dᵢ (φ i)from H with ⟨dᵢ, Hdᵢ⟩
75114
have : ∃ z, (∃ j, T.Proof z (φ j)) ∧ ∀ w < z, ∀ x, ¬T.Proof w (φ x) := by
76115
simpa using

Foundation/ProvabilityLogic/SolovaySentences.lean

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,16 @@ section model
144144

145145
variable (T) {V : Type*} [ORingStructure V] [V ⊧ₘ* 𝗜𝚺₁]
146146

147-
def NegativeSuccessor (φ ψ : V) : Prop := T.ProvabilityComparison (neg ℒₒᵣ φ) (neg ℒₒᵣ ψ)
147+
def NegativeSuccessor (φ ψ : V) : Prop := T.ProvabilityComparisonLE (neg ℒₒᵣ φ) (neg ℒₒᵣ ψ)
148148

149-
lemma NegativeSuccessor.quote_iff_provabilityComparison {φ ψ : Sentence ℒₒᵣ} :
150-
NegativeSuccessor (V := V) T ⌜φ⌝ ⌜ψ⌝ ↔ T.ProvabilityComparison (V := V) ⌜∼φ⌝ ⌜∼ψ⌝ := by
149+
lemma NegativeSuccessor.quote_iff_provabilityComparisonLE {φ ψ : Sentence ℒₒᵣ} :
150+
NegativeSuccessor (V := V) T ⌜φ⌝ ⌜ψ⌝ ↔ T.ProvabilityComparisonLE (V := V) ⌜∼φ⌝ ⌜∼ψ⌝ := by
151151
simp [NegativeSuccessor, Sentence.quote_def, Semiformula.quote_def]
152152

153153
section
154154

155155
def negativeSuccessor : 𝚺₁.Semisentence 2 := .mkSigma
156-
“φ ψ. ∃ nφ, ∃ nψ, !(negGraph ℒₒᵣ) nφ φ ∧ !(negGraph ℒₒᵣ) nψ ψ ∧ !T.provabilityComparison nφ nψ”
156+
“φ ψ. ∃ nφ, ∃ nψ, !(negGraph ℒₒᵣ) nφ φ ∧ !(negGraph ℒₒᵣ) nψ ψ ∧ !T.provabilityComparisonLE nφ nψ”
157157

158158
instance negativeSuccessor_defined : 𝚺₁-Relation[V] NegativeSuccessor T via (negativeSuccessor T) := .mk fun v ↦ by
159159
simp [negativeSuccessor, NegativeSuccessor]
@@ -367,9 +367,9 @@ private lemma Solovay.exclusive.comparable {i₁ i₂ : F} {ε₁ ε₂ : List F
367367
rcases hji₁ε₂ with ⟨η₁, η₂, rfl⟩
368368
have Θε₂ : ΘChain T V (η₁ ++ j :: i₁ :: η₂) := by simpa using Θε₂
369369
exact ΘChain.cons_cons_iff'.mp (ΘChain.append_iff.mp Θε₂).2 |>.1
370-
have : ∀ k, i₁ ≺ k → T.ProvabilityComparison (V := V) ⌜∼T.solovay j⌝ ⌜∼T.solovay k⌝ := by
371-
simpa [NegativeSuccessor.quote_iff_provabilityComparison] using ΘChain.cons_cons_iff.mp this
372-
exact (ProvabilityComparison.refl_iff_provable (L := ℒₒᵣ)).mp (this j hij₁)
370+
have : ∀ k, i₁ ≺ k → T.ProvabilityComparisonLE (V := V) ⌜∼T.solovay j⌝ ⌜∼T.solovay k⌝ := by
371+
simpa [NegativeSuccessor.quote_iff_provabilityComparisonLE] using ΘChain.cons_cons_iff.mp this
372+
exact (ProvabilityComparison.iff_le_refl_provable (L := ℒₒᵣ)).mp (this j hij₁)
373373
contradiction
374374

375375
/-- Condition 1.-/
@@ -399,15 +399,15 @@ lemma Solovay.exclusive {i₁ i₂ : F} (ne : i₁ ≠ i₂) : T.Solovay V i₁
399399
rcases hj₂ with ⟨_, rfl⟩
400400
have : ΘChain T V ([j₂] ++ k :: ε) := (ΘChain.append_iff.mp Θε₂).2
401401
simpa using (ΘChain.append_iff.mp this).1
402-
have P₁ : T.ProvabilityComparison (V := V) ⌜∼T.solovay j₁⌝ ⌜∼T.solovay j₂⌝ := by
403-
simpa [NegativeSuccessor.quote_iff_provabilityComparison] using
402+
have P₁ : T.ProvabilityComparisonLE (V := V) ⌜∼T.solovay j₁⌝ ⌜∼T.solovay j₂⌝ := by
403+
simpa [NegativeSuccessor.quote_iff_provabilityComparisonLE] using
404404
ΘChain.doubleton_iff.mp C₁ j₂
405405
(cε₂.rel_of_infix _ _ <| List.infix_iff_prefix_suffix.mpr ⟨j₂ :: k :: ε, by simp, hj₂⟩)
406-
have P₂ : T.ProvabilityComparison (V := V) ⌜∼T.solovay j₂⌝ ⌜∼T.solovay j₁⌝ := by
407-
simpa [NegativeSuccessor.quote_iff_provabilityComparison] using
406+
have P₂ : T.ProvabilityComparisonLE (V := V) ⌜∼T.solovay j₂⌝ ⌜∼T.solovay j₁⌝ := by
407+
simpa [NegativeSuccessor.quote_iff_provabilityComparisonLE] using
408408
ΘChain.doubleton_iff.mp C₂ j₁
409409
(cε₁.rel_of_infix _ _ <| List.infix_iff_prefix_suffix.mpr ⟨j₁ :: k :: ε, by simp, hj₁⟩)
410-
have : j₁ = j₂ := by simpa using ProvabilityComparison.antisymm (V := V) P₁ P₂
410+
have : j₁ = j₂ := by simpa using ProvabilityComparison.le_antisymm (V := V) P₁ P₂
411411
contradiction
412412

413413
/-- Condition 2.-/
@@ -419,9 +419,9 @@ lemma Solovay.refute (ne : F.root.1 ≠ i) : T.Solovay V i → T.Provable (⌜
419419
rcases show Θ T V i from h.1 with ⟨ε, hε, cε⟩
420420
rcases List.ChainI.prec_exists_of_ne hε (Ne.symm ne) with ⟨ε', i', hii', rfl, hε'⟩
421421
have : ∀ k, i' ≺ k → NegativeSuccessor T ⌜T.solovay i⌝ ⌜T.solovay k⌝ := (ΘChain.cons_cons_iff.mp cε).2
422-
have : T.ProvabilityComparison (V := V) ⌜∼T.solovay i⌝ ⌜∼T.solovay i⌝ := by
423-
simpa [NegativeSuccessor.quote_iff_provabilityComparison] using this i hii'
424-
exact (ProvabilityComparison.refl_iff_provable (T := T)).mp this
422+
have : T.ProvabilityComparisonLE (V := V) ⌜∼T.solovay i⌝ ⌜∼T.solovay i⌝ := by
423+
simpa [NegativeSuccessor.quote_iff_provabilityComparisonLE] using this i hii'
424+
exact (ProvabilityComparison.iff_le_refl_provable (T := T)).mp this
425425

426426
lemma Θ.disjunction (i : F) : Θ T V i → T.Solovay V i ∨ ∃ j, i ≺ j ∧ T.Solovay V j := by
427427
have : IsConverseWellFounded F (· ≺ ·) := inferInstance
@@ -430,7 +430,7 @@ lemma Θ.disjunction (i : F) : Θ T V i → T.Solovay V i ∨ ∃ j, i ≺ j ∧
430430
by_cases hS : T.Solovay V i
431431
· left; exact hS
432432
· right
433-
have : ∃ j, i ≺ j ∧ ∀ k, i ≺ k → T.ProvabilityComparison (V := V) ⌜∼T.solovay j⌝ ⌜∼T.solovay k⌝ := by
433+
have : ∃ j, i ≺ j ∧ ∀ k, i ≺ k → T.ProvabilityComparisonLE (V := V) ⌜∼T.solovay j⌝ ⌜∼T.solovay k⌝ := by
434434
have : ∃ j, i ≺ j ∧ T.Provable (⌜∼T.solovay j⌝ : V) := by
435435
have : Θ T V i → ∃ x, i ≺ x ∧ T.Provable (⌜∼T.solovay x⌝ : V) := by
436436
simpa [Theory.ConsistentWith.quote_iff, Theory.Solovay] using hS
@@ -445,7 +445,7 @@ lemma Θ.disjunction (i : F) : Θ T V i → T.Solovay V i ∨ ∃ j, i ≺ j ∧
445445
exact ⟨
446446
j :: ε,
447447
hε.cons hij,
448-
cε.cons_of hε (by simpa [NegativeSuccessor.quote_iff_provabilityComparison]) hij⟩
448+
cε.cons_of hε (by simpa [NegativeSuccessor.quote_iff_provabilityComparisonLE]) hij⟩
449449
have : T.Solovay V j ∨ ∃ k, j ≺ k ∧ T.Solovay V k := ih j hij this
450450
rcases this with (hSj | ⟨k, hjk, hSk⟩)
451451
· exact ⟨j, hij, hSj⟩

0 commit comments

Comments
 (0)