Accessibility of discourse referents #
A discourse referent is accessible from a condition when it is declared in a box that is accessible where the condition occurs: the box containing the condition, the boxes it is nested in, and the antecedent of a conditional for its consequent (Kamp and Reyle, Def. 1.4.11, Def. 2.1.3, Def. 2.4.4). Accessibility is a property of occurrences: one box can occur twice in a DRS, at places with different accessible boxes. An occurrence is reached from the host by a walk that steps into the sub-boxes of complex conditions, collecting the boxes accessible at each step, and the walk is computed by a structural recursion that decides accessibility.
Main definitions #
DRT.ScopeStep,DRT.Occurrence: a step into a sub-box, collecting the accessible boxes, and the occurrences of boxes in a host.DRT.AccessibleFrom: a referent accessible from a condition (Def. 1.4.11).DRT.DRS.Accessible: a referent accessible where another is declared.DRT.AccessibleTo: a box accessible to another, in the sense of Geurts, Beaver and Maier.
Main statements #
DRT.DRS.mem_occurrences_iff: the computed occurrences are exactly those reached by the walk, soDRS.Accessibleis decidable.
Implementation notes #
Kamp and Reyle state Def. 2.1.3 and Def. 2.4.4 for DRS values. Read on values, they let a chain pass through a second occurrence of an equal box and make a referent accessible where no occurrence of the condition sees it, so the definitions here quantify over occurrences.
References #
One step of the walk, from an occurrence of a box D whose accessible boxes are bs
(innermost first, D included) into a sub-box of one of its complex conditions; the
consequent of a conditional also sees the antecedent.
- neg {L : FirstOrder.Language} {V : Type w} {bs : List (DRS L V)} {D K : DRS L V} : Condition.neg K ∈ D.conditions → ScopeStep (bs, D) (K :: bs, K)
- impAnte {L : FirstOrder.Language} {V : Type w} {bs : List (DRS L V)} {D a c : DRS L V} : Condition.imp a c ∈ D.conditions → ScopeStep (bs, D) (a :: bs, a)
- impCons {L : FirstOrder.Language} {V : Type w} {bs : List (DRS L V)} {D a c : DRS L V} : Condition.imp a c ∈ D.conditions → ScopeStep (bs, D) (c :: a :: bs, c)
- disL {L : FirstOrder.Language} {V : Type w} {bs : List (DRS L V)} {D l r : DRS L V} : Condition.dis l r ∈ D.conditions → ScopeStep (bs, D) (l :: bs, l)
- disR {L : FirstOrder.Language} {V : Type w} {bs : List (DRS L V)} {D l r : DRS L V} : Condition.dis l r ∈ D.conditions → ScopeStep (bs, D) (r :: bs, r)
Instances For
Occurrence host (bs, K) says the walk from host reaches an occurrence of K whose
accessible boxes are bs.
Equations
- DRT.Occurrence host = Relation.ReflTransGen DRT.ScopeStep ([host], host)
Instances For
The occurrence of a box is an occurrence of a sub-DRS of the host.
scopeReferents bs collects the referents declared by the boxes bs.
Equations
- DRT.scopeReferents bs = List.foldr (fun (B : DRT.DRS L V) (s : Finset V) => B.referents ∪ s) ∅ bs
Instances For
The referent x is accessible from the condition γ in host when γ occurs in a box
at an occurrence whose accessible boxes declare x (Def. 1.4.11, Def. 2.1.3).
Equations
- DRT.AccessibleFrom host x γ = ∃ (p : List (DRT.DRS L V) × DRT.DRS L V), DRT.Occurrence host p ∧ γ ∈ p.2.conditions ∧ x ∈ DRT.scopeReferents p.1
Instances For
v is accessible where u is declared when some occurrence of a box declaring u has
v among its accessible referents.
Equations
- host.Accessible u v = ∃ (p : List (DRT.DRS L V) × DRT.DRS L V), DRT.Occurrence host p ∧ u ∈ p.2.referents ∧ v ∈ DRT.scopeReferents p.1
Instances For
The box K₁ is accessible to K₂ in host when it is among the boxes accessible at
some occurrence of K₂.
Equations
- DRT.AccessibleTo host K₁ K₂ = ∃ (bs : List (DRT.DRS L V)), DRT.Occurrence host (bs, K₂) ∧ K₁ ∈ bs
Instances For
Computing the occurrences #
The occurrences below a box are listed by structural recursion through the nested
conditions, matching each box as ⟨U, cs⟩, so that the kernel evaluates the list and
decide closes concrete accessibility claims.
The occurrences of boxes below a condition, at accessible boxes bs.
Equations
- One or more equations did not get rendered due to their size.
- (DRT.Condition.atom a).occurrences x✝ = []
- (DRT.Condition.eq u v).occurrences x✝ = []
Instances For
The occurrences of boxes below a list of conditions.
Equations
- DRT.Condition.occurrencesList [] x✝ = []
- DRT.Condition.occurrencesList (c :: cs) x✝ = c.occurrences x✝ ++ DRT.Condition.occurrencesList cs x✝
Instances For
The occurrences of boxes at or below an occurrence of K at accessible boxes bs.
Equations
- DRT.DRS.occurrences bs K = (bs, K) :: DRT.Condition.occurrencesList K.conditions bs
Instances For
Everything listed below a condition of D is reached by the walk from (bs, D).
The computed occurrences are exactly those the walk reaches.
Equations
- DRT.instDecidableAccessible host u v = decidable_of_iff (∃ p ∈ DRT.DRS.occurrences [host] host, u ∈ p.2.referents ∧ v ∈ DRT.scopeReferents p.1) ⋯