Docs / Semantics / Dynamic / DRT / Sheaf / Gluing

Gluing basic DRSs

import Linglib.Semantics.Dynamic.DRT.Sheaf.Gluing · namespace DRT

This file shows that basic DRSs form a sheaf and identifies the topology. A presieve on a context covers it when it is jointly surjective on literals: every literal of the context renames a literal of some member. A compatible family of local theories over any presieve has an amalgamation, the renamings of the local literals, and the amalgamation is unique iff the presieve covers; these covers form a coverage, for which basic DRSs are a sheaf.

Abramsky & Sadrzadeh 2014 glue along covers jointly surjective on referents and on the vocabulary. Along such a cover the renamings of the local literals are the least candidate: a gluing exists iff they are consistent and restrict back to every part, it is unique when the cover is jointly surjective on literals too, and it always exists when the local vocabularies are pairwise disjoint and the cover maps injective. Read on DRSs, it is then the merge of the renamed local DRSs: discourse representation theory's merge followed by unification of referents.

Main definitions

Main statements

Implementation notes

Compatibility is tested on contexts with fresh referents for the arguments of a relation, so amalgamation assumes that V has as many referents as each arity in the vocabulary; isSheaf_literalCoverage assumes V infinite, like the paper's variables.

References

Literal covers

L65–68

Amalgamation

L143–156

The amalgamation of a compatible family holds the renamings of the local literals.

amalgamateL166–175
noncomputable def DRT.amalgamate {L : FirstOrder.Language} {V : Type w} {c : Context L V} {R : CategoryTheory.Presieve c} [DecidableEq V] [(n : ℕ) → DecidableEq (L.Relations n)] {x : CategoryTheory.Presieve.FamilyOfElements (presheaf L V) R} (hx : x.Compatible) (hc : ∀ r ∈ c.vocab, Nonempty (Fin r.fst ↪ V)) :

Used by isAmalgamation_amalgamate

L177–183

The sheaf condition

Basic DRSs are separated for a presieve iff it is jointly surjective on literals.

theorem isSeparatedFor_iffL189–208
{L : FirstOrder.Language} {V : Type w} {c : Context L V} {R : CategoryTheory.Presieve c} [DecidableEq V] [(n : ℕ) → DecidableEq (L.Relations n)] :
CategoryTheory.Presieve.IsSeparatedFor (presheaf L V) R ↔ R ∈ (literalPrecoverage L V).coverings c

Built from

Basic DRSs are a sheaf for a presieve iff it is jointly surjective on literals.

theorem isSheafFor_iffL210–214
{L : FirstOrder.Language} {V : Type w} {c : Context L V} {R : CategoryTheory.Presieve c} [DecidableEq V] [(n : ℕ) → DecidableEq (L.Relations n)] (hc : ∀ r ∈ c.vocab, Nonempty (Fin r.fst ↪ V)) :
CategoryTheory.Presieve.IsSheafFor (presheaf L V) R ↔ R ∈ (literalPrecoverage L V).coverings c

Built from

Basic DRSs are a sheaf for the topology of covers jointly surjective on literals.

theorem isSheaf_literalCoverageL216–220
{L : FirstOrder.Language} {V : Type w} [DecidableEq V] [(n : ℕ) → DecidableEq (L.Relations n)] [Infinite V] :
CategoryTheory.Presieve.IsSheaf (literalCoverage L V).toGrothendieck (presheaf L V)

Built from

Covers

A cover of a context, in Abramsky & Sadrzadeh 2014's sense, is a family of context morphisms jointly surjective on referents and on the vocabulary (⋃ Im fᵢ = X and L = ⋃ Lᵢ).

structure CoverL226–236
{L : FirstOrder.Language} {V : Type w} (c : Context L V) (ι : Type u_1) :
Type (max (max u_1 v) w)
  • part : ι → Context L V

    The covering contexts.

  • map (i : ι) : self.part i ⟶ c

    The covering morphisms.

  • exists_map_eq (x : ↥c.vars) : ∃ (i : ι) (y : ↥(self.part i).vars), (self.map i).map y = x

    Every referent is the image of a referent of some part.

  • exists_mem_vocab (r : (n : ℕ) × L.Relations n) : r ∈ c.vocab → ∃ (i : ι), r ∈ (self.part i).vocab

    Every relation symbol is in the vocabulary of some part.

Used by Cover.presieve, Cover.IsGluing, Cover.presieve_mem_literalPrecoverage_iff, Cover.eq_of_map_eq, Cover.instDecidableIsGluingPresheafOfFintype, Cover.pushforward, Cover.mem_pushforward, Cover.instDecidableMemPresieveContextSetCoveringsLiteralPrecoveragePresieve, Cover.IsGluing.pushforward_subset, Cover.exists_isGluing_iff, Cover.IsGluing.unique, Cover.glue, Cover.isGluing_glue, Cover.referents_toDRS_glue, Cover.coe_conditions_toDRS_glue

Used in Semantics/Dynamic/DRT/Sheaf/Realizers, AbramskySadrzadeh2014, ChatzikyriakidisEtAl2025

L242–243

s glues the family x over the cover when P(fᵢ)(s) = xᵢ for every i.

def Cover.IsGluingL245–248
{L : FirstOrder.Language} {V : Type w} {c : Context L V} {ι : Type u_1} (C : Cover c ι) (P : CategoryTheory.Functor (Context L V)ᵒᵖ (Type u_2)) (x : (i : ι) → P.obj (Opposite.op (C.part i))) (s : P.obj (Opposite.op c)) :
  • C.IsGluing P x s = ∀ (i : ι), (CategoryTheory.ConcreteCategory.hom (P.map (C.map i).op)) s = x i

Built from

Used by Cover.instDecidableIsGluingPresheafOfFintype, Cover.IsGluing.pushforward_subset, Cover.exists_isGluing_iff, Cover.IsGluing.unique, Cover.isGluing_glue

Used in AbramskySadrzadeh2014, ChatzikyriakidisEtAl2025

L267–268
L270–272
L274–276
L280–281

A family glues iff the renamings of its local literals form a gluing, which is then the least one.

theorem Cover.exists_isGluing_iffL290–300
{L : FirstOrder.Language} {V : Type w} {c : Context L V} {ι : Type u_1} {C : Cover c ι} [DecidableEq V] [(n : ℕ) → DecidableEq (L.Relations n)] {x : (i : ι) → Theory (C.part i)} [Fintype ι] :
(∃ (s : (presheaf L V).obj (Opposite.op c)), C.IsGluing (presheaf L V) x s) ↔ ∃ (h : Literal.Consistent (C.pushforward x)), C.IsGluing (presheaf L V) x { lits := C.pushforward x, consistent := h }

Built from , ,

Disjoint vocabularies

L313–323
L328–331
L333–344

The conditions of the glued DRS are those of the renamed local DRSs, as a multiset, so the gluing is the merge of the local DRSs after unification of referents.

theorem Cover.coe_conditions_toDRS_glueL346–366
{L : FirstOrder.Language} {V : Type w} {c : Context L V} {ι : Type u_1} {C : Cover c ι} [DecidableEq V] [(n : ℕ) → DecidableEq (L.Relations n)] (x : (i : ι) → Theory (C.part i)) [Fintype ι] (hdisj : Pairwise fun (i j : ι) => Disjoint (C.part i).vocab (C.part j).vocab) (hinj : ∀ (i : ι), Function.Injective (C.map i).map) :
↑(C.glue hdisj hinj x).toDRS.conditions = ∑ i : ι, ↑(DRS.map (Context.Hom.extend (C.map i)) (x i).toDRS).conditions

Built from ,