Questions/LiftedTypes.lean #
@cite{barker-shan-2014} @cite{groenendijk-stokhof-1984} @cite{partee-1987} @cite{partee-rooth-1983}
Lifted Question Types (@cite{groenendijk-stokhof-1984}, Chapter VI, Section 6; @cite{partee-rooth-1983}).
The Problem #
Coordination of questions poses a type-theoretic puzzle:
- "Who came?" has type ⟨s,⟨s,t⟩⟩ (partition)
- "Who came or who left?" should coordinate two questions
But the disjunction of two equivalence relations is NOT an equivalence relation! If w ~₁ v and v ~₂ u, we don't get w ~₁ u or w ~₂ u.
The Solution: Flexible Types #
@cite{partee-rooth-1983} propose:
- Categories have a basic type plus predictable lifted types
- Lifting rules are general procedures (not ad hoc)
- Interpret at minimal type unless higher type is needed
- Avoid "generalize to worst case"
For questions:
- Core type: Partitions (equivalence relations)
- Lifted type: Sets of properties of questions
Lifting #
The lift operation:
lift : GSQuestion W → LiftedQuestion W
lift(Q) = λP. P(Q)
A lifted question is the set of all properties that hold of the underlying question.
Coordination in Lifted Types #
Once lifted, coordination is straightforward:
Q₁ ∨ Q₂ = λP. P ∈ Q₁ ∨ P ∈ Q₂ -- property holds of either
Q₁ ∧ Q₂ = λP. P ∈ Q₁ ∧ P ∈ Q₂ -- property holds of both
This avoids the transitivity problem entirely.
Connection to Continuations #
Lifted questions form a continuation monad. In Barker & Shan's tower notation, an expression's type is written as a vertical tower:
C | B
─────
A
Reading counter-clockwise from the bottom: the expression functions locally as A,
takes scope over B, and returns C. The flat equivalent is C ⫽ (A ⫽ B).
For questions:
- Core type:
GSQuestion W(the A) - Lifted type:
(GSQuestion W → Prop) → Prop(=Cont Prop (GSQuestion W))
Monad Operations #
The continuation monad has three key operations:
- pure (= lift):
λq. λP. P(q)— wrap a value for any continuation - bind (>>=):
λm. λf. λP. m(λq. f(q)(P))— sequence scope effects - run:
λm. m(λ_. True)— close off with trivial continuation
Why This Matters for Natural Language #
Barker & Shan argue continuations unify:
- Generalized quantifiers: DPs as
(e → t) → t - Dynamic semantics: Sentences as context updates
- Scope displacement: Why quantifiers can outscope their syntactic position
The key insight: expressions denote functions on their own semantic context, enabling non-local effects while maintaining compositional, left-to-right evaluation.
A property of questions: something that can be true or false of a GSQuestion.
Examples:
- "resolves decision problem D"
- "has more than 2 cells"
- "refines question Q'"
Equations
Instances For
A lifted question: a set of properties (Montague-style generalized quantifier over questions).
In the Partee & Rooth framework, lifting a question Q produces the set of all properties that Q has:
lift(Q) = {P | P(Q)}
Coordination then works via set operations on properties.
Equations
Instances For
Lift a core question to the lifted type.
lift(Q) = λP. P(Q)
The lifted question is the characteristic function of Q's properties.
Equations
Instances For
A lifted question is "principal" if it comes from lifting a core question.
Equations
Instances For
The Continuation Monad #
The type LiftedQuestion W = (GSQuestion W → Prop) → Prop is the continuation
monad Cont Prop specialized to questions. We provide:
- pure (alias for lift): the monadic unit
- bind (>>=): monadic sequencing
- map: functorial action
- run: evaluate by closing off the continuation
The monad laws (left/right identity, associativity) hold by construction.
Pure: alias for lift, emphasizing the monadic structure.
In B&S tower notation, this is the LIFT type-shifter:
A LIFT B | B
phrase ⟹ phrase
x []
───
x
Semantically: ⟦pure(x)⟧ = λκ.κ(x)
Equations
Instances For
Bind (>>=): monadic sequencing for lifted questions.
Allows a lifted question to "feed into" a function that produces another lifted question, with proper handling of the continuation.
m >>= f = λP. m(λq. f(q)(P))
In B&S terms, this corresponds to the combination schema where the left element's scope effect wraps around the right's result.
Equations
- lq.bind f P = lq fun (q : Semantics.Questions.GSQuestion W) => f q P
Instances For
Map: functorial action on lifted questions.
Applies a function to the underlying question(s) without changing scope structure.
Equations
- Semantics.Questions.LiftedTypes.LiftedQuestion.map f lq P = lq fun (q : Semantics.Questions.GSQuestion W) => P (f q)
Instances For
Run: evaluate a lifted question by closing off the continuation.
Applies the trivial continuation (constant True), effectively asking "does there exist a question satisfying the lifted question?"
For principal lifted questions, this always returns True. This corresponds to B&S's LOWER when we don't need the value back.
Equations
- lq.run = lq fun (x : Semantics.Questions.GSQuestion W) => True
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Left identity: pure q >>= f = f q
Right identity: m >>= pure = m
Associativity: (m >>= f) >>= g = m >>= (λx. f x >>= g)
Lift distributes over bind (naturality).
Map can be defined via bind and pure.
Run of a principal lifted question is True.
Disjunction of lifted questions.
(Q₁ ∨ Q₂)(P) iff P holds of Q₁ or P holds of Q₂.
This is well-defined and doesn't require transitivity!
Instances For
Conjunction of lifted questions.
(Q₁ ∧ Q₂)(P) iff P holds of Q₁ and P holds of Q₂.
Instances For
Disjunction of core questions via lifting.
Equations
Instances For
Conjunction of core questions via lifting.
Equations
Instances For
Disjunction distributes over bind from the left.
If we have Q₁ ∨ Q₂ and apply f to each, we get f(Q₁) ∨ f(Q₂).
Conjunction distributes over bind from the left.
Disjunction of lifted questions via the alternative structure.
This shows disjunction is the "choice" operation for the continuation monad, corresponding to B&S's treatment of coordination in tower semantics.
Map preserves disjunction.
Map preserves conjunction.
Lower a lifted question back to core type, if it's principal.
This is a partial operation: non-principal lifted questions (like disjunctions of non-equivalent questions) cannot be lowered.
Instances For
A lifted question can be lowered iff it's equivalent to some principal one.
Equations
- lq.isLowerable = ∃ (q : Semantics.Questions.GSQuestion W), ∀ (P : Semantics.Questions.LiftedTypes.QuestionProperty W), lq P ↔ P q
Instances For
Lifting preserves identity: lift is injective on extensionally equal questions.
Disjunction is commutative.
Conjunction is commutative.
Disjunction is associative.
Conjunction is associative.
Lifting distributes over conjunction (principal case).
If Q₁ and Q₂ have a common refinement (Q₁ * Q₂ = compose), then: conj (lift Q₁) (lift Q₂) is equivalent to lift (Q₁ * Q₂) for "refinement properties".
The refinement property, lifted to LiftedQuestion.
A lifted question "refines" another if it entails the other's properties.
Equations
- lq1.liftedRefines lq2 = ∀ (P : Semantics.Questions.LiftedTypes.QuestionProperty W), lq2 P → lq1 P
Instances For
Lifting preserves refinement for refinement-monotone properties.
Since lift q = λ P => P q, the unrestricted liftedRefines (lift q) (lift q')
reduces to ∀ P, P q' → P q, which is Leibniz equality — much stronger
than partition refinement. The correct version restricts to properties
that are monotone under refinement (finer partitions inherit them).
Counterexample for the unrestricted version: let P = "has exactly 1 cell". The trivial partition q' satisfies P, but the identity partition q (which refines q') does not.
An answer to a lifted question: a proposition that resolves some underlying question.
In the lifted setting, "p answers LQ" means: ∃Q ∈ LQ. p is an answer to Q
Note: Full definition requires a world list parameter for toCells.
Equations
- Semantics.Questions.LiftedTypes.LiftedQuestion.answers p lq worlds = lq fun (q : Semantics.Questions.GSQuestion W) => ∃ cell ∈ QUD.toCells q worlds, ∀ (w : W), cell w = true ↔ p w
Instances For
Partial answerhood for lifted questions.
Equations
- Semantics.Questions.LiftedTypes.LiftedQuestion.partiallyAnswers p lq worlds = lq fun (q : Semantics.Questions.GSQuestion W) => ∃ cell ∈ QUD.toCells q worlds, ∀ (w : W), p w → cell w = true
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.