The free-variable support of an infinitary formula #
The free-variable support φ.freeVarSupport of an infinitary formula φ is the set of free
variables occurring in one of its atoms. It is a set rather than a Finset: an infinitary
conjunction or disjunction may mention infinitely many free variables, one in each branch.
For a finitary formula it is the coercion of Mathlib's BoundedFormula.freeVarFinset, and over a
countable carrier, in particular in L_{ω₁ω}, it is countable.
The main result realize_congr_freeVarSupport says that the realization of a formula depends
only on the values of the free-variable valuation on the support. This is the infinitary
analogue of the finitary fact that a formula only sees the variables it mentions.
Main definitions #
FirstOrder.Language.BoundedFormulaInf.freeVarSupport: the set of free variables of an infinitary formula.
Main results #
FirstOrder.Language.BoundedFormulaInf.realize_congr_freeVarSupport: valuations of the free variables that agree on the support give the same realization.FirstOrder.Language.BoundedFormula.freeVarSupport_toInf: on finitary formulas the support isBoundedFormula.freeVarFinset.FirstOrder.Language.BoundedFormulaInf.countable_freeVarSupport: over a countable carrier the support is countable.FirstOrder.Language.BoundedFormulaInf.freeVarSupport_mapBound,FirstOrder.Language.BoundedFormulaInf.freeVarSupport_castLEandFirstOrder.Language.BoundedFormulaInf.freeVarSupport_reindex: relabelling bound slots, weakening and carrier transport keep the support.TauCeti.BoundedFormulaInf.freeVarSupport_substandTauCeti.BoundedFormulaInf.freeVarSupport_relabel: the support after substitution and free-variable relabelling.
References #
- The definition and the congruence law follow Mathlib's finitary
FirstOrder.Language.BoundedFormula.freeVarFinsetand its realization lemmaBoundedFormula.realize_restrictFreeVarinMathlib/ModelTheory/Syntax.leanandMathlib/ModelTheory/Semantics.lean.
The free-variable support of an infinitary formula: the set of free variables that occur in one of its atoms. Infinitary connectives take the union over all their branches, so the support may be infinite.
Instances For
Defining equations #
The false formula has no free variables.
The free variables of an equation are those of its two terms.
The free variables of an implication are those of either side.
Universal quantification binds a slot, not a free variable, so it keeps the support.
The free variables of a disjunction over the carrier are those of its branches.
The free variables of a conjunction over the carrier are those of its branches.
Derived connectives #
Negation keeps the support.
⊥ has no free variables.
⊤ has no free variables.
The free variables of φ ⊓ ψ are those of φ or ψ.
The free variables of φ ⊔ ψ are those of φ or ψ.
The free variables of φ.iff ψ are those of φ or ψ.
Existential quantification keeps the support.
Universally closing the bound-variable slots keeps the support.
Existentially closing the bound-variable slots keeps the support.
Bound-variable relabelling, weakening and carrier transport #
Relabelling the bound-variable slots keeps the support.
Weakening keeps the support.
The support of a coded conjunction is the union of the supports of its conjuncts: the
padding ⊤ has no free variables.
The support of a coded disjunction is the union of the supports of its disjuncts: the
padding ⊥ has no free variables.
Transporting a formula along a coding of its carrier keeps the support.
Countability #
Over a countable carrier, in particular in L_{ω₁ω}, an infinitary formula has countably many
free variables.
Realization depends only on the support #
Realization depends only on the free-variable support: two valuations of the free
variables that agree on φ.freeVarSupport realize φ at the same bound-variable valuations.
On a finitary formula, embedded at any carrier, the free-variable support is the coercion of
Mathlib's BoundedFormula.freeVarFinset. In particular it is finite.
The support after substitution is the union of the variables of the terms substituted for the free variables in the support.
The support after relabelling consists of the free variables b such that g sends a
variable of the original support to Sum.inl b. Variables sent to new bound slots drop out.