Lindström generalized quantifiers #
[UPSTREAM] candidate. A generalized quantifier over a language L, in Lindström's sense, is a
class of L-structures closed under isomorphism, so the invariance Mostowski imposed on
quantifiers is part of the type rather than a side condition on a denotation. These classes form
a Boolean subalgebra of the powerset of Bundled L.Structure. Each sentence defines one, its
class of models, and the Ehrenfeucht–Fraïssé results in this directory decide which classes arise
this way, the classes Lindström writes EC.
Main definitions #
FirstOrder.Language.LindstromQuantifier: an isomorphism-invariant class ofL-structures.FirstOrder.Language.LindstromQuantifier.ofSentence: the class of models of a sentence.FirstOrder.Language.LindstromQuantifier.holdsHom: the embedding into the powerset algebra.
Implementation notes #
Lindström restricts quantifiers to classes of relational structures; here L may have function
symbols, which costs nothing since isomorphism invariance is the only condition.
References #
A Lindström quantifier over L is a class of L-structures closed under L-isomorphism.
- holds : Set (CategoryTheory.Bundled L.Structure)
The class of structures the quantifier holds of.
- iso_inv {M N : CategoryTheory.Bundled L.Structure} : Nonempty (L.Equiv ↑M ↑N) → (M ∈ self.holds ↔ N ∈ self.holds)
The class is closed under
L-isomorphism.
Instances For
Boolean-algebra structure #
The iso-invariant classes are a sub-Boolean-algebra of Set (Bundled L.Structure) — closed under
complement, finite meet/join, ⊤ (all structures) and ⊥ (none), because L-isomorphism is an
equivalence. holds is the injective embedding, so the algebra is pulled back along it: Qᶜ is
outer negation (every ↦ not-every), Q ⊓ R/Q ⊔ R are conjunction/disjunction.
Equations
- FirstOrder.Language.LindstromQuantifier.instLE = { le := fun (Q R : L.LindstromQuantifier) => Q.holds ⊆ R.holds }
Equations
- FirstOrder.Language.LindstromQuantifier.instLT = { lt := fun (Q R : L.LindstromQuantifier) => Q.holds ⊂ R.holds }
Equations
- FirstOrder.Language.LindstromQuantifier.instMax = { max := fun (Q R : L.LindstromQuantifier) => { holds := Q.holds ∪ R.holds, iso_inv := ⋯ } }
Equations
- FirstOrder.Language.LindstromQuantifier.instMin = { min := fun (Q R : L.LindstromQuantifier) => { holds := Q.holds ∩ R.holds, iso_inv := ⋯ } }
Equations
- FirstOrder.Language.LindstromQuantifier.instTop = { top := { holds := Set.univ, iso_inv := ⋯ } }
Equations
- FirstOrder.Language.LindstromQuantifier.instBot = { bot := { holds := ∅, iso_inv := ⋯ } }
Equations
- FirstOrder.Language.LindstromQuantifier.instCompl = { compl := fun (Q : L.LindstromQuantifier) => { holds := Q.holdsᶜ, iso_inv := ⋯ } }
Equations
- FirstOrder.Language.LindstromQuantifier.instSDiff = { sdiff := fun (Q R : L.LindstromQuantifier) => { holds := Q.holds \ R.holds, iso_inv := ⋯ } }
Equations
- FirstOrder.Language.LindstromQuantifier.instHImp = { himp := fun (Q R : L.LindstromQuantifier) => { holds := Q.holds ⇨ R.holds, iso_inv := ⋯ } }
The Boolean algebra of generalized quantifiers over L, pulled back along the injective holds
embedding into the powerset algebra Set (Bundled L.Structure).
Equations
- FirstOrder.Language.LindstromQuantifier.instBooleanAlgebra = Function.Injective.booleanAlgebra FirstOrder.Language.LindstromQuantifier.holds ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
holdsHom is the embedding of the quantifiers into the powerset algebra
Set (Bundled L.Structure) as a bounded lattice homomorphism; it also preserves complements
(holds_compl).
Equations
- FirstOrder.Language.LindstromQuantifier.holdsHom = { toFun := FirstOrder.Language.LindstromQuantifier.holds, map_sup' := ⋯, map_inf' := ⋯, map_top' := ⋯, map_bot' := ⋯ }
Instances For
The quantifier defined by a sentence holds of exactly the models of the sentence.
Equations
- FirstOrder.Language.LindstromQuantifier.ofSentence φ = { holds := {M : CategoryTheory.Bundled L.Structure | ↑M ⊨ φ}, iso_inv := ⋯ }