Dynamic Mood as Eliminative + Generative Updates of Static Mood #
@cite{veltman-1996} @cite{groenendijk-stokhof-veltman-1996} @cite{heim-1982} @cite{de-groote-2006} @cite{charlow-2021} @cite{mendes-2025}
dynIND and dynSUBJ are the dynamic-context-update counterparts of
the static Mood.IND and Mood.SUBJ operators in Mood/Basic.lean.
Together they instantiate the two basic operations of the powerset
monad on situation contexts:
dynINDis eliminative (anIsContextFilter): it specializes the genericdynRelationOnfilter to thesameWorldkernel, with one projection picking the entry's current situation (gs.2) and the other picking a bound variable (gs.1 v).dynSUBJis generative (it adds entries): it specializes the genericdynIntroduceKleisli composition to thehistoricalBasegenerator, binding the freshly drawn situation to a variable.
Theoretical anchor #
The eliminative-vs-generative split is the canonical algebraic shape of dynamic semantics:
- @cite{heim-1982} principle (A) — file change for a static condition is intersection with the satisfaction set (eliminative); for an indefinite, file card creation extends the file (generative).
- @cite{veltman-1996} formalizes the eliminative side as the test
operator
[φ]σ = {w ∈ σ : w ⊨ φ}. - @cite{groenendijk-stokhof-veltman-1996} ("Coreference and
Modality") split context updates into eliminative tests and
generative introductions for discourse referents.
dynINDis the eliminative arm;dynSUBJis the generative arm. - @cite{de-groote-2006} CPS translation: the static predicate is the pure computation, the dynamic operator is the contextual lift.
- @cite{charlow-2021} casts dynamic semantics as a monadic effect over
static semantics; here the underlying monad is the powerset monad
on situation contexts.
dynRelationOnisSet.filter;dynIntroduceisSet.bind(Kleisli composition).
Semantics.Mood.IND and Semantics.Mood.SUBJ (defined in
Mood/Basic.lean) call the same two kernels (sameWorld and
historicalBase) directly. The static and dynamic faces share one
modal constraint and one alternative-generator, lifted from a
state-level predicate to a context-level operation.
What this file proves #
Two rfl-bridges (dynIND_eq_dynRelationOn_sameWorld,
dynSUBJ_eq_dynIntroduce_historicalBase) establish that the dynamic
operators definitionally call the generic primitives on the shared
kernels.
dynIND_iff_IND_with_true is the "wrapper actually wraps" check on
the eliminative side: an entry survives the dynamic filter iff the
static IND (with the trivial propositional payload) holds at the
entry's current and bound situations.
dynSUBJ_realizes_SUBJ does the same on the generative side, for
singleton contexts. dynIND_after_dynSUBJ_same_var records that
indicative retrieval of the just-introduced subjunctive variable is
vacuous — the algebraic fact that a dynRelationOn filter is
trivially satisfied after the projections it compares are forced
equal by the preceding dynIntroduce.
Sibling of Mood/Basic.lean and Tense/Dynamic.lean. Used by
Phenomena/TenseAspect/Studies/Mendes2025.lean (which hosts the SF
operator and the modal donkey anaphora chain that consumes
dynSUBJ/dynIND).
Dynamic IND: lifts the sameWorld kernel to an eliminative update on
situation contexts.
A context entry survives iff its current situation gs.2 shares its
world with the bound situation gs.1 v. The "current vs bound"
projection asymmetry is exactly the case that motivates
dynRelationOn over dynRelation.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dynamic SUBJ: lifts the historicalBase history generator to a
generative update on situation contexts.
For each entry (g, s₀), the output contains (g[v ↦ s₁], s₁) for
every s₁ ∈ historicalBase history s₀. The current situation is
updated to the freshly drawn s₁, and v is bound to it.
Equations
Instances For
IND is presuppositional (same-world check).
Idempotence inherited from the generic dynRelationOn algebra.
SUBJ is existential over the historical base. Inherited from
dynIntroduce_current_in_gen.
After dynSUBJ, looking up v always returns the current
situation. Inherited from dynIntroduce_binds_current.
For each operator, the static version (with the trivial propositional
payload fun _ _ => True) holds at the relevant situation pair iff
the dynamic operator's update retains/produces the corresponding
context entry. This makes precise the @cite{de-groote-2006} sense in
which static and dynamic mood are the same operator at different
layers.
dynIND realizes static IND with the trivial propositional
payload — the "wrapper actually wraps" check on the eliminative side.
Static↔Dynamic Bridge for SUBJ #
dynSUBJ implements SUBJ's existential quantification over historical
alternatives, with additional bookkeeping (binding the result to a
variable and updating the current situation).
Full set characterization of dynSUBJ on singleton contexts.
Strictly stronger than dynSUBJ_realizes_SUBJ: gives the exact output
set rather than just an existential iff. The output of dynSUBJ on
{(g, s₀)} is precisely the set of (g[v↦s₁], s₁) for
s₁ ∈ historicalBase history s₀.
Bridge: dynamic SUBJ realizes static SUBJ.
For a singleton context {(g, s₀)}, the set of situations reachable via
dynSUBJ at variable v that satisfy P is exactly the set that static
SUBJ existentially quantifies over.
IND is identity after SUBJ on the same variable.
When SUBJ introduces s₁ and binds it to v, IND's same-world check
on v is trivially satisfied — gs.2 = s₁ = gs.1 v by
dynSUBJ_binds_current. This explains why crossClausalBinding with
shared variables preserves the full SUBJ output.