Verifying embeddings for DRSs #
This file defines verification of DRSs by embeddings into a FirstOrder.Language.Structure,
following Kamp and Reyle's Def. 1.4.4.
An embedding f : V → M assigns discourse referents to individuals;
Verifies f K says f verifies every condition of K, and a sub-DRS is
entered by existentially (re)assigning along its extension relation
Box.Extends. For imp, the consequent witness extends the antecedent
embedding, so antecedent referents stay visible in the consequent (Def. 2.1.4);
the ∨ clause is Def. 2.4.2(ii)(h). Verification reads an embedding only at the
free referents, so whether some extension of an input verifies a proper DRS does
not depend on the input: it is truth in the model (Def. 1.4.5).
Main definitions #
DRT.VerifiesCondition,DRT.Verifies:fverifies a DRS-condition, resp. the DRSK.
Main statements #
DRT.verifies_map: alphabetic variants (Def. 1.4.8) have the same semantics.DRT.verifiesCondition_congr,DRT.exists_extends_verifies_congr: verification reads an embedding only at the free referents.DRT.exists_extends_verifies_iff_of_isProper: a proper DRS is verified by some extension of any input iff some embedding verifies it.
Implementation notes #
- Embeddings here are total, and a re-declared referent is freely reassigned;
the book's are partial functions that sub-DRSs strictly extend, so a
re-declared referent keeps its value (Muskens, fn. 4). The two agree
on DRSs that declare each referent once — the construction algorithm never
re-declares — but diverge on re-declaration:
[ | [x | man x] ⇒ [x | mortal x]]says "every man is mortal" there, "if there is a man there is a mortal" here. Verifies,VerifiesConditionandVerifiesAllare defined by structural recursion through the nested conditions, so the clause characterizations (verifies_neg, …) hold byIff.rfl;verifies_iffrecovers the∀ c ∈ K.conditionsform.
References #
Verifies f K says the embedding f verifies the DRS K, that is, every condition
of K (Def. 1.4.4).
Equations
- DRT.Verifies x✝ { referents := referents, conditions := cs } = DRT.VerifiesAll x✝ cs
Instances For
VerifiesCondition f c says the embedding f verifies the DRS-condition c
(Def. 1.4.4(ii)); a sub-DRS is entered by existentially (re)assigning along its extension
relation.
Equations
- DRT.VerifiesCondition x✝ (DRT.Condition.atom a) = a.Realize x✝
- DRT.VerifiesCondition x✝ (DRT.Condition.eq a b) = (x✝ a = x✝ b)
- DRT.VerifiesCondition x✝ (DRT.Condition.neg K) = ¬∃ (g : V → M), K.Extends x✝ g ∧ DRT.Verifies g K
- DRT.VerifiesCondition x✝ (DRT.Condition.imp a c) = ∀ (g : V → M), a.Extends x✝ g → DRT.Verifies g a → ∃ (h : V → M), c.Extends g h ∧ DRT.Verifies h c
- DRT.VerifiesCondition x✝ (DRT.Condition.dis l r) = ((∃ (g : V → M), l.Extends x✝ g ∧ DRT.Verifies g l) ∨ ∃ (g : V → M), r.Extends x✝ g ∧ DRT.Verifies g r)
Instances For
VerifiesAll f cs says f verifies every condition of cs.
Equations
- DRT.VerifiesAll x✝ [] = True
- DRT.VerifiesAll x✝ (c :: cs) = (DRT.VerifiesCondition x✝ c ∧ DRT.VerifiesAll x✝ cs)
Instances For
Structural simp API #
Verification is invariant under permutation of the conditions — the set
semantics the List-valued conditions field promises (DRS/Defs.lean).
Alphabetic variants #
Renaming along a bijection transports verification (the condition form of
verifies_map).
f verifies K.map e iff f ∘ e verifies K, so alphabetic variants have the same
semantics.
f has a verifying K.map e-extension iff f ∘ e has a verifying K-extension.
Coincidence #
Verification of a condition reads the embedding only at its free referents (Def. 1.4.2).
"Some extension verifies K" reads the input embedding only at K's free
referents.
A proper DRS is verified by some extension of any input iff some embedding verifies it, which is its truth in the model (Def. 1.4.5).