From DRT to predicate logic #
This file translates each DRS into a mathlib FirstOrder.Language.Formula and
proves that the translation's Realize coincides with Embedding.Verifies —
[KR93]'s §1.5 reduction of the DRS language to first-order logic
(cf. [Mus96]). The universe of a sub-DRS is existentially closed
(closeExists, via Formula.iExs); the antecedent of a ⇒ is universally
closed (closeForall, via Formula.iAlls).
Main declarations #
DRS.toFormula,Condition.toFormula: the translation intoL.Formula V.DRS.realize_toFormula: truth of a DRS matches its first-order translation'sRealize.realize_closeExists,realize_closeForall: the universe-closure operators realize as∃/∀over embeddings extendingvon the closed referents.
Relabel the free referents V so that those in U move to the bound side
{x // x ∈ U} (and the rest stay free) — the splitting iExs/iAlls quantify
over. DecidableEq V is needed only for the x ∈ U test, not by iExs/iAlls.
Equations
- DRT.splitOn U x = if h : x ∈ U then Sum.inr ⟨x, h⟩ else Sum.inl x
Instances For
Existentially close the referents in U within a formula over free
referents V (relabel via splitOn, then Formula.iExs).
Equations
- DRT.closeExists U φ = FirstOrder.Language.Formula.iExs (↥U) (FirstOrder.Language.Formula.relabel (DRT.splitOn U) φ)
Instances For
Universally close the referents in U (used for the antecedent of ⇒).
Equations
- DRT.closeForall U φ = FirstOrder.Language.Formula.iAlls (↥U) (FirstOrder.Language.Formula.relabel (DRT.splitOn U) φ)
Instances For
Translate a single DRS-condition to a formula: each sub-box's universe is
existentially closed over the conjunction of its translated conditions; the
antecedent of a ⇒ is universally closed instead (§1.5).
Equations
- One or more equations did not get rendered due to their size.
- (DRT.Condition.rel R args).toFormula = R.formula fun (i : Fin n) => FirstOrder.Language.var (args i)
- (DRT.Condition.eq a b).toFormula = (FirstOrder.Language.var a).equal (FirstOrder.Language.var b)
- (DRT.Condition.neg K).toFormula = (DRT.closeExists K.referents (List.foldr (fun (x1 x2 : L.Formula V) => x1 ⊓ x2) ⊤ (List.map DRT.Condition.toFormula K.conditions))).not
Instances For
The conjunction of a list of translated conditions.
Equations
- DRT.Condition.toFormulaAll cs = List.foldr (fun (x1 x2 : L.Formula V) => x1 ⊓ x2) ⊤ (List.map DRT.Condition.toFormula cs)
Instances For
The conjunction of a DRS's conditions, without closing its universe (the
antecedent body of a ⇒).
Equations
Instances For
Translate a DRS to a first-order formula: existentially close the universe over the conjunction of the (translated) conditions (§1.5).
Equations
Instances For
Agreement of the translation with the bespoke semantics #
closeExists realizes as existential quantification over embeddings that
extend v on U.
closeForall realizes as universal quantification over embeddings that extend
v on U.
A single condition's translation realizes as VerifiesCondition.
A list of conditions' conjoined translation realizes as the conjunction of their realizations.
The open body of a DRS (its conditions, no universe closure) realizes as
Verifies of the DRS (used for the antecedent of ⇒).
DRT ⊆ FOL (§1.5): the
translated formula's Realize coincides with the bespoke Embedding.Verifies. As
toFormula existentially closes the universe, the correspondence is with an
embedding v' extending v over K.referents.