Documentation

InfinitaryLogic.Methods.Henkin.CountableCompletion.GeneratedUniverse

The generated enumeration universe U (issue #8 tranche 2, commit 1) #

GenU r₁ r₂ is the countable domain the fair Henkin enumeration runs through: the two roots r₁, r₂, all constant equalities, and all atomic relation instances over constants, closed under the unary C0C4/quantifier decomposition targets. Per the audit (§6b, §8) it is NOT closed under forming new infinitary conjunctions/disjunctions — only components of existing ones.

Design. The binary atomic closures (equality symmetry/transitivity, relation one-coordinate replacement) are handled by seeding: all constant equalities and all constant atomic relation instances are put in the seed (countably many, using [Countable (Σ l, L.Relations l)]), so those closure targets already lie in U. Only the unary connective / quantifier rules need reachability closure, which admits the component-path countability argument of Fragment.generated_countable.

Acceptance gate (this commit): both roots ∈ U; closure under every C0C4 decomposition target and under instConst; all constant reflexivity/symmetry/transitivity equalities and atomic relation replacements present; Countable ↥U; every member has finite constant support. The relational-core collapse lemma exists_eq_constTerm (every closed term is a constant) is included — it drives the later term-model plumbing.

The relational-core collapse lemma #

Collapse (relational core): over a relational base, every closed L[[ℕ]]-term is a constant.

Seeds #

A constant as a term inside a sentence (EmptyFin 0 variable context).

Equations
Instances For

    The closed constant constTerm a, relabeled into the sentence-term context, is constTermS a.

    The atomic relation instance R(c_{g 0}, …).

    Equations
    Instances For

      The seed: the two roots, all constant equalities, all constant atomic relation instances.

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

        Reachability under the unary decomposition rules #

        One-step reachability under the unary C0C4/quantifier decomposition targets.

        Instances For
          theorem FirstOrder.Language.seed_subset_genU {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} :
          seed r₁ r₂GenU r₁ r₂
          theorem FirstOrder.Language.root₁_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} :
          r₁ GenU r₁ r₂
          theorem FirstOrder.Language.root₂_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} :
          r₂ GenU r₁ r₂
          theorem FirstOrder.Language.constEq_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} (a b : ) :
          constEq a b GenU r₁ r₂
          theorem FirstOrder.Language.eqRefl_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} (c : ) :
          constEq c c GenU r₁ r₂
          theorem FirstOrder.Language.relInst_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} {l : } (R : L.Relations l) (g : Fin l) :
          relInst R g GenU r₁ r₂

          Closure under the decomposition targets #

          theorem FirstOrder.Language.imp_right_mem {L : Language} {r₁ r₂ φ ψ : (L.withConstants ).Sentenceω} (h : BoundedFormulaω.imp φ ψ GenU r₁ r₂) :
          ψ GenU r₁ r₂
          theorem FirstOrder.Language.negimp_left_mem {L : Language} {r₁ r₂ φ ψ : (L.withConstants ).Sentenceω} (h : (BoundedFormulaω.imp φ ψ).not GenU r₁ r₂) :
          φ GenU r₁ r₂
          theorem FirstOrder.Language.iInf_comp_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} {φs : (L.withConstants ).Sentenceω} (k : ) (h : BoundedFormulaω.iInf φs GenU r₁ r₂) :
          φs k GenU r₁ r₂
          theorem FirstOrder.Language.negiInf_comp_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} {φs : (L.withConstants ).Sentenceω} (k : ) (h : (BoundedFormulaω.iInf φs).not GenU r₁ r₂) :
          BoundedFormulaω.not (φs k) GenU r₁ r₂
          theorem FirstOrder.Language.iSup_comp_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} {φs : (L.withConstants ).Sentenceω} (k : ) (h : BoundedFormulaω.iSup φs GenU r₁ r₂) :
          φs k GenU r₁ r₂
          theorem FirstOrder.Language.negiSup_comp_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} {φs : (L.withConstants ).Sentenceω} (k : ) (h : (BoundedFormulaω.iSup φs).not GenU r₁ r₂) :
          BoundedFormulaω.not (φs k) GenU r₁ r₂
          theorem FirstOrder.Language.all_inst_mem {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} {φ : (L.withConstants ).BoundedFormulaω Empty 1} (c : ) (h : φ.all GenU r₁ r₂) :
          instConst c φ GenU r₁ r₂

          Countability of the seed #

          Countability of the generated universe (component-path encoding) #

          theorem FirstOrder.Language.uPath_append {L : Language} (p : (L.withConstants ).Sentenceω) (l₁ l₂ : List ( × )) :
          uPath p (l₁ ++ l₂) = (uPath p l₁).bind fun (x : (L.withConstants ).Sentenceω) => uPath x l₂

          A single coded step lands inside the reachability set.

          The path characterization: ReachFrom S is exactly what is reachable from S by finitely many coded steps.

          theorem FirstOrder.Language.genU_countable {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} [Countable ((l : ) × L.Relations l)] :
          (GenU r₁ r₂).Countable

          Countability of U.

          Finite constant support #

          Finite constant support: assuming the roots have finite constant support, every member of U does.

          Minimality #

          GenU is the smallest set containing the seed and closed under the unary rules: the generic induction principle for the generated universe. (The current paired construction carries its side-membership bound as an explicit invariant instead of instantiating this principle, so genU_le presently has no in-tree consumer; it is the library-level minimality statement.)

          theorem FirstOrder.Language.genU_le {L : Language} {r₁ r₂ : (L.withConstants ).Sentenceω} {P : Set (L.withConstants ).Sentenceω} (hseed : seed r₁ r₂P) (himp_negleft : ∀ {φ ψ : (L.withConstants ).Sentenceω}, BoundedFormulaω.imp φ ψ PBoundedFormulaω.not φ P) (himp_right : ∀ {φ ψ : (L.withConstants ).Sentenceω}, BoundedFormulaω.imp φ ψ Pψ P) (hnegimp_left : ∀ {φ ψ : (L.withConstants ).Sentenceω}, (BoundedFormulaω.imp φ ψ).not Pφ P) (hnegimp_right : ∀ {φ ψ : (L.withConstants ).Sentenceω}, (BoundedFormulaω.imp φ ψ).not PBoundedFormulaω.not ψ P) (hiInf : ∀ {φs : (L.withConstants ).Sentenceω} (k : ), BoundedFormulaω.iInf φs Pφs k P) (hnegiInf : ∀ {φs : (L.withConstants ).Sentenceω} (k : ), (BoundedFormulaω.iInf φs).not PBoundedFormulaω.not (φs k) P) (hiSup : ∀ {φs : (L.withConstants ).Sentenceω} (k : ), BoundedFormulaω.iSup φs Pφs k P) (hnegiSup : ∀ {φs : (L.withConstants ).Sentenceω} (k : ), (BoundedFormulaω.iSup φs).not PBoundedFormulaω.not (φs k) P) (hall : ∀ {φ : (L.withConstants ).BoundedFormulaω Empty 1} (c : ), φ.all PinstConst c φ P) (hnegall : ∀ {φ : (L.withConstants ).BoundedFormulaω Empty 1} (c : ), φ.all.not PBoundedFormulaω.not (instConst c φ) P) :
          GenU r₁ r₂P