Core Dynamic Semantics Infrastructure #
InfoStateOf P (sets of possibilities) and CCP P (context change
potentials, the set-transformer view of dynamic meaning), shared by the
PLA, DRT, DPL, and CDRT formalizations.
The relational Update S ([GS91], [Mus96]) of
Connectives/Defs.lean is the primary dynamic type; CCP connects to it
via lift R σ = { j | ∃ i ∈ σ, R i j } and lower φ i j = j ∈ φ {i},
which form a Galois connection. The IsDistributive CCPs — those that
process elements independently — are exactly the image of lift;
non-distributive operations (CCP.negTest, CCP.might, CCP.must) test
the whole input state rather than filtering per-element.
An InfoState is a set of possibilities.
Different theories instantiate P differently:
- PLA: Assignment × WitnessSeq
- DRT: Assignment
- Intensional: World × Assignment
Equations
- Semantics.Dynamic.Core.InfoStateOf P = Set P
Instances For
A Context Change Potential (CCP) is a function from states to states.
This is the semantic type for dynamic meanings.
Equations
Instances For
Identity CCP: leaves state unchanged
Equations
Instances For
Absurd CCP: yields empty state
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
CCPs form a monoid under sequential composition. Scoped because
CCP P is an abbreviation for Set P → Set P: a global instance would
attach */1 to a bare function type for every importer. Activate with
open scoped Semantics.Dynamic.Core.CCP.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dynamic negation: complement within the input state.
This is the standard dynamic negation of [Hei82], [Vel96]:
¬φ(s) = s \ φ(s). Worlds survive iff they do not survive φ.
Does not validate DNE on non-eliminative updates. For the whole-state
consistency test (must-not), see negTest.
Equations
- φ.neg s = s \ φ s
Instances For
Test-based negation: passes (returns input) iff φ yields ∅.
A whole-state consistency test ("must-not"), NOT [Hei82]'s or
[Vel96]'s negation (that is neg, set difference). The two
coincide only when φ s = ∅ or φ s = s — see
Studies/Beaver2001/ABLE.lean for the proven divergence.
Equations
- φ.negTest s = if Set.Nonempty (φ s) then ∅ else s
Instances For
Dynamic disjunction via De Morgan: φ ∨ ψ = ¬(¬φ ; ¬ψ).
For eliminative updates this unfolds to φ(s) ∪ ψ(s \ φ(s)): the second disjunct is evaluated in the input updated with the negation of the first — the local-context clause of the satisfaction literature ([Bea01]; [Hei83] itself gives CCPs only for not/and/if).
Instances For
Dynamic entailment: φ entails ψ iff ψ adds no information after φ.
Equations
- φ.entails ψ = ∀ (s : Semantics.Dynamic.Core.InfoStateOf P), Set.Nonempty (φ s) → ψ (φ s) = φ s
Instances For
An update is eliminative if it never adds possibilities.
This is the fundamental property of dynamic semantics: information only grows (possibilities only decrease).
Equations
- Semantics.Dynamic.Core.IsEliminative u = ∀ (s : Semantics.Dynamic.Core.InfoStateOf P), u s ⊆ s
Instances For
Identity is eliminative
Sequential composition preserves eliminativity
An update is expansive if it never removes possibilities.
Expansive operations include discourse referent introduction (DRT/DPL), modal horizon expansion ([Kir24]), and accommodation. These are the dual of eliminative operations: where eliminative updates can only shrink the state, expansive updates can only grow it.
Equations
- Semantics.Dynamic.Core.IsExpansive u = ∀ (s : Semantics.Dynamic.Core.InfoStateOf P), s ⊆ u s
Instances For
Identity is expansive
Sequential composition preserves expansiveness
A CCP that is both eliminative and expansive is the identity on every input.
Eliminative ↔ antitone on the identity: u s ≤ s for all s.
Expansive ↔ identity below: s ≤ u s for all s.
Eliminative updates are antitone at the identity: u ≤ id in the pointwise order.
Expansive updates satisfy id ≤ u in the pointwise order.
A test is a CCP that either passes (returns input) or fails (returns ∅).
Tests don't change information - they check compatibility. Examples: might, must, presupposition triggers.
Equations
- Semantics.Dynamic.Core.IsTest u = ∀ (s : Semantics.Dynamic.Core.InfoStateOf P), u s = s ∨ u s = ∅
Instances For
Tests are eliminative
Support relation: s supports ψ if all possibilities in s satisfy ψ.
This is the fundamental entailment relation of dynamic semantics.
Equations
- Semantics.Dynamic.Core.supportOf sat s ψ = ∀ (p : P), p ∈ s → sat p ψ
Instances For
Content of a formula: all possibilities satisfying it.
Equations
- Semantics.Dynamic.Core.contentOf sat ψ = {p : P | sat p ψ}
Instances For
Galois connection: s ⊆ content ψ ↔ s supports ψ
This is the fundamental duality of dynamic semantics.
Support is downward closed: smaller states support more.
Filtering a set by a predicate is monotone. This is the shared foundation
for monotonicity of updateFromSat, atom, pred1, pred2, etc.
Filtering a set by a predicate is eliminative.
The standard update construction: filter by satisfaction.
This is how PLA, DRT, DPL all define updates.
Equations
- Semantics.Dynamic.Core.updateFromSat sat ψ s = {p : P | p ∈ s ∧ sat p ψ}
Instances For
Standard updates are eliminative
Standard update membership
Update equals intersection with content
Support-Update equivalence
Dynamic entailment: φ dynamically entails ψ if updating with φ always yields a state that supports ψ.
Equations
- Semantics.Dynamic.Core.dynamicEntailsOf sat ψ₁ ψ₂ = ∀ (s : Semantics.Dynamic.Core.InfoStateOf P), Semantics.Dynamic.Core.supportOf sat (Semantics.Dynamic.Core.updateFromSat sat ψ₁ s) ψ₂
Instances For
Dynamic entailment is reflexive
Dynamic entailment is transitive
updateFromSat is monotone in the state argument: larger input states yield
larger output states. Uses mathlib's Monotone (i.e., s ≤ t → f s ≤ f t
where ≤ on Set is ⊆).
A possibility: world paired with variable assignment.
This is the concrete state type for world-sensitive dynamic semantics
(DPL, DRT, CDRT, PLA). The assignment field uses Assignment E
from the CCP infrastructure.
- world : W
- assignment : Assignment E
Instances For
Two possibilities agree on all variables in a set.
Equations
- p.agreeOn q vars = ∀ (x : ℕ), x ∈ vars → p.assignment x = q.assignment x
Instances For
Same world, possibly different assignment.
Instances For
Extend an assignment at a single variable, using Function.update.
Equations
- p.extend x e = { world := p.world, assignment := Function.update p.assignment x e }
Instances For
Information state: set of possibilities.
This is InfoStateOf (Possibility W E) — a specialization of the
generic InfoStateOf to world-assignment possibilities.
Equations
- Semantics.Dynamic.Core.InfoState W E = Set (Semantics.Dynamic.Core.Possibility W E)
Instances For
The trivial state: all possibilities.
Equations
- Semantics.Dynamic.Core.InfoState.univ = Set.univ
Instances For
The absurd state: no possibilities.
Equations
Instances For
State is consistent (non-empty).
Equations
- s.consistent = Set.Nonempty s
Instances For
Variable x is defined in state s iff all possibilities agree on x's value.
Equations
- s.definedAt x = ∀ (p q : Semantics.Dynamic.Core.Possibility W E), p ∈ s → q ∈ s → p.assignment x = q.assignment x
Instances For
The set of defined variables in a state.
Equations
- s.definedVars = {x : ℕ | s.definedAt x}
Instances For
In a consistent state, novel means assignments actually disagree.
Project to the set of worlds in the state.
Equations
- s.worlds = {w : W | ∃ (p : Semantics.Dynamic.Core.Possibility W E), p ∈ s ∧ p.world = w}
Instances For
Empty context with all possibilities.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Subsistence is reflexive.
Subset implies subsistence.
State s supports proposition φ iff φ holds at all worlds in s.
Equations
- s.supports φ = ∀ (p : Semantics.Dynamic.Core.Possibility W E), p ∈ s → φ p.world = true
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
State: set of world-assignment pairs.
Isomorphic to InfoState W E but uses a flat product instead of the
Possibility structure. Prefer InfoState for new code.
Equations
- Semantics.Dynamic.Core.State W E = Set (W × Core.Assignment E)
Instances For
State-level CCP: context change potential over world-assignment states.
Definitionally equal to CCP (W × Assignment E), so all CCP infrastructure
(monoid, negation, might, tests, entailment, Galois connection) applies.
Equations
Instances For
A CCP is distributive when it processes each element of the input independently: φ(s) = ⋃_{i∈s} φ({i}).
Equations
- Semantics.Dynamic.Core.IsDistributive φ = ∀ (s : Semantics.Dynamic.Core.InfoStateOf P), φ s = {p : P | ∃ (i : P), i ∈ s ∧ p ∈ φ {i}}
Instances For
updateFromSat is always distributive: it filters per-element.
CCP.might is not distributive: the whole-context test can pass while
individual-element tests fail.
Witness: P = Bool, φ keeps only true.
might φ {true, false} = {true, false} (whole-context test passes),
but per-singleton: might φ {false} = ∅ (test fails on false-only context).
So false is in the whole-context result but not the distributive union.
The relational type Update S = S → S → Prop from DynProp is the
primary dynamic semantic type. Every Update gives rise to a distributive
CCP via the relational image (lift), and every distributive CCP
arises this way (lower). The round-trip is the identity in both
directions (for distributive CCPs).
Non-distributive CCP operations (negTest, might, must) test the
whole input state and have no direct Update counterpart — they are
genuine additions of the set-transformer perspective.
Lift a relational Update meaning to a CCP (set transformer).
This is the relational image: given input state σ, collect all
outputs reachable from any element of σ. The resulting CCP is
always distributive (lift_isDistributive).
Equations
- Semantics.Dynamic.Core.lift R σ = {j : S | ∃ (i : S), i ∈ σ ∧ R i j}
Instances For
Lower a CCP to a relational Update meaning.
lower φ i j holds iff j is in the output of the singleton {i}.
This is the inverse of lift for distributive CCPs.
Equations
- Semantics.Dynamic.Core.lower φ i j = (j ∈ φ {i})
Instances For
Lifting a test produces a per-element filter:
lift (test C) σ = { i ∈ σ | C i }.
Lifted CCPs are always distributive.
Round-trip: lower (lift R) = R. The relational type loses no
information when lifted and lowered.
Round-trip: lift (lower φ) = φ for distributive CCPs.
Distributive CCPs are exactly the relational images.
lift (test C) is eliminative: it only removes elements.
updateFromSat is the lifting of test applied to a satisfaction
relation. This connects the CCP-native updateFromSat to the
primary relational algebra.