|
| 1 | +module |
| 2 | + |
| 3 | +public import SeqPL.Arithmetic.Soundness |
| 4 | +public import SeqPL.Arithmetic.SolovaySentences |
| 5 | + |
| 6 | +@[expose] public section |
| 7 | + |
| 8 | +open Classical |
| 9 | +open LO |
| 10 | +open LO.FirstOrder.ProvabilityAbstraction |
| 11 | + |
| 12 | +variable {T : FirstOrder.ArithmeticTheory} [T.Δ₁] [𝗜𝚺₁ ⪯ T] |
| 13 | + |
| 14 | +variable {κ : Type*} [Nonempty κ] |
| 15 | + {α : Type*} |
| 16 | + {A B : _root_.Formula α} |
| 17 | + {M : RootedModel κ α} |
| 18 | + |
| 19 | +@[grind] |
| 20 | +def LO.FirstOrder.ArithmeticTheory.provabilityLogicRelativeTo (T U : FirstOrder.ArithmeticTheory) [T.Δ₁] : Logic α := {A | ∀ f : StandardRealization α T, U ⊢ f A} |
| 21 | + |
| 22 | +abbrev LO.FirstOrder.ArithmeticTheory.provabilityLogic (T : FirstOrder.ArithmeticTheory) [T.Δ₁] : Logic α := T.provabilityLogicRelativeTo T |
| 23 | + |
| 24 | +theorem unprovable_realization_exists |
| 25 | + (M : RootedModel κ α) [Fintype M.World] [M.IsGL] |
| 26 | + (hA : M.root.1 ⊮ A) (h : M.height < T.height) |
| 27 | + : ∃ f : StandardRealization α T, T ⊬ f A := by |
| 28 | + let S := LO.FirstOrder.Theory.standardProvability.solovaySentences (M := M.extendRoot 1) (T := T); |
| 29 | + use S.realization; |
| 30 | + contrapose! h; |
| 31 | + apply Order.le_of_lt_add_one; |
| 32 | + calc |
| 33 | + T.height < (M.extendRoot 1).height := S.theory_height (T.standardProvability.syntactical_sound ℕ) (A := A) ?_ h |
| 34 | + _ = _ := by |
| 35 | + have := RootedModel.extendRoot.Ext1.eq_height_original_height_succ (M := M); |
| 36 | + simp_all only [ne_eq, PNat.val_ofNat, Nat.cast_add, Nat.cast_one]; |
| 37 | + . apply Model.World.forces_dia.mpr; |
| 38 | + use M.root; |
| 39 | + constructor; |
| 40 | + . tauto; |
| 41 | + . exact RootedModel.extendRoot.same_forces_embed.not.mpr hA; |
| 42 | + |
| 43 | +namespace LogicGL |
| 44 | + |
| 45 | +theorem arithmetical_completeness_of_infinity_height (height : T.height = (⊤ : ℕ∞)) : |
| 46 | + (∀ f : StandardRealization α T, T ⊢ f A) → A ∈ LogicGL _ := by |
| 47 | + contrapose!; |
| 48 | + intro hA; |
| 49 | + replace h := LogicGL_semantical_TFAE.out 0 2 |>.not.mp hA; |
| 50 | + push Not at h; |
| 51 | + obtain ⟨κ, _, M, _, hA⟩ := h; |
| 52 | + have : Fintype M.World := Fintype.ofFinite _; |
| 53 | + exact unprovable_realization_exists M hA (by simp_all); |
| 54 | + |
| 55 | +theorem arithmetical_completeness_of_finite_le {n : ℕ} (height : n ≤ T.height) |
| 56 | + : (∀ f : StandardRealization α T, T ⊢ f A) → □^[n] ⊥ 🡒 A ∈ LogicGL _ := by |
| 57 | + contrapose!; |
| 58 | + intro hA; |
| 59 | + replace h := LogicGL_semantical_TFAE.out 0 2 |>.not.mp hA; |
| 60 | + push Not at h; |
| 61 | + obtain ⟨κ, _, M, _, hA⟩ := h; |
| 62 | + replace hA := Model.World.not_forces_imp.mp hA; |
| 63 | + have : Fintype M.World := Fintype.ofFinite _; |
| 64 | + apply unprovable_realization_exists M hA.2; |
| 65 | + apply lt_of_lt_of_le; |
| 66 | + . apply Nat.cast_lt.mpr $ RootedModel.iff_height_lt_root_forces_boxItr_bot |>.mpr hA.1; |
| 67 | + . exact height; |
| 68 | + |
| 69 | +lemma arithmetical_completeness_iff_of_infinity_height (height : T.height = (⊤ : ℕ∞)) |
| 70 | + : A ∈ LogicGL _ ↔ (∀ f : StandardRealization α T, T ⊢ f A) := by |
| 71 | + constructor; |
| 72 | + . intro h f; |
| 73 | + exact arithmetical_soundness (f := f) h; |
| 74 | + . exact arithmetical_completeness_of_infinity_height height; |
| 75 | + |
| 76 | +lemma arithmetical_completeness_iff_of_sigma1_sound [T.SoundOnHierarchy 𝚺 1] |
| 77 | + : A ∈ LogicGL _ ↔ (∀ f : StandardRealization α T, T ⊢ f A) := |
| 78 | + arithmetical_completeness_iff_of_infinity_height (FirstOrder.Arithmetic.height_eq_top_of_sigma1_sound T) |
| 79 | + |
| 80 | +theorem eq_provabilityLogic_sigma1_sound [T.SoundOnHierarchy 𝚺 1] : LogicGL α = T.provabilityLogic := by |
| 81 | + ext A; |
| 82 | + exact LogicGL.arithmetical_completeness_iff_of_sigma1_sound; |
| 83 | + |
| 84 | +theorem eq_provabilityLogic_peano_arithmetic : LogicGL α = (𝗣𝗔.provabilityLogic) := LogicGL.eq_provabilityLogic_sigma1_sound |
| 85 | + |
| 86 | +end LogicGL |
| 87 | + |
| 88 | + |
| 89 | +namespace LogicGLPlusBoxBot |
| 90 | + |
| 91 | +theorem arithmetical_completeness {n : ℕ∞} (hn : n ≤ T.height) |
| 92 | + (h : ∀ f : StandardRealization α T, T ⊢ f A) : A ∈ LogicGLPlusBoxBot n := by |
| 93 | + match n with |
| 94 | + | .none => |
| 95 | + apply LogicGL.arithmetical_completeness_of_infinity_height (T := T) ?_ h; |
| 96 | + exact eq_top_iff.mpr hn; |
| 97 | + | .some n => |
| 98 | + apply LogicGLPlusBoxBot.iff_provable_provable_GL.mpr; |
| 99 | + apply LogicGL.arithmetical_completeness_of_finite_le (T := T) ?_ h; |
| 100 | + exact hn; |
| 101 | + |
| 102 | +theorem arithmetical_completeness_iff |
| 103 | + : A ∈ LogicGLPlusBoxBot T.height ↔ (∀ f : StandardRealization α T, T ⊢ f A) := by |
| 104 | + constructor; |
| 105 | + . intro h f; exact arithmetical_soundness h; |
| 106 | + . exact arithmetical_completeness (by simp); |
| 107 | + |
| 108 | +lemma eq_provabilityLogic : LogicGLPlusBoxBot (α := α) T.height = T.provabilityLogic := by |
| 109 | + ext A; |
| 110 | + exact arithmetical_completeness_iff; |
| 111 | + |
| 112 | +end LogicGLPlusBoxBot |
| 113 | + |
| 114 | + |
| 115 | +end |
0 commit comments