KOS Conversational Rules #
@cite{ginzburg-2012} Ch. 4
Conversational rules govern how dialogue gameboards evolve during
conversation. @cite{ginzburg-2012} Ch. 4 defines these as precondition/effect
pairs (record types with pre and effects fields).
Core Rules (@cite{ginzburg-2012} Ch. 4, pp. 72–112) #
- Greeting / CounterGreeting — conversation initialization (pp. 74–76, ex. 17/20b)
- Initiating Move — refined Free Speech with genre relevance (p. 108, ex. 94)
- Ask QUD-incrementation — question pushes onto QUD (p. 95, ex. 66)
- Assert QUD-incrementation — assertion pushes About(p) onto QUD (p. 95, ex. 66)
- QSPEC — subquestion accommodation (p. 95, ex. 66)
- QCoord — successive question coordination (p. 99, ex. 77)
- Accept — addressee grounds an assertion (p. 95, ex. 66)
- Check — addressee requests confirmation (p. 95, ex. 68)
- Confirm — speaker confirms in response to check (p. 95, ex. 68)
- Fact update/QUD-downdate — accept triggers fact addition + QUD removal (p. 95; p. 103, ex. 85)
Answerhood #
The Answerhood typeclass abstracts the resolves-relation between facts
and questions — connecting to partition-based QUD W from Core/Discourse/QUD.lean
and to inquisitive Issue W.
Genre (@cite{ginzburg-2012} §4.6) #
Genres are TTR record types classifying conversations by their characteristic
structure. Activity relevance (GenreRelevant, p. 105, ex. 90) constrains
which initiating moves are felicitous.
Whether a fact resolves a question.
This abstracts the answerhood relation between accumulated facts and QUD entries. Concrete instances connect to:
- Partition-based answerhood (
QUD M): a fact determines a unique cell - String-based answerhood: pattern matching on content strings
- Propositional answerhood (
BProp W): a fact entails a question's answer
Ch. 4: "q is resolved relative to a DGB dgb iff the FACTS in dgb contextually entail an answer to q."
- resolves : Fact → QContent → Bool
Instances
Whether all questions in a QUD stack are resolved by the current facts.
Equations
- Theories.Pragmatics.Dialogue.KOS.allResolved facts qud = qud.all fun (q : QContent) => facts.any fun (f : Fact) => Theories.Pragmatics.Dialogue.KOS.Answerhood.resolves f q
Instances For
Push a question onto the QUD stack.
Ch. 4: when a question is asked, it becomes the maximal element of QUD.
Equations
Instances For
Remove resolved questions from QUD.
Ch. 4: QUD-downdate removes a question q from QUD when FACTS contextually entail an answer to q.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Add a fact to the DGB's FACTS.
Equations
Instances For
Record a move in the DGB's MOVES list.
Equations
Instances For
Assert: add fact to FACTS, record the move, and downdate QUD.
Ch. 4 (p. 95, ex. 66): assertion adds content to FACTS, pushes About(p,?) onto QUD, and any resolved question is removed.
Equations
- dgb.assertFact p = (dgb.addFact p).downdateQud
Instances For
Ask rule: a question utterance pushes onto QUD and records the move.
Ch. 4, "Ask QUD-incrementation" (p. 95, ex. 66).
Equations
- tis.ask q = { dgb := (tis.dgb.pushQud q).recordMove (Theories.Pragmatics.Dialogue.KOS.IllocMove.ask q), private_ := tis.private_ }
Instances For
Assert rule (simplified): assertion adds to FACTS and downdates.
This version does not push About(p) onto QUD. For the full
Assert protocol with QUD-incrementation,
use TIS.assertWithQUD.
Equations
- tis.assertRule p = { dgb := (tis.dgb.assertFact p).recordMove (Theories.Pragmatics.Dialogue.KOS.IllocMove.assert p), private_ := tis.private_ }
Instances For
Assert QUD-incrementation: the full Assert protocol.
Ch. 4 (p. 95, ex. 66): when A asserts p:
- p is added to FACTS
- About(p) — a polar question "whether p" — is pushed onto QUD
- QUD is downdated (resolved questions removed)
The aboutP parameter converts the asserted fact to its corresponding
question, since this conversion is domain-specific.
Equations
- tis.assertWithQUD p aboutP = { dgb := ((tis.dgb.addFact p).pushQud aboutP).downdateQud.recordMove (Theories.Pragmatics.Dialogue.KOS.IllocMove.assert p), private_ := tis.private_ }
Instances For
Accept rule: addressee grounds an assertion — adds fact to own FACTS.
Ch. 4, "Accept" (p. 95, ex. 66 step 4a).
Known simplification: the book's Accept rule (ex. 42) swaps spkr/addr in the effects (the acceptor becomes the new speaker). We don't model this because our worked examples don't track individual participants.
Equations
- tis.accept p = { dgb := (tis.dgb.addFact p).recordMove (Theories.Pragmatics.Dialogue.KOS.IllocMove.accept p), private_ := tis.private_ }
Instances For
QSPEC rule: a subquestion refines a QUD entry.
Precondition: q₂ influences some q₁ on QUD (q₂ is a subquestion). Effect: push q₂ onto QUD (it becomes the new MaxQud).
Ch. 4, "QSPEC" (p. 95, ex. 66 step 2).
Equations
- tis.qspec q = { dgb := (tis.dgb.pushQud q).recordMove (Theories.Pragmatics.Dialogue.KOS.IllocMove.ask q), private_ := tis.private_ }
Instances For
Check rule: addressee requests confirmation of an assertion.
Ch. 4 (p. 95, ex. 68): a Check move pushes a polar question about the asserted content onto QUD.
Equations
- tis.check p aboutP = { dgb := (tis.dgb.pushQud aboutP).recordMove (Theories.Pragmatics.Dialogue.KOS.IllocMove.check p), private_ := tis.private_ }
Instances For
Confirm rule: speaker confirms in response to a check.
Ch. 4 (p. 95, ex. 68 step 2).
Known simplification: the book's Confirm rule (ex. 43) swaps spkr/addr,
as with Accept. See TIS.accept for details.
Equations
- tis.confirm p = { dgb := (tis.dgb.assertFact p).recordMove (Theories.Pragmatics.Dialogue.KOS.IllocMove.confirm p), private_ := tis.private_ }
Instances For
QCoord rule: successive question coordination.
Ch. 4, ex. 77 (p. 99): allows a speaker to follow up an initial question with a non-influencing question, where the initial question remains QUD-maximal.
Effect: push q onto QUD without displacing the current maximal question.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fact update/QUD-downdate: combined rule.
Ch. 4, ex. 85 (p. 103): when Accept occurs, FACTS is updated and resolved questions are downdated from QUD.
Equations
- tis.factUpdateQudDowndate p = { dgb := (tis.dgb.addFact p).downdateQud, private_ := tis.private_ }
Instances For
Greeting: conversation initialization.
Ch. 4 (p. 75, ex. 17): precondition is MOVES = ⟨⟩.
Equations
- tis.greet = { dgb := tis.dgb.recordMove Theories.Pragmatics.Dialogue.KOS.IllocMove.greet, private_ := tis.private_ }
Instances For
Assert adds the fact to FACTS.
assertWithQUD adds the fact to FACTS.
Downdate never increases QUD size.
If a fact resolves the only question on QUD, downdate removes it.
Move Coherence #
ex. 70 (p. 96) defines M(ove)-Coherence: a move m₁ is coherent with respect to a DGB dgb₀ iff there exists a conversational rule c₁ mapping dgb₀ to dgb₁ such that dgb₁.LatestMove = m₁.
Pairwise and sequential M-Coherence extend this to move pairs and sequences.
A conversational rule: a function from DGB to DGB.
Ch. 4 summary (p. 112): "a mapping that indicates how one DGB can be modified by a conversationally related action."
Equations
- Theories.Pragmatics.Dialogue.KOS.ConvRule P Fact QContent = (Theories.Pragmatics.Dialogue.KOS.DGB P Fact QContent → Theories.Pragmatics.Dialogue.KOS.DGB P Fact QContent)
Instances For
A move is M-Coherent with respect to a DGB if some conversational rule produces a DGB whose latest move is that move.
ex. 70a (p. 96).
Equations
- Theories.Pragmatics.Dialogue.KOS.mCoherent rules dgb₀ m = ∃ rule ∈ rules, (rule dgb₀).latestMove = some m
Instances For
A move is genre-relevant if the outcome of adding it to the DGB can be anticipated to conclude as a conversation of the genre type.
ex. 90 (p. 105): "m0 is relevant to G0 in dgb0 for A iff A believes that outcome(dgb0 ⊕ₘₒᵥₑₛ m0, G0) will be fulfilled."
Equations
- One or more equations did not get rendered due to their size.
Instances For
String-based answerhood: a fact resolves a question if they match.
After Ask, QUD contains the question.
After Ask, FACTS are unchanged.
After Ask, the move is recorded.
After Assert, the fact is in FACTS.
After Assert, QUD is empty (the question was resolved).
After Accept, the fact appears twice (once from assert, once from accept).
The full inquiry cycle: QUD starts empty, gets a question, then empties.
Moves accumulate through the inquiry cycle.
After Check, QUD has the polar question.
After Confirm, the fact is in FACTS and QUD is resolved.
Partition-Based Answerhood #
Ch. 4 defines QUD-downdate in terms of FACTS
resolving questions. The Answerhood typeclass above abstracts this.
Here we connect it to the partition-based QUD W from
Core/Discourse/QUD.lean (@cite{groenendijk-stokhof-1984}):
A BProp W fact resolves a QUD W question when the fact determines
a unique cell — all worlds where the fact holds are in the same
partition cell.
A BProp W resolves a QUD W if all fact-worlds are in the same
partition cell.
Equations
- Theories.Pragmatics.Dialogue.KOS.bpropResolvesQUD worlds fact q = (List.filter fact worlds).all fun (w₁ : W) => (List.filter fact worlds).all fun (w₂ : W) => q.sameAnswer w₁ w₂
Instances For
Answerhood instance: BProp W resolves QUD W over a fixed world list.
Equations
- Theories.Pragmatics.Dialogue.KOS.answerhoodFromPartition worlds = { resolves := Theories.Pragmatics.Dialogue.KOS.bpropResolvesQUD worlds }
Instances For
A BProp W resolves a Discourse.Issue W if it settles some alternative.
@cite{ciardelli-groenendijk-roelofsen-2018}: resolving an issue means establishing enough information to determine which alternative holds.
Equations
- Theories.Pragmatics.Dialogue.KOS.bpropResolvesIssue worlds fact q = q.alternatives.any fun (alt : Discourse.InfoState W) => Discourse.propEntails fact alt worlds
Instances For
Answerhood instance: BProp W resolves Discourse.Issue W.
Equations
- Theories.Pragmatics.Dialogue.KOS.answerhoodFromIssue worlds = { resolves := Theories.Pragmatics.Dialogue.KOS.bpropResolvesIssue worlds }
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Theories.Pragmatics.Dialogue.KOS.instBEqRainWorld.beq x✝ y✝ = (x✝.ctorIdx == y✝.ctorIdx)
Instances For
"Is it raining?" — partition into rainy vs non-rainy.
Equations
- One or more equations did not get rendered due to their size.
Instances For
"It is raining" — true only in the rainy world.
Equations
Instances For
"It is sunny" — true only in the sunny world.
Equations
Instances For
"It is raining" resolves "Is it raining?"
"It is sunny" also resolves "Is it raining?"
After asking, QUD has the partition question.
After asserting "It is raining", QUD is empty (resolved).
After assertWithQUD, the question from Ask is resolved (fact matches).
The fact is in FACTS after assertWithQUD.
All assertive-class moves (assert, accept, confirm) share mind-to-world fit: the speaker takes responsibility for truth.
Directive moves (ask, check) share world-to-mind fit: the speaker wants the addressee to act.
Utterance Integration: Grounding vs CRification #
@cite{ginzburg-2012} Ch. 6 (§6.5–6.7): when an utterance enters Pending, the addressee either grounds it (all contextual parameters resolved → content enters FACTS) or CRifies it (some parameter unresolved → a clarification request question is pushed onto QUD).
This is the LocProp-level protocol that replaces the string-based
IS.integrateUtterance from @cite{ginzburg-cooper-2004}.
Whether a LocProp has all contextual parameters resolved. A fully resolved LocProp can be grounded directly.
Equations
- lp.isFullyResolved = List.isEmpty lp.cparams
Instances For
Whether a LocProp can be grounded (= fully resolved).
Equations
- lp.canGround = lp.isFullyResolved
Instances For
The result of integrating a LocProp into a DGB. Either grounded (content → FACTS) or CRified (CR question → QUD).
- grounded
{Cont QContent : Type}
(content : Cont)
: IntegrationResult Cont QContent
All cparams resolved: content enters FACTS.
- crification
{Cont QContent : Type}
(crQuestion : QContent)
(unresolvedParam : CParam)
: IntegrationResult Cont QContent
Some cparam unresolved: CR question pushed onto QUD.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Is this integration result a grounding?
Equations
Instances For
Integrate a LocProp: ground if resolved, CRify otherwise.
The toCR function converts an unresolved parameter to a clarification
question — this is domain-specific (e.g., "Who do you mean by 'Bo'?").
Equations
- One or more equations did not get rendered due to their size.
Instances For
A fully resolved LocProp always grounds.
If there are no coercion options and the LocProp has unresolved params, integration produces a CRification — there is no silent fallback.
DGB Well-Formedness: Non-Resolve-Cond #
@cite{ginzburg-2012} ex. 100 (p. 111): the DGB includes a well-formedness
constraint non-resolve-cond requiring that no question on QUD is already
resolved by FACTS. This prevents trivially answered questions from lingering
on QUD — they should be downdated.
The non-resolve-cond: no question on QUD is resolved by FACTS. @cite{ginzburg-2012} ex. 100 (p. 111).
Equations
- dgb.nonResolveCond = dgb.qud.all fun (q : QContent) => !dgb.facts.any fun (f : Fact) => Theories.Pragmatics.Dialogue.KOS.Answerhood.resolves f q
Instances For
An empty DGB trivially satisfies non-resolve-cond.
After QUD-downdate, non-resolve-cond holds: all remaining questions are unresolved by FACTS.