Constant generalization: the ∀-twin of genEx, and countable-conjunction bounds #
Neutral companion to ConstantElimination.lean. Where genEx j ρ existentially generalizes the
constant c_j out of a sentence, genAll j ρ generalizes it universally, with the matching
realization lemma, occurrence calculus, and the two entailment-acceptance sequents:
entails_genAll_of_entails(side 1):Γ ⊨ σ(c) ⟹ Γ ⊨ ∀x σ(x),cfresh forΓ. UnlikegenEx's side-1 sequent this genuinely needs freshness —∀-introduction is not weakening;entails_not_genAll_of_entails_not(side 2):Δ, δ(c) ⊨ ¬σ(c) ⟹ Δ, ∃x δ(x) ⊨ ¬∀x σ(x),cfresh forΔ.
genAll is class-preserving for the quantifier hierarchy of Lomega1omega/QuantifierClass.lean
(isUniversal_genAll), because all is admissible at the universal sign and neither constant
abstraction nor relabel moves the class; genEx, dually, is never universal
(not_isUniversal_genEx). That pair of facts is what makes an asymmetric separator class possible
at all, so both live here rather than inside any one consumer.
The second half collects the class and occurrence bounds for Theoryω.conjunction, the
countable conjunction of a theory: existentiality and the three symbol/support bounds descend from
the members.
Nothing here is specific to Malitz interpolation (issue #15) or to end extensions (issue #16); both consume it.
Universally generalize the constant c_j out of a sentence: abstract c_j into the free
variable 0, then universally quantify it. The ∀-twin of genEx.
Equations
Instances For
c_j is not in the constant support of its own universal generalization.
The exact signed-occurrence equation for genAll. Universal generalization adds one
positive occurrence and moves nothing else: at sign true the right disjunct is absorbed, and at
sign false the occurrences are exactly those of ρ.
This is what lets a labelled budget absorb a generalization whose universal parent already sits on the same side.
The exact signed-occurrence equation for genEx, the dual of hasQuantSigned_genAll:
existential generalization adds one negative occurrence and moves nothing else.
Acceptance, Γ side: Γ ⊨ σ(c) upgrades to Γ ⊨ ∀x σ(x) when c_j is fresh for Γ.
Unlike genEx's Γ-side sequent this genuinely needs freshness — ∀-introduction is not
weakening.
Negative acceptance without freshness. If Δ already refutes σ(c), it refutes
∀x σ(x) outright: the universal is instantiated at c's own interpretation, so nothing has to
be fresh for Δ and no witness is consumed.
This is the shape a labelled pair needs when the separator is abstracted on the side that does not
own c; entails_not_genAll_of_entails_not is the different, witness-passing sequent.