Documentation

InfinitaryLogic.Methods.LocalColimit

The countable local colimit language L_Γ (localColim) and its cocone #

The hinge of the L_Γ pivot. LocalTower.lean builds the mutually recursive tower Llocal s₀ k / Γlocal s₀ k and proves every stage countable; this file assembles the tower into an actual colimit language and shows countability survives to the colimit — the object the EM term model must be re-based over (the full skolemColim is uncountable, so its atom diagram cannot fit inside the countable family the tail extraction delivers).

Mirrors the skolemColim layer of SkolemColimit.lean exactly (same DirectedColim quotient, same Quot.lift colimit structure, same definitional stage coherence), plus what skolemColim cannot have: countability of the colimit symbol types and of the colimit image ΓlocalColim of the staged families.

Next chunks (not here): the local atom/deForm seed and its countability, then the EMContext re-base over localColim.

theorem FirstOrder.Language.DirectedColim.countable {F : Type} {φ : (k : ) → F kF (k + 1)} (h : ∀ (k : ), Countable (F k)) :

A sequential colimit of countable types is countable: the colimit is a quotient of the countable total space Σ k, F k. (Generic companion to DirectedColim; the reason the local colimit stays countable while skolemColim does not.)

theorem FirstOrder.Language.BoundedFormulaω.mapLanguage_mapLanguage {L₁ L₂ L₃ : Language} (g : L₁ →ᴸ L₂) (h : L₂ →ᴸ L₃) {α : Type u_1} {n : } (φ : L₁.BoundedFormulaω α n) :

mapLanguage composes: transporting along g then h is transporting along h.comp g. (A Mathlib-gap-style generic lemma; belongs in Lomega1omega/Operations.lean eventually — localized here, where the cocone coherence needs it, to keep the default build path untouched.)

Per-arity function-symbol countability at each stage (the fibre of the stagewise all-arity certificate Llocal_fun_countable).

Per-arity relation-symbol countability at each stage.

The colimit language L_Γ and the stage cocone #

The local colimit language L_Γ = colim_k (Llocal s₀ k): function/relation symbols at each arity are the sequential colimits of the staged symbol types along LlocalHom. Every L_Γ-symbol lives at a finite stage; in particular every family formula's existential acquires its local Skolem function at the next stage, so L_Γ is Skolem-complete for the family.

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

    The cocone: the inclusion of stage k into the local colimit language L_Γ. On symbols it is the colimit inclusion DirectedColim.incl k.

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

      Cocone compatibility on function symbols: pushing a stage-k symbol one stage up and then into the colimit is the same as including it directly.

      Cocone compatibility on relation symbols.

      Cocone compatibility as an LHom equation: including stage k via stage k+1 is the direct inclusion. The formula-level coherence (toLocalColimFormula_step) is this plus mapLanguage composition.

      Countability of the colimit language — the payoff of the pivot #

      Per-arity: the colimit function symbols are countable.

      Per-arity: the colimit relation symbols are countable.

      The local colimit language has countably many function symbols — in contrast to skolemColim, whose function-symbol type has the cardinality of the continuum.

      The local colimit language has countably many relation symbols.

      Stage structures on a fixed model and the colimit structure #

      @[implicit_reducible]
      noncomputable def FirstOrder.Language.localStageStructure (s₀ : LocalStage) {M : Type} [s₀.Lang.Structure M] [Nonempty M] (k : ) :
      (Llocal s₀ k).Structure M

      The stage-k structure on a fixed s₀.Lang-model M: stage 0 is M's own structure, and each successor stage adds the Hilbert-choice interpretation of the new local Skolem symbols (localSkolemStructure) on top of the previous stage, via the sum structure.

      Equations
      Instances For
        theorem FirstOrder.Language.localStageStructure_funMap_succ (s₀ : LocalStage) {M : Type} [s₀.Lang.Structure M] [Nonempty M] {k m : } (f : (Llocal s₀ k).Functions m) (x : Fin mM) :

        Stage coherence (functions): a stage-k symbol pushed to stage k+1 interprets the same way. This is the cocone-compatibility witnessing the colimit interpretation is well-defined.

        theorem FirstOrder.Language.localStageStructure_relMap_succ (s₀ : LocalStage) {M : Type} [s₀.Lang.Structure M] [Nonempty M] {k m : } (r : (Llocal s₀ k).Relations m) (x : Fin mM) :

        Stage coherence (relations).

        @[implicit_reducible]
        noncomputable def FirstOrder.Language.localColimStructure (s₀ : LocalStage) {M : Type} [s₀.Lang.Structure M] [Nonempty M] :

        The colimit structure: an L_Γ-symbol is interpreted through any stage representative, well-defined by the (definitional) stage coherence above.

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

          The stage inclusion is an expansion: the colimit structure restricts to the stage structure along LlocalInclusion (the colimit funMap/RelMap on an included symbol computes — by rfl — to the stage interpretation).

          theorem FirstOrder.Language.realize_map_LlocalInclusion (s₀ : LocalStage) {M : Type} [s₀.Lang.Structure M] [Nonempty M] (k : ) {n : } (φ : (Llocal s₀ k).BoundedFormulaω Empty n) (v : EmptyM) (xs : Fin nM) :

          Semantic preservation by stage inclusion: transporting a stage-k formula into L_Γ along LlocalInclusion preserves its realization in M. Immediate from realize_mapLanguage and the expansion property above.

          The colimit image of the staged families #

          Transport an arity-tagged stage-k formula into the local colimit language along the cocone inclusion.

          Equations
          Instances For

            The colimit family Γ_Γ ⊆ L_Γ-formulas: the union over all stages of the colimit images of the staged families Γlocal s₀ k. This is the family over which the re-based EM term model's truth lemma will run.

            Equations
            Instances For

              Stage membership transports into the colimit family.

              The colimit family is countable: a countable union of images of the (stagewise countable) families. Together with localColim_fun_countable/_rel_countable, this says the local Skolem construction really does produce a countable language and family in the colimit — the exact size interface the tail extraction (MorleyHanfExtractionTail) can serve.

              Formula-level cocone coherence #

              The wrappers the EM rebase will consume, so its proofs never touch raw mapLanguage equalities.

              Formula-level cocone coherence: a stage-k formula lifted one stage (along LlocalHom) and then included into the colimit is the same colimit formula as including it directly.

              Lifted membership: the stage-(k+1) lift of a stage-k family member has its colimit image in ΓlocalColim — and by toLocalColimFormula_step that image coincides with the direct stage-k image, so the two membership routes agree.

              Witness-body membership in the colimit family: for every universal member ∀ψ of a stage family, the local Skolem witness body of ¬ψ (available at the next stage thanks to skolemNeed) has its colimit image in ΓlocalColim — the closure fact the rebased truth lemma's all-case readiness will cite.