DRS Syntax: Discourse Representation Structures #
@cite{kamp-reyle-1993} @cite{muskens-1996}
Pure syntactic representation of DRS expressions with structural operations — no semantic imports, no interpretation.
Definitions #
DRSExpr: recursive syntax for DRS boxes, conditions, and connectivesadr K: active discourse referents (drefs introduced byK)occurs u K: whether drefuoccurs inKacc u K: drefs accessible fromu's occurrence inKisFree u K:uoccurs inKbut is not accessibleisProper K: no free referents (@cite{muskens-1996}, p. 171)
Design #
This module is the pure-syntax layer of the four-layer dynamic semantics architecture:
DynProp.lean ← semantic algebra (DRS S, dseq, test, ...)
DynamicTy2.lean ← compositional layer (Dref, AssignmentStructure)
DRSExpr.lean ← DRS syntax (this file)
Accessibility.lean ← interpretation bridge (DRSExpr → DRS)
DRSExpr has no dependency on the semantic algebra (DRS S) or
compositional types (Dref, Assign). Interpretation is defined
in Accessibility.lean via interp : DRSExpr → DRS (Assign E).
Syntactic representation of DRS expressions.
Dref indices are natural numbers. Relation symbols are identified by natural number indices; their arity is implicit in the dref list.
- atom
(rel : Nat)
(drefs : List Nat)
: DRSExpr
Atomic condition: relation R applied to drefs
- is
(u v : Nat)
: DRSExpr
Identity condition: u₁ is u₂
- neg
(K : DRSExpr)
: DRSExpr
Negation: not K
- disj
(K₁ K₂ : DRSExpr)
: DRSExpr
Disjunction: K₁ or K₂
- impl
(K₁ K₂ : DRSExpr)
: DRSExpr
Implication: K₁ ⇒ K₂
- box
(newDrefs : List Nat)
(conds : List DRSExpr)
: DRSExpr
Box: [u₁,...,uₙ | γ₁,...,γₘ]
- seq
(K₁ K₂ : DRSExpr)
: DRSExpr
Sequencing: K₁ ; K₂
Instances For
Active discourse referents: the drefs introduced by K.
adr([u₁,...,uₙ | γ₁,...,γₘ]) = {u₁,...,uₙ}
adr(K₁ ; K₂) = adr(K₁) ∪ adr(K₂)
Conditions (atoms, negation, disjunction, implication) introduce no drefs.
Equations
- Semantics.Dynamic.Core.DRSExpr.adr (Semantics.Dynamic.Core.DRSExpr.DRSExpr.atom a a_1) = []
- Semantics.Dynamic.Core.DRSExpr.adr (Semantics.Dynamic.Core.DRSExpr.DRSExpr.is a a_1) = []
- Semantics.Dynamic.Core.DRSExpr.adr a.neg = []
- Semantics.Dynamic.Core.DRSExpr.adr (a.disj a_1) = []
- Semantics.Dynamic.Core.DRSExpr.adr (a.impl a_1) = []
- Semantics.Dynamic.Core.DRSExpr.adr (Semantics.Dynamic.Core.DRSExpr.DRSExpr.box a a_1) = a
- Semantics.Dynamic.Core.DRSExpr.adr (a.seq a_1) = Semantics.Dynamic.Core.DRSExpr.adr a ++ Semantics.Dynamic.Core.DRSExpr.adr a_1
Instances For
Whether dref u occurs anywhere in expression K.
Equations
- Semantics.Dynamic.Core.DRSExpr.occurs u (Semantics.Dynamic.Core.DRSExpr.DRSExpr.atom a a_1) = a_1.contains u
- Semantics.Dynamic.Core.DRSExpr.occurs u (Semantics.Dynamic.Core.DRSExpr.DRSExpr.is a a_1) = (u == a || u == a_1)
- Semantics.Dynamic.Core.DRSExpr.occurs u a.neg = Semantics.Dynamic.Core.DRSExpr.occurs u a
- Semantics.Dynamic.Core.DRSExpr.occurs u (a.disj a_1) = (Semantics.Dynamic.Core.DRSExpr.occurs u a || Semantics.Dynamic.Core.DRSExpr.occurs u a_1)
- Semantics.Dynamic.Core.DRSExpr.occurs u (a.impl a_1) = (Semantics.Dynamic.Core.DRSExpr.occurs u a || Semantics.Dynamic.Core.DRSExpr.occurs u a_1)
- Semantics.Dynamic.Core.DRSExpr.occurs u (Semantics.Dynamic.Core.DRSExpr.DRSExpr.box a a_1) = (a.contains u || Semantics.Dynamic.Core.DRSExpr.occurs.occursAny u a_1)
- Semantics.Dynamic.Core.DRSExpr.occurs u (a.seq a_1) = (Semantics.Dynamic.Core.DRSExpr.occurs u a || Semantics.Dynamic.Core.DRSExpr.occurs u a_1)
Instances For
Equations
Instances For
Accessible drefs from an occurrence of u in K.
Defined by structural recursion following @cite{muskens-1996} pp. 170–171:
- Atomic: no drefs are accessible
- Negation: accessibility passes through
- Disjunction/implication: accessibility from the branch containing
u, with antecedent drefs accessible in the consequent - Box: new drefs are accessible, plus accessibility from the condition containing
u - Sequencing: drefs from
K₁are accessible inK₂
Equations
- One or more equations did not get rendered due to their size.
- Semantics.Dynamic.Core.DRSExpr.acc u (Semantics.Dynamic.Core.DRSExpr.DRSExpr.atom a a_1) = []
- Semantics.Dynamic.Core.DRSExpr.acc u (Semantics.Dynamic.Core.DRSExpr.DRSExpr.is a a_1) = []
- Semantics.Dynamic.Core.DRSExpr.acc u a.neg = Semantics.Dynamic.Core.DRSExpr.acc u a
- Semantics.Dynamic.Core.DRSExpr.acc u (a.disj a_1) = if Semantics.Dynamic.Core.DRSExpr.occurs u a = true then Semantics.Dynamic.Core.DRSExpr.acc u a else Semantics.Dynamic.Core.DRSExpr.acc u a_1
- Semantics.Dynamic.Core.DRSExpr.acc u (Semantics.Dynamic.Core.DRSExpr.DRSExpr.box a a_1) = match Semantics.Dynamic.Core.DRSExpr.acc.accFind u a_1 with | some r => r ++ a | none => a
Instances For
Find the first condition containing u and return its accessible drefs.
Equations
- One or more equations did not get rendered due to their size.
- Semantics.Dynamic.Core.DRSExpr.acc.accFind u [] = none
Instances For
Collect all dref indices mentioned anywhere in K.
Equations
- Semantics.Dynamic.Core.DRSExpr.allOccurring (Semantics.Dynamic.Core.DRSExpr.DRSExpr.atom a a_1) = a_1
- Semantics.Dynamic.Core.DRSExpr.allOccurring (Semantics.Dynamic.Core.DRSExpr.DRSExpr.is a a_1) = [a, a_1]
- Semantics.Dynamic.Core.DRSExpr.allOccurring a.neg = Semantics.Dynamic.Core.DRSExpr.allOccurring a
- Semantics.Dynamic.Core.DRSExpr.allOccurring (a.disj a_1) = Semantics.Dynamic.Core.DRSExpr.allOccurring a ++ Semantics.Dynamic.Core.DRSExpr.allOccurring a_1
- Semantics.Dynamic.Core.DRSExpr.allOccurring (a.impl a_1) = Semantics.Dynamic.Core.DRSExpr.allOccurring a ++ Semantics.Dynamic.Core.DRSExpr.allOccurring a_1
- Semantics.Dynamic.Core.DRSExpr.allOccurring (Semantics.Dynamic.Core.DRSExpr.DRSExpr.box a a_1) = a ++ Semantics.Dynamic.Core.DRSExpr.allOccurring.allOccurringList a_1
- Semantics.Dynamic.Core.DRSExpr.allOccurring (a.seq a_1) = Semantics.Dynamic.Core.DRSExpr.allOccurring a ++ Semantics.Dynamic.Core.DRSExpr.allOccurring a_1
Instances For
Equations
Instances For
A dref u is free in K if it occurs in K but is not
among the drefs accessible from its position.
Equations
Instances For
A DRS is proper if it contains no free referents (@cite{muskens-1996}, p. 171).
Equations
Instances For
"A man adores a woman" as a syntactic DRS.
[u₁ u₂ | man u₁, woman u₂, u₁ adores u₂]
Using relation indices: 0 = man, 1 = woman, 2 = adores.
Equations
- One or more equations did not get rendered due to their size.
Instances For
"If a farmer owns a donkey, he beats it" as a syntactic DRS.
[u₁ u₂ | farmer u₁, donkey u₂, u₁ owns u₂] ⇒ [| u₁ beats u₂]
Using relation indices: 0 = farmer, 1 = donkey, 2 = owns, 3 = beats.
Equations
- One or more equations did not get rendered due to their size.
Instances For
"He₁ stinks" (with no antecedent) is NOT proper: dref 1 is free.