Indexed relational semantics of DRSs #
This file defines 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 [KvGR11]'s
partial-embedding semantics (Defs. 19, 22, 24): values at established
referents persist, as in [KR93]'s original embeddings — in contrast
to the flat DRS.toRel (DRS/Dynamics.lean), which freely reassigns
re-declared referents ([muskens-1996]'s fn. 4 divergence).
Persistence types the semantics: toRelAt X K is read only at X and, given
the referential presupposition K.freeVarFinset ⊆ X, written only at X ∪ U,
so a well-formed DRS denotes a spine transition Transition X (X ∪ U) and a
proper DRS expresses an information state by acting on ⊥ (Def. 22). The
Merging Lemma here needs less than the flat freshness hypothesis — only
capture by sub-box universes is fatal, re-declaration is harmless — and lifts
to the spine, where the action equation is an instance of functoriality
(Transition.apply_comp).
Main declarations #
DRS.toRelAt,Condition.holdsAt: the base-threaded semantics.DRS.toRelAt_congr_left,DRS.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 (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 { referents := U, conditions := 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 freeVarFinset ⊆ 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.freeVarFinset ⊆ 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.freeVarFinset ⊆ X is the referential presupposition
(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 (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.
Base invariance: a fresh base extension is invisible to a well-formed condition.
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 (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 (Muskens's 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.verifies_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 (Muskens's 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).