Polyadic Quantifiers #
@cite{peters-westerstahl-2006} @cite{hintikka-1996}
Three mechanisms for building polyadic (multi-sorted) quantifiers from monadic (type ⟨1,1⟩) ones:
- Iteration: Q₁x Q₂y R(x,y) — nested quantification
- Resumption: Qx R(x,x) — a single quantifier on the diagonal
- Branching: Hintikka's partially ordered quantifiers
These capture the semantic content of multi-quantifier sentences at the
model-theoretic level, complementing linglib's syntactic scope mechanisms
in Semantics/Composition/Scope.lean and QuantifierComposition.lean.
Iteration: Q₁x Q₂y R(x,y). Nested quantification where Q₂ is in the scope of Q₁.
"Every student read some book" = iterate(every, student, some, book)(read) = every(student, λx. some(book, λy. read(x,y)))
@cite{peters-westerstahl-2006} Ch 10.
Equations
- Core.Quantification.Polyadic.iterate Q₁ Q₂ A B R = Q₁ A fun (x : α) => Q₂ B fun (y : α) => R x y
Instances For
Resumption: one quantifier binding two argument positions.
"Most students like themselves" = resume(most, student)(like) = most(student, λx. like(x,x))
Resumption only accesses the diagonal of R. @cite{peters-westerstahl-2006} Ch 10.
Equations
- Core.Quantification.Polyadic.resume Q A R = Q A fun (x : α) => R x x
Instances For
Branching (Hintikka) quantifier: Q₁ and Q₂ are evaluated independently (neither is in the scope of the other).
The Skolem-function characterization: there exist choice functions witnessing both quantifiers simultaneously.
"Some relative of each villager and some friend of each townsman hate each other" — the two quantifiers don't scope over each other.
Simplified Barwise (1979) version: branch(Q₁, A, Q₂, B)(R) ↔ ∃f g. Q₁(A, λx. R(x, f(x))) ∧ Q₂(B, λy. R(g(y), y))
@cite{hintikka-1996} @cite{peters-westerstahl-2006} Ch 10.
Equations
- Core.Quantification.Polyadic.branch Q₁ Q₂ A B R = ∃ (f : α → α) (g : α → α), (Q₁ A fun (x : α) => B (f x) ∧ R x (f x)) ∧ Q₂ B fun (y : α) => A (g y) ∧ R (g y) y
Instances For
Surface scope = iterate(Q₁, A, Q₂, B)(R). Inverse scope = iterate(Q₂, B, Q₁, A)(flip R). These are the two "linear" readings of a two-quantifier sentence. @cite{peters-westerstahl-2006} Ch 10.
Equations
- Core.Quantification.Polyadic.surfaceScope Q₁ Q₂ A B R = Core.Quantification.Polyadic.iterate Q₁ Q₂ A B R
Instances For
Equations
- Core.Quantification.Polyadic.inverseScope Q₁ Q₂ A B R = Core.Quantification.Polyadic.iterate Q₂ Q₁ B A fun (y x : α) => R x y
Instances For
Iteration preserves scope monotonicity: if both Q₁ and Q₂ are Mon↑, then iterate(Q₁, A, Q₂, B) is monotone in R (pointwise). @cite{peters-westerstahl-2006} Ch 10.
Resumption preserves scope monotonicity.