Indexed relational semantics of DRSs #
[KvGR11] (Defs. 19, 22, 24), [KR93]
The base-threaded verification semantics: toRelAt X K f g holds when the
output g agrees with the input f on the context base X and verifies
K's conditions, sub-boxes entered at the grown base. This is the
total-assignment rendering of K&R's partial-embedding semantics
(Def. 19): values at established referents persist — contrast the flat
DRS.toRel (DRS/Dynamics.lean), whose agree-off-universe clause freely
reassigns re-declared referents (Muskens's fn. 4 divergence).
Persistence is what makes the indexed semantics well-typed: toRelAt X K is
read only at X (toRelAt_congr_left — one line, no witness surgery) and
written only at X ∪ U (toRelAt_congr_right, given the referential
presupposition K.fv ⊆ X), so a well-formed DRS denotes a spine
Transition X (X ∪ U) (DRS.transition), and a proper DRS expresses an
information state by acting on ⊥ (DRS.state, Def. 22).
The Merging Lemma for this semantics (toRelAt_merge) needs strictly less
than the flat freshness hypothesis — only capture by sub-box universes is
fatal, re-declaration is harmless — and lifts to the spine
(transition_merge), where the action equation (state_merge) becomes an
instance of functoriality (Transition.apply_comp).
Main declarations #
DRS.toRelAt/Condition.holdsAt— the base-threaded semantics.DRS.toRelAt_congr_left/toRelAt_congr_right— read/write support.DRS.transition— a DRS as a spine transitionX ⟶ X ∪ U.DRS.state— the information state a proper DRS expresses.DRS.transition_merge/DRS.state_merge— the Merging Lemma on the spine and the action equation.DRS.trueRel_iff_toRelAt— on reuse-free DRSs the flat and indexed semantics have the same truth conditions.
The base-threaded semantics #
Base-threaded relational semantics ([KvGR11], Def. 19 in total-assignment form): the output agrees with the input on the base — established referents persist — and verifies the conditions, with sub-boxes entered at the grown base.
Equations
- DRT.DRS.toRelAt X (DRT.DRS.mk U conds) = fun (f g : V → M) => Set.EqOn g f ↑X ∧ DRT.Condition.holdsAllAt (X ∪ U) conds g
Instances For
A condition holds at a base under an assignment; sub-DRSs are entered as context extensions of the current base.
Equations
- DRT.Condition.holdsAt X (DRT.Condition.rel R args) = fun (g : V → M) => FirstOrder.Language.Structure.RelMap R fun (i : Fin n) => g (args i)
- DRT.Condition.holdsAt X (DRT.Condition.eq u v) = fun (g : V → M) => g u = g v
- DRT.Condition.holdsAt X (DRT.Condition.neg K) = fun (g : V → M) => ¬∃ (g' : V → M), DRT.DRS.toRelAt X K g g'
- DRT.Condition.holdsAt X (DRT.Condition.imp a c) = fun (g : V → M) => ∀ (g' : V → M), DRT.DRS.toRelAt X a g g' → ∃ (g'' : V → M), DRT.DRS.toRelAt (X ∪ a.referents) c g' g''
- DRT.Condition.holdsAt X (DRT.Condition.dis l r) = fun (g : V → M) => ∃ (g' : V → M), DRT.DRS.toRelAt X l g g' ∨ DRT.DRS.toRelAt X r g g'
Instances For
Every condition in the list holds at the base. A List helper — the
higher-order form fails the nested-inductive structural-recursion checker.
Equations
- DRT.Condition.holdsAllAt X [] = fun (x : V → M) => True
- DRT.Condition.holdsAllAt X (c :: cs) = fun (g : V → M) => DRT.Condition.holdsAt X c g ∧ DRT.Condition.holdsAllAt X cs g
Instances For
Structural simp API #
Read and write support #
The indexed clauses only mention the input through the agreement conjunct, so
read-support is one line — the flat semantics' piecewise witness surgery
disappears. Write-support needs the referential presupposition fv ⊆ X
only at the atomic clauses.
A condition with free referents in X depends on the assignment only at
X.
The list analogue of Condition.holdsAt_congr.
toRelAt X K writes its output only at X ∪ U, given the referential
presupposition K.fv ⊆ X.
A DRS as a spine transition #
A well-formed DRS denotes a transition from its context base to the
base grown by its universe — K.fv ⊆ X is the referential presupposition
([KvGR11], Def. 27(i)).
A well-formed DRS as a transition, via the total–typed bridge: read
at X, write at X ∪ U. The referential presupposition documents
Def. 24's domain condition; the congruence lemmas above are the bridge's
support hypotheses.
Equations
- DRT.DRS.transition W K X _hK = DynamicSemantics.Transition.ofTotal ⋯ fun (x : W) => DRT.DRS.toRelAt X K
Instances For
The empty DRS denotes the identity transition, repackaged to its source: interpretation sends DRT's unit to the semantic unit. Nonempty entities are needed — under extension-typing an empty domain separates the empty box from the identity.
Established referents persist along a DRS transition.
Repackaging a DRS transition along an equality of context bases is the transition at the new base.
The information state a proper DRS expresses ([KvGR11], Def. 22): act on the initial state.
Equations
- DRT.DRS.state W K hK = (DRT.DRS.transition W K ∅ ⋯).applyState ⊥
Instances For
The state a DRS expresses lives in its referents' stratum.
The characteristic membership form: a point survives in ⟦K⟧ˢ iff it
lives on the referents and its values are reached from some input.
Base invariance #
A fresh extension of the base is invisible to a well-formed condition. The only fatal interference is capture — a fresh referent colliding with a sub-box universe would freeze a previously local existential — so the hypothesis is disjointness from the occurring referents. Re-declaration of base referents needs no exclusion: persistence makes it inert.
The list analogue of Condition.holdsAt_union_fresh.
The Merging Lemma and the action equation #
Indexed Merging Lemma: merge is sequencing. The side condition asks
only that K₂'s universe not occur in K₁'s conditions (no capture);
re-declaration of context or K₁-universe referents is allowed — persistence
makes it inert. Contrast the flat lemma (DRS.toRel_merge), whose freshness
hypothesis also had to forbid re-declaration.
Transition-level Merging Lemma: sequencing the transitions is the merge's transition, repackaged along associativity of the grown bases.
Action equation ([KvGR11], p. 159): applying a
DRS's transition to the state a proper context DRS expresses yields the
state of the merge — an instance of Transition.apply_comp through the
transition-level Merging Lemma.
Reconciliation with the flat semantics #
On reuse-free DRSs (DRS.ReuseFreeAt, DRS/Basic.lean) the flat
agree-off-universe semantics (DRS.toRel, DRS/Dynamics.lean) and the indexed
persistence semantics coincide at truth level: every flat output is a indexed
output, and a indexed output repairs, off the grown base, into a flat one.
Reuse-freeness is needed — on a DRS that re-declares a referent the two
diverge ([Mus96], fn. 4; witness in Studies/Muskens1996.lean).
On a reuse-free condition with free referents in the base, the flat set denotation and the indexed one coincide.
The list analogue of Condition.holds_iff_holdsAt.
Flat-to-indexed: on a reuse-free DRS every flat output is a indexed output.
Indexed-to-flat: on a reuse-free DRS a indexed output repairs, off the grown base, into a flat output.
Truth-level reconciliation ([Mus96], fn. 4): on a reuse-free
DRS the flat total-assignment semantics and the indexed persistence semantics
have the same truth conditions. Reuse-freeness is needed — a re-declaring
witness separates the two (Studies/Muskens1996.lean).