SAL Speech-Act PDL #
@cite{van-der-leer-2026}
van der Leer 2026 Definitions 9–24: a small Propositional Dynamic Logic of speech acts. The action language is:
α ::= assert_{a,b}(π) | question_{a,b}(π) | ⊖ | ~α | α;β | π ↪ α/β
with assert, question, denegation ~, sequential composition ;,
empty ⊖, and conditional ↪/.
Each act α is interpreted as an update on commitment spaces —
a function CommitmentSpace W A → CommitmentSpace W A. Substantively:
assert_{a,b}(π)(Def 10): the new root isroot[π]_{a,b}; the surviving continuations are those that ALSO accept the addressee's acceptance, i.e. are ⊑-aboveroot[π]_{a,b}[π]_{b,a}. This packages the Collaborative Principle: silent uptake updates the addressee's commitments.question_{a,b}(π)(Def 19): root is unchanged; continuations split into two branches —bacceptsπorbaccepts¬π.⊖(Def 21): identity update.~α(Def 22): remove theα-branch from the space; restore the root.α;β(Def 23): sequential composition.π ↪ α/β(Def 24): conditional on root truth.
For brevity we currently model the basic assert update; the others
follow the same pattern and slot in as additional constructors here.
The action language: van der Leer 2026 Definition 20. We currently
expose the basic constructors; consumer-required cases (question,
denegation, conditional) follow the same pattern and can be added
as constructors.
- empty
{W : Type u_3}
{A : Type u_4}
: SpeechAct W A
Default empty update (Def 21): leaves the commitment space unchanged.
- assert
{W : Type u_3}
{A : Type u_4}
(a b : A)
(π : Set W)
: SpeechAct W A
Assertion (Def 10):
assert_{a,b}(π)—acommits toπtowardsb; the new root reflects this commitment, and surviving continuations are those compatible withb's acceptance. - question
{W : Type u_3}
{A : Type u_4}
(a b : A)
(π : Set W)
: SpeechAct W A
Question (Def 19):
question_{a,b}(π)—aproposes thatbcommit to one of{π, ¬π}; surviving continuations split into both branches. - seq
{W : Type u_3}
{A : Type u_4}
(α β : SpeechAct W A)
: SpeechAct W A
Sequential composition (Def 23): perform
αthenβ. - denegate
{W : Type u_3}
{A : Type u_4}
(α : SpeechAct W A)
: SpeechAct W A
Denegation (Def 22): the
α-branch is removed; the root remains.
Instances For
Update a commitment state with the assertion assert_{a,b}(π):
restrict the commitment relation O_{a,b} to π-targets. This is
van der Leer 2026 Definition 4 lifted to the named-update form.
Equations
- Dialogue.SAL.assertOnState a b π c = c.restrictCommitment a b π
Instances For
van der Leer 2026 Definition 10 (headline): assert_{a,b}(π) on a
commitment space C produces:
- New root =
root[π]_{a,b}— the previous root narrowed bya's commitment to π towardsb. - Surviving continuations = the subset of states in
Cthat cooperatively extendroot[π]_{a,b}[π]_{b,a}— i.e. those compatible with the addressee's implicit acceptance (the Collaborative Principle).
The full Def-10 update with continuation-pruning requires
transitivity of CooperativeExtRefl through assertOnState-
composition, which is more book-keeping than the headline
theorems need. The simpler applyAssertSingleton (just produce
the new root) suffices for T25 (assert creates commitment), T26
(sincerity transfer), T27 (asymmetric C → CB), T30 (persistence
on the resulting space).
Continuation-pruning is exposed as a separate
applyAssertWithContinuations once a proper transitivity lemma
for CooperativeExtRefl lands.
Equations
- Dialogue.SAL.applyAssert a b π C = Dialogue.SAL.CommitmentSpace.singleton (Dialogue.SAL.assertOnState a b π C.root)
Instances For
The basic interpretation of speech acts as commitment-space
updates. We expose assert and empty; question, seq,
denegate are stubs returning identity for now (substrate
placeholders that the headline theorems don't depend on).
Equations
- Dialogue.SAL.apply Dialogue.SAL.SpeechAct.empty x✝ = x✝
- Dialogue.SAL.apply (Dialogue.SAL.SpeechAct.assert a b π) x✝ = Dialogue.SAL.applyAssert a b π x✝
- Dialogue.SAL.apply (Dialogue.SAL.SpeechAct.question a b π) x✝ = x✝
- Dialogue.SAL.apply (α.seq β) x✝ = Dialogue.SAL.apply β (Dialogue.SAL.apply α x✝)
- Dialogue.SAL.apply α.denegate x✝ = x✝