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 C0–C4/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 C0–C4 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 #
The closed constant constTerm a, relabeled into the sentence-term context, is
constTermS a.
The constant equality c_a = c_b.
Equations
Instances For
The atomic relation instance R(c_{g 0}, …).
Equations
- FirstOrder.Language.relInst R g = FirstOrder.Language.BoundedFormulaω.rel (Sum.inl R) fun (i : Fin l) => FirstOrder.Language.constTermS (g i)
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 C0–C4/quantifier decomposition targets.
- base {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {p : (L.withConstants ℕ).Sentenceω} : p ∈ S → ReachFrom S p
- imp_negleft {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φ ψ : (L.withConstants ℕ).Sentenceω} : ReachFrom S (BoundedFormulaω.imp φ ψ) → ReachFrom S (BoundedFormulaω.not φ)
- imp_right {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φ ψ : (L.withConstants ℕ).Sentenceω} : ReachFrom S (BoundedFormulaω.imp φ ψ) → ReachFrom S ψ
- negimp_left {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φ ψ : (L.withConstants ℕ).Sentenceω} : ReachFrom S (BoundedFormulaω.imp φ ψ).not → ReachFrom S φ
- negimp_right {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φ ψ : (L.withConstants ℕ).Sentenceω} : ReachFrom S (BoundedFormulaω.imp φ ψ).not → ReachFrom S (BoundedFormulaω.not ψ)
- iInf_comp {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φs : ℕ → (L.withConstants ℕ).Sentenceω} (k : ℕ) : ReachFrom S (BoundedFormulaω.iInf φs) → ReachFrom S (φs k)
- negiInf_comp {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φs : ℕ → (L.withConstants ℕ).Sentenceω} (k : ℕ) : ReachFrom S (BoundedFormulaω.iInf φs).not → ReachFrom S (BoundedFormulaω.not (φs k))
- iSup_comp {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φs : ℕ → (L.withConstants ℕ).Sentenceω} (k : ℕ) : ReachFrom S (BoundedFormulaω.iSup φs) → ReachFrom S (φs k)
- negiSup_comp {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φs : ℕ → (L.withConstants ℕ).Sentenceω} (k : ℕ) : ReachFrom S (BoundedFormulaω.iSup φs).not → ReachFrom S (BoundedFormulaω.not (φs k))
- all_inst {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φ : (L.withConstants ℕ).BoundedFormulaω Empty 1} (c : ℕ) : ReachFrom S φ.all → ReachFrom S (instConst c φ)
- negall_inst {L : Language} {S : Set (L.withConstants ℕ).Sentenceω} {φ : (L.withConstants ℕ).BoundedFormulaω Empty 1} (c : ℕ) : ReachFrom S φ.all.not → ReachFrom S (BoundedFormulaω.not (instConst c φ))
Instances For
The generated universe.
Equations
- FirstOrder.Language.GenU r₁ r₂ = {p : (L.withConstants ℕ).Sentenceω | FirstOrder.Language.ReachFrom (FirstOrder.Language.seed r₁ r₂) p}
Instances For
Closure under the decomposition targets #
Countability of the seed #
Countability of the generated universe (component-path encoding) #
One decomposition step, coded by (tag, index). Matching on the tag first keeps the step
reducible on concrete members (the sentence discriminant is inspected only after the tag has
already selected the intended rule).
Equations
- FirstOrder.Language.uStep (φ.imp ψ) c = some φ.not
- FirstOrder.Language.uStep (φ.imp ψ) c = some ψ
- FirstOrder.Language.uStep ((φ.imp ψ).imp FirstOrder.Language.BoundedFormulaω.falsum) c = some φ
- FirstOrder.Language.uStep ((φ.imp ψ).imp FirstOrder.Language.BoundedFormulaω.falsum) c = some ψ.not
- FirstOrder.Language.uStep (FirstOrder.Language.BoundedFormulaω.iInf φs) c = some (φs c.2)
- FirstOrder.Language.uStep ((FirstOrder.Language.BoundedFormulaω.iInf φs).imp FirstOrder.Language.BoundedFormulaω.falsum) c = some (φs c.2).not
- FirstOrder.Language.uStep (FirstOrder.Language.BoundedFormulaω.iSup φs) c = some (φs c.2)
- FirstOrder.Language.uStep ((FirstOrder.Language.BoundedFormulaω.iSup φs).imp FirstOrder.Language.BoundedFormulaω.falsum) c = some (φs c.2).not
- FirstOrder.Language.uStep φ.all c = some (FirstOrder.Language.instConst c.2 φ)
- FirstOrder.Language.uStep (φ.all.imp FirstOrder.Language.BoundedFormulaω.falsum) c = some (FirstOrder.Language.BoundedFormulaω.not (FirstOrder.Language.instConst c.2 φ))
- FirstOrder.Language.uStep p✝ c = none
Instances For
Iterated steps along a list of codes.
Equations
- FirstOrder.Language.uPath p [] = some p
- FirstOrder.Language.uPath p (c :: l) = (FirstOrder.Language.uStep p c).bind fun (x : (L.withConstants ℕ).Sentenceω) => FirstOrder.Language.uPath x l
Instances For
The path characterization: ReachFrom S is exactly what is reachable from S by
finitely many coded steps.
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.)