Documentation

InfinitaryLogic.Methods.SkolemClosure

Staged set-closure (generic core for the Skolem-closed family Γ*) #

The bespoke EM truth lemma inducts over a countable formula family Γ* that is closed under subformulas, countable-connective components, existential Skolem-witness instances, and the template renamings. This file provides the language-agnostic staged-closure machinery — closing a seed set Γ₀ under a pointwise expansion stepOne : α → Set α via explicit stages (no impredicative least-closure) — together with countability and the consumer-facing closure lemma.

The concrete formula stepOne (subformulas / components / Skolem witnesses / renamings) inside skolemColim L is layered on top in a later chunk; Γ* will be setClosure of that step applied to the lifted EM starting family.

def FirstOrder.Language.iterClosure {α : Type u_1} (stepOne : αSet α) (Γ₀ : Set α) :
Set α

Stages of closing Γ₀ under the pointwise expansion stepOne: stage 0 is the seed, each successor adds stepOne x for every x already present. Increasing by construction.

Equations
Instances For
    def FirstOrder.Language.setClosure {α : Type u_1} (stepOne : αSet α) (Γ₀ : Set α) :
    Set α

    The staged closure of Γ₀ under stepOne: the union over all finite stages.

    Equations
    Instances For
      theorem FirstOrder.Language.subset_setClosure {α : Type u_1} (stepOne : αSet α) (Γ₀ : Set α) :
      Γ₀setClosure stepOne Γ₀

      The seed is contained in the closure (it is stage 0).

      theorem FirstOrder.Language.stepOne_subset_setClosure {α : Type u_1} (stepOne : αSet α) (Γ₀ : Set α) {x : α} (hx : x setClosure stepOne Γ₀) :
      stepOne xsetClosure stepOne Γ₀

      Closure property (consumer-facing): the expansion of any member stays in the closure. If x ∈ Γ* then stepOne x ⊆ Γ*.

      theorem FirstOrder.Language.iterClosure_countable {α : Type u_1} (stepOne : αSet α) {Γ₀ : Set α} (hΓ₀ : Γ₀.Countable) (hstep : ∀ (x : α), (stepOne x).Countable) (k : ) :
      (iterClosure stepOne Γ₀ k).Countable

      Each stage is countable, given a countable seed and a pointwise-countable step.

      theorem FirstOrder.Language.setClosure_countable {α : Type u_1} (stepOne : αSet α) {Γ₀ : Set α} (hΓ₀ : Γ₀.Countable) (hstep : ∀ (x : α), (stepOne x).Countable) :
      (setClosure stepOne Γ₀).Countable

      The closure is countable, given a countable seed and a pointwise-countable step.

      Subformula / connective-component step (any language) #

      Immediate subformulas and countable-connective components of a formula, over any language: imp gives both parts, all gives the body (one higher arity), iSup/iInf give all countably-many components, and the atomic forms give none.

      Equations
      Instances For

        Staged formulas and the colimit projection #

        @[reducible, inline]

        A colimit-language formula packaged with its arity.

        Equations
        Instances For
          @[reducible, inline]

          A formula tagged with the finite language stage at which it lives. The closure works at this staged level — so the existential-witness Skolem term is directly available at the next stage — and projects to a colimit formula only via toColimFormula. This avoids ever inverting the colimit quotient.

          Equations
          Instances For

            Project a staged formula to a colimit-language formula, transporting along the stage inclusion skolemStageInclusion L k. Γ* in the colimit language is the image of the staged closure under this map.

            Equations
            Instances For

              The subformula/component step at the staged level: take bfSubformulas of the stage-k formula, keeping the stage k fixed.

              Equations
              Instances For

                The staged subformula step is pointwise countable.

                Existential Skolem-witness step (stage kk+1) #

                The Skolem-witness body of ∃x ψ (with ψ the (n+1)-ary matrix at stage k): substitute the stage-(k+1) Skolem term skolemTerm ψ (of the remaining n variables) for the witnessed variable. Built with the template substitution pattern openBounds → subst → relabel, placing the Skolem term in the last slot. Lives at stage k+1 and arity n.

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

                  The Skolem-witness step: Skolemize the (primitive) universal quantifier. For ∀x φ at stage k, add the witness body of its negation ∃x ¬φ, namely (¬φ)[skolemTerm (¬φ)], at stage k+1. Since ∃xψ = ¬∀x¬ψ, this covers existentials too. Other forms add nothing.

                  Equations
                  Instances For

                    The Skolem-witness step is pointwise countable (a singleton on , empty otherwise).

                    The Skolem-closed staged family Γ* #

                    The full staged closure step: subformulas/components together with Skolem witnesses. (Template renamings are added where the truth lemma needs them, in a later chunk.)

                    Equations
                    Instances For

                      The Skolem-closed staged family generated by a seed set of staged formulas.

                      Equations
                      Instances For
                        theorem FirstOrder.Language.Γstar_countable (L : Language) {Γ₀ : Set L.SkFormula} (hΓ₀ : Γ₀.Countable) :
                        (L.Γstar Γ₀).Countable

                        Γ* is countable when the seed is.

                        theorem FirstOrder.Language.subset_Γstar (L : Language) (Γ₀ : Set L.SkFormula) :
                        Γ₀L.Γstar Γ₀

                        The seed is contained in Γ*.

                        theorem FirstOrder.Language.skStep_subset_Γstar (L : Language) {Γ₀ : Set L.SkFormula} {χ : L.SkFormula} ( : χ L.Γstar Γ₀) :
                        L.skStep χL.Γstar Γ₀

                        Closure property of Γ*: the full step of any member stays in Γ*.

                        theorem FirstOrder.Language.skSubStep_subset_Γstar (L : Language) {Γ₀ : Set L.SkFormula} {χ : L.SkFormula} ( : χ L.Γstar Γ₀) :
                        L.skSubStep χL.Γstar Γ₀

                        Subformulas/components of a Γ* member stay in Γ*.

                        theorem FirstOrder.Language.skWitnessStep_subset_Γstar (L : Language) {Γ₀ : Set L.SkFormula} {χ : L.SkFormula} ( : χ L.Γstar Γ₀) :
                        L.skWitnessStep χL.Γstar Γ₀

                        The Skolem witness of a Γ* member stays in Γ*.

                        Colimit image and enumeration #

                        The colimit-language image of Γ* is countable.

                        theorem FirstOrder.Language.exists_ΓEnum (L : Language) {Γ₀ : Set L.SkFormula} (hΓ₀ : Γ₀.Countable) (hne : (L.toColimFormula '' L.Γstar Γ₀).Nonempty) :
                        ∃ (ΓEnum : L.ColimFormula), L.toColimFormula '' L.Γstar Γ₀ = Set.range ΓEnum

                        An enumeration of Γ*'s colimit image as a sequence ℕ → ColimFormula L, suitable as the formula family fed to morleyHanfExtractionTail_holds (whose extraction yields tail-indiscernibility on Set.range). Exists since the image is countable and nonempty.