Verifying embeddings for DRSs #
This file defines verification of DRSs by embeddings into a model, following
[KR93]'s Def. 1.4.4 over a mathlib FirstOrder.Language.Structure.
An embedding f : Embedding V M assigns discourse referents to individuals;
f.Verifies 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 (the ⇒
clause is Def. 2.1.4; the ∨ clause is the Chapter 2 disjunction semantics).
Truth (Def. 1.4.5) is the existential closure of verification over the outer
universe, delivered downstream as DRS.trueRel (DRS/Dynamics.lean) and as
the first-order translation's realization (DRS/Reduction.lean).
Main declarations #
Embedding.Verifies,Embedding.VerifiesCondition:fverifies the DRSK, resp. a single DRS-condition.Embedding.verifies_perm: verification reads the condition list as a set.Embedding.verifies_map: renaming along a bijection transports verification, so alphabetic variants (Def. 1.4.8) have the same semantics.
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 ([Mus96], 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. Verifiesquantifies over the condition list (∀ c ∈ K.conditions, theTheory.Modelidiom), avoiding mutual recursion.VerifiesConditiondescends into sub-DRSs by well-founded recursion onsizeOf, so its clause characterizations (verifies_neg, …) are equation-lemma rewrites rather thanIff.rfl.
f.VerifiesCondition 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 and verifying each of its conditions.
Equations
- One or more equations did not get rendered due to their size.
- x✝.VerifiesCondition (DRT.Condition.rel R args) = FirstOrder.Language.Structure.RelMap R fun (i : Fin n) => x✝ (args i)
- x✝.VerifiesCondition (DRT.Condition.eq a b) = (x✝ a = x✝ b)
- x✝.VerifiesCondition (DRT.Condition.neg K) = ¬∃ (g : DRT.Embedding V M), K.Extends x✝ g ∧ ∀ c ∈ K.conditions, g.VerifiesCondition c
Instances For
f.Verifies K says the embedding f verifies the DRS K — f verifies
every condition of K (Def. 1.4.4).
Equations
- f.Verifies K = ∀ c ∈ K.conditions, f.VerifiesCondition c
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).
Renaming along a bijection transports verification: f verifies K.map e
iff f ∘ e verifies K — alphabetic variants have the same semantics.
"Some extension verifies", transported along renaming: 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 occurring referents.
"Some extension verifies" reads the input embedding only at the occurring referents.