Skip to content

Commit 463b0a4

Browse files
authored
Merge branch 'master' into master
2 parents 2d0bd1d + c71fe97 commit 463b0a4

30 files changed

Lines changed: 1009 additions & 1430 deletions

Foundation.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -294,7 +294,6 @@ public import Foundation.Modal.Kripke.LinearFrame
294294
public import Foundation.Modal.Kripke.Logic.GL.Completeness
295295
public import Foundation.Modal.Kripke.Logic.GL.MDP
296296
public import Foundation.Modal.Kripke.Logic.GL.Soundness
297-
public import Foundation.Modal.Kripke.Logic.GL.Tree
298297
public import Foundation.Modal.Kripke.Logic.GL.Unnecessitation
299298
public import Foundation.Modal.Kripke.Logic.GLPoint3
300299
public import Foundation.Modal.Kripke.Logic.Grz.Completeness
@@ -340,7 +339,7 @@ public import Foundation.Modal.Kripke.Logic.Ver
340339
public import Foundation.Modal.Kripke.NNFormula
341340
public import Foundation.Modal.Kripke.Preservation
342341
public import Foundation.Modal.Kripke.Rank
343-
public import Foundation.Modal.Kripke.Rooted
342+
public import Foundation.Modal.Kripke.Root
344343
public import Foundation.Modal.Kripke.Terminated
345344
public import Foundation.Modal.Kripke.Tree
346345
public import Foundation.Modal.Kripke.Undefinability

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/Modal/Boxdot/GL_S.lean

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,17 @@ public import Foundation.ProvabilityLogic.S.Completeness
66

77
namespace LO
88

9+
namespace Modal.Kripke.Model
10+
11+
variable {M : Kripke.Model} {x : M.World}
12+
13+
instance [M.IsTransitive] : (M↾x).IsTransitive := inferInstance
14+
15+
instance [M.IsTransitive] [M.IsPointRooted] : (M.extendRoot n).IsTransitive := inferInstance
16+
17+
end Modal.Kripke.Model
18+
19+
920
namespace Modal.Logic
1021

1122
open Kripke Formula.Kripke
@@ -19,21 +30,19 @@ lemma iff_provable_boxdot_GL_provable_boxdot_S : Modal.GL ⊢ φᵇ ↔ Modal.S
1930
. apply Entailment.WeakerThan.wk;
2031
infer_instance;
2132
. intro h;
22-
apply GL.Kripke.fintype_completeness_TFAE.out 2 0 |>.mp;
23-
replace h := GL.Kripke.finite_completeness_TFAE.out 0 3 |>.mp $ iff_provable_rflSubformula_GL_provable_S.mpr h;
33+
replace h := GL.Kripke.finite_completeness_TFAE.out 0 2 |>.mp $ iff_provable_rflSubformula_GL_provable_S.mpr h;
2434

25-
intro M _ _ _ r _;
26-
27-
obtain ⟨i, hi⟩ := Kripke.Model.extendRoot.inr_satisfies_axiomT_set (M := M) (Γ := □⁻¹'φᵇ.subformulas);
28-
apply Model.extendRoot.inl_satisfies_boxdot_iff (n := ⟨(□⁻¹'φᵇ.subformulas).card + 1, by omega⟩) (i := i) |>.mpr;
35+
apply GL.Kripke.fintype_completeness_TFAE.out 2 0 |>.mp;
36+
intro M _ _ _ _;
2937

30-
let M₁ := M.extendRoot ⟨(□⁻¹'φᵇ.subformulas).card + 1, by omega⟩;
31-
let i₁ : M₁.World := Sum.inl i;
32-
apply Model.pointGenerate.modal_equivalent_at_root (r := i₁) |>.mp $ h (M₁↾i₁) _;
38+
obtain ⟨i, hi⟩ := Kripke.Model.extendRoot.inr_satisfies_forall_axiomT_set (M := M) (Γ := □⁻¹'φᵇ.subformulas);
39+
apply Model.extendRoot.inl_satisfies_boxdot_iff (i := i) |>.mp;
40+
apply h;
3341
apply Satisfies.fconj_def.mpr;
34-
intro ψ hψ;
35-
apply Satisfies.fconj_def.mp hi;
36-
grind;
42+
simp only [Formula.rflSubformula, Finset.mem_image, forall_exists_index, and_imp, forall_apply_eq_imp_iff₂];
43+
rintro ψ hψ;
44+
apply hi;
45+
exact hψ;
3746

3847
end Modal.Logic
3948

Foundation/Modal/Kripke/AxiomH.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module
22

3-
public import Foundation.Modal.Kripke.Rooted
3+
public import Foundation.Modal.Kripke.Root
44

55
@[expose] public section
66

Foundation/Modal/Kripke/Cluster.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module
22

3-
public import Foundation.Modal.Kripke.Rooted
3+
public import Foundation.Modal.Kripke.Root
44
public import Mathlib.Data.Finite.Card
55

66

0 commit comments

Comments
 (0)