Documentation

InfinitaryLogic.Methods.LocalTower

The countable local Skolem tower Llocal / Γlocal #

localSkolem L Γ (in LocalSkolem.lean) adjoins a Skolem function symbol only for the formulas of a countable family Γ, and so stays countable. But one layer is not closed under its own witness formulas, so — exactly as skolemStage/skolemColim do for the uncountable full Skolemization — we iterate. The difference is that here the family Γ grows in lock-step with the language, so the language and the family are mutually recursive:

The mutual recursion is packaged as a single -indexed sequence of LocalStage bundles (language + family + countability certificates), sidestepping dependent-recursion sprawl. The deliverable of this chunk is that every stage is countable — both the language's symbol types and the family Γ_k — which is what keeps the eventual local colimit L_Γ countable (the fatal size problem that localSkolem was introduced to fix). The local colimit, its cocone inclusions, and the transported countability live in LocalColimit.lean; here we stop at the tower and its stagewise countability.

Countability of Language.sum symbol types #

A sum language's arity-graded symbol type is the fibrewise disjoint sum, so its total Σ-type is countable as soon as both summands' Σ-types are. These feed the successor-language countability certificate in LocalStage.succ.

theorem FirstOrder.Language.sum_sigma_functions_countable {L L' : Language} (h : Countable ((n : ) × L.Functions n)) (h' : Countable ((n : ) × L'.Functions n)) :
Countable ((n : ) × (L.sum L').Functions n)

The full function-symbol type of L.sum L' is countable when both summands' are.

theorem FirstOrder.Language.sum_sigma_relations_countable {L L' : Language} (h : Countable ((n : ) × L.Relations n)) (h' : Countable ((n : ) × L'.Relations n)) :
Countable ((n : ) × (L.sum L').Relations n)

The full relation-symbol type of L.sum L' is countable when both summands' are.

The local Skolem witness term and formula #

For a symbol of localSkolem L Γ — that is, a formula φ ∈ Γ of arity n+1 — the witness body of ∃ xₙ, φ is φ[skolemTerm], built with the template pattern openBounds → subst → relabel exactly as skolemWitnessFormula does in SkolemClosure.lean, but using the local Skolem symbol (which exists precisely because φ ∈ Γ). This is the arity-n formula, over L.sum (localSkolem L Γ), added to the successor family.

def FirstOrder.Language.localSkolemTerm {L : Language} {Γ : Set ((n : ) × L.BoundedFormulaω Empty n)} {γ : Type u_1} {n : } (sym : (L.localSkolem Γ).Functions n) (ts : Fin n(L.sum (L.localSkolem Γ)).Term γ) :
(L.sum (L.localSkolem Γ)).Term γ

The local Skolem witness term for the symbol sym (a formula φ ∈ Γ of arity n+1): the function symbol sym — in the localSkolem summand — applied to the argument terms ts, as a term of L.sum (localSkolem L Γ). Local analogue of skolemTerm.

Equations
Instances For

    The local Skolem witness formula for the symbol sym (a formula φ ∈ Γ of arity n+1): substitute the local Skolem term for the witnessed last variable of φ, yielding the arity-n formula φ[skolemTerm] over L.sum (localSkolem L Γ). Local analogue of skolemWitnessFormula.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For

      The Skolem-need family: Γ plus the negated bodies of its universals #

      The EM truth lemma's all case for ∀ψ uses the Skolem witness of the negation of the body: skWitnessTerm … ψ.not (mirroring skWitnessStep in the full Γ*, which adds the witness body of ¬ψ for every .all ψ). So the successor language must carry a local Skolem symbol for ¬ψ, not just for the members of Γ themselves. skolemNeed Γ is the countable enlargement that provisions exactly these symbols.

      The negated body contributed by a single family member: a universal ∀ψ (arity n) contributes ¬ψ (arity n+1) — the formula whose local Skolem symbol the EM all-case consumes; every other form contributes nothing.

      Equations
      Instances For

        allNegBody is pointwise countable (a singleton on , empty otherwise).

        The Skolem-need family: Γ together with the negated bodies of its universal members. This — not Γ itself — is the family the successor stage Skolemizes.

        Equations
        Instances For

          The Skolem-need family is countable when Γ is.

          Γ is contained in its Skolem-need family.

          theorem FirstOrder.Language.not_mem_skolemNeed_of_all_mem {L : Language} {Γ : Set ((n : ) × L.BoundedFormulaω Empty n)} {n : } {ψ : L.BoundedFormulaω Empty (n + 1)} (h : n, ψ.all Γ) :

          The guarantee the EM all-case needs: if ∀ψ ∈ Γ then ¬ψ ∈ skolemNeed Γ, so the local Skolem language over skolemNeed Γ carries a witness symbol for ∃ xₙ, ¬ψ.

          def FirstOrder.Language.skolemNeedSymbol {L : Language} {Γ : Set ((n : ) × L.BoundedFormulaω Empty n)} {n : } {ψ : L.BoundedFormulaω Empty (n + 1)} (h : n, ψ.all Γ) :

          The local Skolem witness symbol for (the negated body of) a universal family member — the arity-n function symbol of localSkolem L (skolemNeed Γ) witnessing ∃ xₙ, ¬ψ.

          Equations
          Instances For

            Seed of the successor family #

            The seed of Γ_{k+1} (before the subformula/component closure) has three parts. Each is countable when Γ is, so the whole seed is.

            The lift of Γ into the successor language L.sum (localSkolem L Γ) along the left injection LHom.sumInl. Arity is preserved.

            Equations
            Instances For

              The lift of a countable family is countable (image of a countable set).

              The Skolem-witness seed: the witness formula of every local Skolem symbol. Indexed by the symbol type Σ n, (localSkolem L Γ).Functions n, which is countable when Γ is.

              Equations
              Instances For

                The Skolem-witness seed is countable: it is the range of a map out of the (countable) local Skolem symbol type.

                Reserved deForm-closure seed (placeholder). The truth lemma's family must be closed under the de-substituted formulas deForm S φ ts of its members; but deForm is defined over a term-model carrier J (see EMTermModel.deForm), which does not exist at the pure language-tower level. So this slot is currently empty and will be filled once the local colimit and its term model are in place. It is named (not left implicit) so the closure and its countability certificate already route through it.

                Equations
                Instances For

                  The reserved deForm seed is (trivially) countable.

                  The full seed of the successor family: the lift of Γ, the Skolem-witness bodies, and the reserved deForm slot.

                  Equations
                  Instances For

                    The successor seed is countable when Γ is.

                    The successor family Γ_{k+1} #

                    The successor family: the subformula/component closure (setClosure bfSubformulas) of the successor seed. Closing under bfSubformulas makes Γ_{k+1} closed under immediate subformulas and countable-connective components — the structural-induction requirement of the truth lemma — while the Skolem-witness and (reserved) deForm generators sit in the seed.

                    Equations
                    Instances For

                      The successor family is countable when Γ is: setClosure of a countable seed under the pointwise-countable subformula step.

                      The seed is contained in the successor family.

                      The stage bundle and the tower #

                      A single stage of the local Skolem tower: a language, a family of its formulas, and countability certificates for the family and the language's symbol types. Bundling these keeps the mutual language/family recursion a plain -indexed sequence rather than a dependent recursion.

                      Instances For

                        The successor stage: Skolemize the current Skolem-need family (Lang.sum (localSkolem Lang (skolemNeed Gamma))skolemNeed so the EM all-case witness symbol for ¬ψ of each ∀ψ ∈ Gamma exists) and replace the family by its successor closure. Every countability certificate is carried forward: the family via localGammaNext_countable, the language via sum_sigma_functions_countable / sum_sigma_relations_countable together with localSkolem's own countability (fed by skolemNeed_countable).

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The local Skolem tower seeded at s₀: stage 0 is the seed and each successor Skolemizes the current stage.

                          Equations
                          Instances For
                            @[simp]
                            theorem FirstOrder.Language.localStage_succ (s₀ : LocalStage) (k : ) :
                            localStage s₀ (k + 1) = (localStage s₀ k).succ

                            Projections consumed by the later local-colimit chunk #

                            The stage-k local language L_k.

                            Equations
                            Instances For
                              def FirstOrder.Language.Γlocal (s₀ : LocalStage) (k : ) :
                              Set ((n : ) × (Llocal s₀ k).BoundedFormulaω Empty n)

                              The stage-k local family Γ_k.

                              Equations
                              Instances For
                                @[simp]
                                @[simp]
                                theorem FirstOrder.Language.Llocal_succ (s₀ : LocalStage) (k : ) :
                                Llocal s₀ (k + 1) = (Llocal s₀ k).sum ((Llocal s₀ k).localSkolem (skolemNeed (Γlocal s₀ k)))
                                def FirstOrder.Language.LlocalHom (s₀ : LocalStage) (k : ) :
                                Llocal s₀ k →ᴸ Llocal s₀ (k + 1)

                                The stage-k → stage-(k+1) language inclusion: the left injection of the Skolemizing sum. The later colimit's cocone is assembled from these.

                                Equations
                                Instances For

                                  Each stage-k family is countable.

                                  Each stage-k language has countably many function symbols.

                                  Each stage-k language has countably many relation symbols.

                                  Family-membership coherence up the tower #

                                  theorem FirstOrder.Language.liftGamma_mem_Γlocal_succ (s₀ : LocalStage) {k : } {p : (n : ) × (Llocal s₀ k).BoundedFormulaω Empty n} (hp : p Γlocal s₀ k) :

                                  Lift stability: a stage-k family member, lifted along the stage inclusion LlocalHom, lies in the successor family (via subset_skolemNeed, the liftGamma part of the seed, and localSeed_subset_localGammaNext).

                                  theorem FirstOrder.Language.bfSubformulas_subset_Γlocal_succ (s₀ : LocalStage) {k : } {p : (n : ) × (Llocal s₀ (k + 1)).BoundedFormulaω Empty n} (hp : p Γlocal s₀ (k + 1)) :
                                  bfSubformulas pΓlocal s₀ (k + 1)

                                  Successor-stage closure: every successor family is closed under immediate subformulas/components (it is a setClosure bfSubformulas). Stage 0 — the raw seed — need not be closed, hence the lift wrapper bfSubformulas_lift_subset_Γlocal_succ below.

                                  Lift-into-closure wrapper: the subformulas/components of the lift of any stage-k member lie in the (subformula-closed) successor family. Working one stage up always makes closure available, even from the unclosed seed stage.

                                  theorem FirstOrder.Language.liftNegBody_mem_Γlocal_succ (s₀ : LocalStage) {k n : } {ψ : (Llocal s₀ k).BoundedFormulaω Empty (n + 1)} (h : n, ψ.all Γlocal s₀ k) :

                                  The lift of the negated body of a universal family member is in the successor family (the seed lifts the whole skolemNeed enlargement, not just Γ_k). Feeds the local truth lemma's all case, whose Skolemized body ¬ψ lives one stage up.

                                  Witness-body membership: for every universal member ∀ψ of the stage-k family, the local Skolem witness body of ¬ψ (built from the skolemNeed symbol) lies in the successor family — the formula the rebased EM truth lemma's all case will need in its readiness data.