Abney & Keshet (2025): PIP Compositional Operations #
@cite{abney-keshet-2025} @cite{keshet-abney-2024}
The Glossa companion paper to @cite{keshet-abney-2024} enriches PIP with explicit set-based compositional operations: sigma evaluation (Σxφ), set-based generalized quantifiers (EVERY/SOME as set inclusion/intersection), three-argument modals with modal bases, and the FX type-lifting operation for restricted variables.
This file verifies these operations on finite models and demonstrates the paper's predictions about quantificational subordination, strong donkey anaphora, modal subordination, and the exists/sigma bridge.
Worked Examples #
- Sigma evaluation — Σx(farmer(x)) = {alice, bob} on a finite model
- Sigma set algebra — Σx(φ∧ψ) = Σxφ ∩ Σxψ instantiated
- GQ over sigma sets — EVERY(Σf farmer, Σf (farmer∧buyer)) via
setEvery - Quantificational subordination — Σx(farmer(x) ∧ bought-donkey(x)) ⊆ Σx(farmer(x))
- Exists↔sigma bridge — ∃x(farmer(x)) ↔ (Σx(farmer(x))).Nonempty
- Strong donkey — summation pronouns as exhaustive sigma sets
- FX thematic roles — ↑AGENT accumulates assertions
- Paycheck pronouns — sigma set varies with external free variable
- Modal subordination — MUST/MIGHT on two-world intensional model
Equations
- AbneyKeshet2025.instDecidableEqEnt x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- AbneyKeshet2025.instReprEnt = { reprPrec := AbneyKeshet2025.instReprEnt.repr }
Equations
- AbneyKeshet2025.instReprEnt.repr AbneyKeshet2025.Ent.alice prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "AbneyKeshet2025.Ent.alice")).group prec✝
- AbneyKeshet2025.instReprEnt.repr AbneyKeshet2025.Ent.bob prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "AbneyKeshet2025.Ent.bob")).group prec✝
- AbneyKeshet2025.instReprEnt.repr AbneyKeshet2025.Ent.spot prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "AbneyKeshet2025.Ent.spot")).group prec✝
- AbneyKeshet2025.instReprEnt.repr AbneyKeshet2025.Ent.rex prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "AbneyKeshet2025.Ent.rex")).group prec✝
Instances For
Equations
- AbneyKeshet2025.instDecidableEqW1 x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- AbneyKeshet2025.instReprW1 = { reprPrec := AbneyKeshet2025.instReprW1.repr }
Equations
- AbneyKeshet2025.instReprW1.repr AbneyKeshet2025.W1.w0 prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "AbneyKeshet2025.W1.w0")).group prec✝
Instances For
Equations
- AbneyKeshet2025.instInhabitedW1 = { default := AbneyKeshet2025.instInhabitedW1.default }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- AbneyKeshet2025.instFintypeW1 = { elems := {AbneyKeshet2025.W1.w0}, complete := AbneyKeshet2025.instFintypeW1._proof_1 }
Farmer predicate: true for alice and bob.
Equations
- AbneyKeshet2025.farmerBody AbneyKeshet2025.Ent.alice = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.farmerBody AbneyKeshet2025.Ent.bob = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.farmerBody AbneyKeshet2025.Ent.spot = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
- AbneyKeshet2025.farmerBody AbneyKeshet2025.Ent.rex = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
Instances For
Donkey predicate: true for spot and rex.
Equations
- AbneyKeshet2025.donkeyBody AbneyKeshet2025.Ent.spot = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.donkeyBody AbneyKeshet2025.Ent.rex = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.donkeyBody AbneyKeshet2025.Ent.alice = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
- AbneyKeshet2025.donkeyBody AbneyKeshet2025.Ent.bob = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
Instances For
Alice is a farmer (in the sigma set).
Bob is a farmer.
Spot is not a farmer.
Rex is not a farmer.
Spot is a donkey.
Alice is not a donkey.
Σx(farmer ∧ donkey) = Σx(farmer) ∩ Σx(donkey) — no entity is both.
Σx(farmer ∨ donkey) = Σx(farmer) ∪ Σx(donkey) — all four entities.
Verify: the farmer∧donkey intersection is empty.
"Bought a donkey" predicate: alice and bob each bought one.
Equations
- AbneyKeshet2025.boughtDonkeyBody AbneyKeshet2025.Ent.alice = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.boughtDonkeyBody AbneyKeshet2025.Ent.bob = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.boughtDonkeyBody AbneyKeshet2025.Ent.spot = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
- AbneyKeshet2025.boughtDonkeyBody AbneyKeshet2025.Ent.rex = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
Instances For
EVERY(Σf farmer, Σf (farmer ∧ boughtDonkey)) — via setEvery.
"Every farmer bought a donkey" modeled as: the set of farmers is a
subset of the set of farmer-buyers. This connects to the GQ bridge
in Bridges.lean via setEvery_eq_pipEvery.
SOME(Σf donkey, Σf farmerBody) — no donkey is a farmer.
This demonstrates setSome negation: the intersection is empty.
Quantificational subordination:
"Every farmer bought a donkey. He vaccinated it."
The subordinate quantifier's sigma set (farmers who bought a donkey
and vaccinated it) is a subset of the main quantifier's sigma set
(farmers). This follows from sigma_subordination.
All farmer-buyers are indeed farmers (pointwise verification).
∃x(farmer(x)) is true (at least one farmer exists).
The sigma bridge: ∃x(farmer(x)) ↔ nonempty sigma set.
∀x(farmer(x)) is false (donkeys are not farmers).
Strong donkey anaphora via summation pronouns (paper's §4.3 analysis):
"Every farmer who bought a donkey vaccinated them."
The pronoun "them" is a summation pronoun: its denotation is the
sigma set of all farmer-buyers, not a single witness. As noted in
PIP.Composition, summation pronoun denotation IS sigmaEval — the
distinction from simple pronouns is presuppositional (PL vs SG),
handled by PIP.Bridges.plural.
Both alice and bob are in the sigma set — exhaustive, not a single witness.
The sigma set has 2+ elements → plural presupposition satisfied.
AGENT role predicate: alice and bob are agents.
Equations
Instances For
PATIENT role predicate: spot and rex are patients.
Equations
Instances For
Equations
- AbneyKeshet2025.buyEvent x✝ = true
Instances For
↑AGENT(buy)(alice) = true — alice is an agent of buying.
↑AGENT(buy)(spot) = false — spot is not an agent.
Iterated FX: ↑PATIENT(↑AGENT(buy))(spot) = false — agent fails for spot.
↑PATIENT(↑AGENT(buy))(alice, alice) — decomposes by fxApply_twice.
Paycheck pronouns (paper's §4.2, Karttunen 1969, Jacobson 2000):
"Almost every girl brought the diorama she made to class. Very few of them forgot it at home."
The pronoun "it" is a summation pronoun whose antecedent formula
D ≡ DIORAMA([d]) ∧ MADE(x, d) contains a free variable x
bound by a different quantifier at the pronoun's use site vs its
antecedent's. The sigma set ΣdD varies with x: when x = alice,
it denotes alice's diorama(s); when x = bob, bob's diorama(s).
This is the defining property of paycheck pronouns. PIP handles them via summation pronouns with formula labels that contain free variables. Dynamic logics struggle with this because they only store individuals already quantified over, not formulas with free variables.
Diorama predicate: d1 and d2 are dioramas.
Equations
- AbneyKeshet2025.dioramaBody AbneyKeshet2025.Ent.spot = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.dioramaBody AbneyKeshet2025.Ent.rex = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.dioramaBody AbneyKeshet2025.Ent.alice = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
- AbneyKeshet2025.dioramaBody AbneyKeshet2025.Ent.bob = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
Instances For
"Made" relation parameterized by maker (external free variable x): alice made spot (d1), bob made rex (d2).
Equations
- AbneyKeshet2025.madeBody AbneyKeshet2025.Ent.alice AbneyKeshet2025.Ent.spot = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.madeBody AbneyKeshet2025.Ent.bob AbneyKeshet2025.Ent.rex = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => true
- AbneyKeshet2025.madeBody maker x✝ = Semantics.PIP.PIPExprF.pred fun (x : AbneyKeshet2025.W1) => false
Instances For
Paycheck body: D ≡ DIORAMA([d]) ∧ MADE(x, d) with x as free variable.
The sigma set ΣdD depends on who x is.
Equations
- AbneyKeshet2025.paycheckBody maker d = (AbneyKeshet2025.dioramaBody d).conj (AbneyKeshet2025.madeBody maker d)
Instances For
When x = alice, ΣdD = {spot} (alice's diorama).
When x = bob, ΣdD = {rex} (bob's diorama).
The paycheck property: the sigma set varies with the external free variable. This is what distinguishes paycheck pronouns from ordinary anaphora — the pronoun's denotation depends on who the binder is.
Each maker's sigma set is a singleton — satisfying the SG presupposition.
Two-world model for modal subordination.
Instances For
Equations
- AbneyKeshet2025.instDecidableEqW2 x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- AbneyKeshet2025.instReprW2.repr AbneyKeshet2025.W2.actual prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "AbneyKeshet2025.W2.actual")).group prec✝
- AbneyKeshet2025.instReprW2.repr AbneyKeshet2025.W2.alt prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "AbneyKeshet2025.W2.alt")).group prec✝
Instances For
Equations
- AbneyKeshet2025.instReprW2 = { reprPrec := AbneyKeshet2025.instReprW2.repr }
Instances For
Equations
- AbneyKeshet2025.instInhabitedW2 = { default := AbneyKeshet2025.instInhabitedW2.default }
Equations
- AbneyKeshet2025.instFintypeW2 = { elems := {AbneyKeshet2025.W2.actual, AbneyKeshet2025.W2.alt}, complete := AbneyKeshet2025.instFintypeW2._proof_1 }
Modal subordination (paper's §4.5, Roberts 1987 wolf example):
"A wolf might come in. It would eat you first."
MIGHT(β_w, ΣwW) where W ≡ (WOLF([x]) ∧ ENTERS(x)) MUST(β_w, ΣwW, ΣwE) where E ≡ (W ∧ TIM([t]) ∧ EATS(x,t))
The nuclear scope of the first sentence is stored in label W. The restriction of the second sentence's MUST is anaphoric to W — this is modal subordination, parallel to quantificational subordination.
Modal base: actual can access alt, and alt accesses itself.
Instances For
Worlds where a wolf enters (only alt).
Equations
Instances For
Worlds where the wolf eats Tim (also only alt).
Equations
Instances For
MIGHT(β, ⊤, wolfEnters) — a wolf might enter. The modal base intersected with the wolf-enters set is nonempty.
MUST(β, wolfEnters, wolfEatsTim) — it would eat Tim. Modal subordination: the restriction wolfEnters (from the first sentence's label W) constrains MUST. Every wolf-entry world is also a wolf-eats-Tim world.
Modal duality instantiated: ¬MUST(β, ⊤, wolfEnters) because the wolf doesn't enter at actual.
Modal duality: ¬MUST ↔ MIGHT(complement). The wolf doesn't necessarily enter, so it's possible it doesn't.