Asudeh (2022): Glue Semantics #
In Glue Semantics a word contributes meaning constructors, lambda terms paired with formulas of the implicational fragment of linear logic, and a sentence means what a proof of its clause from these premises computes, implication elimination being function application and introduction abstraction. Linear logic lacks weakening and contraction, so a proof uses each premise exactly once, but keeps commutativity, so word order does not constrain composition. Asudeh's examples follow: Finnish Join vettä and English I drank water spread the same three premises over two and three words, and Everybody loves somebody has one syntactic structure but two proofs, one per scope reading. Asudeh also takes resource sensitivity to do the work of LFG's Completeness and Coherence, which the Dutch cross-serial clauses of Bresnan, Kaplan, Peters and Zaenen bear out.
Main statements #
Term.Linear.rename_perm,Term.not_linear_weaken,Term.Linear.not_linear_contract: reordering premises keeps a proof linear, while weakening and contraction never do.Term.Linear.count_eq,derivable_iff_complete_coherent: linear proofs preserve the count of every atom, and a Dutch clause's premises have a proof exactly when its f-structure is complete and coherent.finnish_english: the Finnish and English sentences instantiate the same premises.card_correct_loves,surface_eval,inverse_eval,interp_qr_eq_eval: Everybody loves somebody has exactly two correct proof nets, and its two proofs mean its surface and inverse readings, which Heim and Kratzer derive from two Quantifier Raising trees.
Implementation notes #
- Proofs are intrinsically typed λ-terms over a list of premises; the structural rules rename
premise positions, and
Term.Linearcounts uses. - The quantifiers' scope variable
∀Sis instantiated to the clause, as in the paper's proofs. - A Dutch control verb takes its complement as a property, so the object it shares is used twice only in the meaning.
- Proof nets use Danos and Regnier's criterion on mathlib's
SimpleGraph.IsTree.
TODO #
- Prove
derivable_iff_exists_correct, by desequentialization and sequentialization, and define the net of a linear term, so thatcard_correct_lovescounts proofs up to βη. - Planarity of linkings characterizes the Lambek calculus, but stating it needs directional
types, which Glue's
⊸lacks.
References #
Proofs as linear terms #
Equations
- One or more equations did not get rendered due to their size.
- Asudeh2022.instDecidableEqGlueTy.decEq (Asudeh2022.GlueTy.atom a) (Asudeh2022.GlueTy.atom b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Asudeh2022.instDecidableEqGlueTy.decEq (Asudeh2022.GlueTy.atom a) (A ⊸ B) = isFalse ⋯
- Asudeh2022.instDecidableEqGlueTy.decEq (A ⊸ B) (Asudeh2022.GlueTy.atom a) = isFalse ⋯
Instances For
Equations
- Asudeh2022.instReprGlueTy = { reprPrec := Asudeh2022.instReprGlueTy.repr }
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Asudeh2022.«term_⊸_» = Lean.ParserDescr.trailingNode `Asudeh2022.«term_⊸_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊸ ") (Lean.ParserDescr.cat `term 25))
Instances For
A proof from a list of premises, as a λ-term. A variable names a position of the list, application is implication elimination, and abstraction discharges a hypothesis appended to the list.
- var {α : Type u_1} {Γ : List (GlueTy α)} (n : ℕ) {T : GlueTy α} (h : Γ[n]? = some T) : Term Γ T
- app {α : Type u_1} {Γ : List (GlueTy α)} {A B : GlueTy α} : Term Γ (A ⊸ B) → Term Γ A → Term Γ B
- lam {α : Type u_1} {Γ : List (GlueTy α)} (A : GlueTy α) {B : GlueTy α} : Term (Γ ++ [A]) B → Term Γ (A ⊸ B)
Instances For
The positions a proof uses, with repetition.
Equations
- (Asudeh2022.Term.var n h).uses = [n]
- (f.app a).uses = f.uses ++ a.uses
- (Asudeh2022.Term.lam A b).uses = b.uses
Instances For
Every hypothesis is used exactly once.
Equations
- (Asudeh2022.Term.var n h).HypLinear = True
- (f.app a).HypLinear = (f.HypLinear ∧ a.HypLinear)
- (Asudeh2022.Term.lam A b).HypLinear = (List.count Γ.length b.uses = 1 ∧ b.HypLinear)
Instances For
Equations
- (Asudeh2022.Term.var n h).decHypLinear = isTrue trivial
- (f.app a).decHypLinear = instDecidableAnd
- (Asudeh2022.Term.lam A b).decHypLinear = instDecidableAnd
Equations
- Asudeh2022.instDecidableLinear t = { decide := decide (∀ i < Γ.length, List.count i t.uses = 1) && decide t.HypLinear, reflects_decide := ⋯ }
Curry–Howard evaluation #
The type of meanings a formula pairs with.
Equations
- Asudeh2022.GlueTy.denote D (Asudeh2022.GlueTy.atom a) = D a
- Asudeh2022.GlueTy.denote D (A ⊸ B) = (Asudeh2022.GlueTy.denote D A → Asudeh2022.GlueTy.denote D B)
Instances For
The meaning at a position.
Equations
- (Asudeh2022.Env.cons v a).get 0 x_1 = ⋯ ▸ v
- (Asudeh2022.Env.cons a ρ).get n.succ x_1 = ρ.get n x_1
Instances For
The meanings extended by one, for a hypothesis.
Equations
- Asudeh2022.Env.nil.snoc x✝ = Asudeh2022.Env.cons x✝ Asudeh2022.Env.nil
- (Asudeh2022.Env.cons u ρ).snoc x✝ = Asudeh2022.Env.cons u (ρ.snoc x✝)
Instances For
The meaning a proof assembles, applying for each elimination and abstracting for each introduction.
Equations
- (Asudeh2022.Term.var n h).eval x✝ = x✝.get n h
- (f.app a).eval x✝ = f.eval x✝ (a.eval x✝)
- (Asudeh2022.Term.lam A b).eval x✝ = fun (v : Asudeh2022.GlueTy.denote D A) => b.eval (x✝.snoc v)
Instances For
Structural rules #
Weakening, contraction and commutativity act on a proof by renaming the positions of its premises. Commutativity preserves linearity and meaning; weakening and contraction destroy linearity, so every premise is used exactly once. Asudeh takes this resource sensitivity to do the work of Klein and Sag's bounded closure and of Kaplan and Bresnan's Completeness and Coherence.
Under a binder, a renaming f of m premises into m' extends to the hypotheses past the
premises, which shift to follow the new ones.
Equations
- Asudeh2022.liftPos m m' f n = if n < m then f n else n - m + m'
Instances For
Rename the premises of a proof along a map of positions that preserves their formulas.
Equations
- Asudeh2022.Term.rename x_2 x_3 (Asudeh2022.Term.var n h) = Asudeh2022.Term.var (x_2 n) ⋯
- Asudeh2022.Term.rename x_2 x_3 (s.app a) = (Asudeh2022.Term.rename x_2 x_3 s).app (Asudeh2022.Term.rename x_2 x_3 a)
- Asudeh2022.Term.rename x_2 x_3 (Asudeh2022.Term.lam A b) = Asudeh2022.Term.lam A (Asudeh2022.Term.rename (Asudeh2022.liftPos x.length x_1.length x_2) ⋯ b)
Instances For
Reordering the premises of a linear proof leaves it linear, so commutativity holds.
Renaming the premises of a proof, with meanings that agree position by position, does not change what it means.
Weakening adds a premise that the proof does not use.
Equations
- Asudeh2022.Term.weaken A t = Asudeh2022.Term.rename id ⋯ t
Instances For
Contraction lets one premise stand for two occurrences of its formula.
Equations
- t.contract = Asudeh2022.Term.rename (fun (n : ℕ) => min n Γ.length) ⋯ t
Instances For
Count invariance #
The count of an atom in a formula is its positive occurrences less its negative ones. A linear proof preserves counts, so a premise multiset whose counts differ from its conclusion's has no linear proof at all.
A formula is derivable from a multiset of premises if some ordering of them has a linear proof of it.
Equations
- Asudeh2022.Derivable M C = ∃ (Γ : List (Asudeh2022.GlueTy α)), ↑Γ = M ∧ ∃ (t : Asudeh2022.Term Γ C), t.Linear
Instances For
The count of an atom in a formula, its positive occurrences less its negative ones.
Equations
- Asudeh2022.GlueTy.count x (Asudeh2022.GlueTy.atom a) = if a = x then 1 else 0
- Asudeh2022.GlueTy.count x (A ⊸ B) = Asudeh2022.GlueTy.count x B - Asudeh2022.GlueTy.count x A
Instances For
The count of an atom in the formula at a position of a list, zero past its end.
Equations
- Asudeh2022.countAt x Γ i = (Option.map (Asudeh2022.GlueTy.count x) Γ[i]?).getD 0
Instances For
The conclusion of a linear proof has the total count of its premises, which is count invariance.
A formula derivable from a multiset has the multiset's total count of every atom.
Proof nets #
A proof net forgets the order in which a proof applies its rules. The sequent Γ ⊢ C is read
with its premises negative and its conclusion positive, so that a negative implication is a
tensor and a positive one a par, and a net links every negative atom occurrence to a positive
occurrence of the same atom. By Danos and Regnier's criterion, a linking is a proof when every
switching, which keeps one of the two edges at each par, leaves a tree.
The path to a node, false for each step into an antecedent and true for each step into a
consequent.
Equations
Instances For
Equations
- A.instDecidableEqNode x✝¹ x✝ = decidable_of_iff (x✝¹.path = x✝.path) ⋯
The subformula occurrences of a formula, root first.
Equations
- One or more equations did not get rendered due to their size.
- Asudeh2022.GlueTy.Node.all (Asudeh2022.GlueTy.atom a) = [Asudeh2022.GlueTy.Node.root]
Instances For
Equations
- A.instFintypeNode = { elems := { val := ↑(Asudeh2022.GlueTy.Node.all A), nodup := ⋯ }, complete := ⋯ }
The atom a formula is, if it is one.
Equations
- (Asudeh2022.GlueTy.atom a).label? = some a
- (A ⊸ B).label? = none
Instances For
The vertices reachable from v in at most k steps.
Equations
- Asudeh2022.reachWithin G v 0 = {v}
- Asudeh2022.reachWithin G v k.succ = (Asudeh2022.reachWithin G v k).biUnion fun (u : V) => insert u (Finset.filter (G.Adj u) Finset.univ)
Instances For
A finite graph is a tree when everything is reachable from one vertex and it has one edge fewer than vertices.
A one-sided sequent lists formulas with their polarities.
Equations
- Asudeh2022.Sequent α = List (Bool × Asudeh2022.GlueTy α)
Instances For
The sequent of premises Γ and conclusion C, the premises negative.
Equations
- Asudeh2022.Sequent.of Γ C = List.map (fun (x : Asudeh2022.GlueTy α) => (false, x)) Γ ++ [(true, C)]
Instances For
Equations
- S.instDecidableEqVert u v = decidable_of_iff (↑u.fst = ↑v.fst ∧ u.snd.path = v.snd.path) ⋯
Equations
- S.instDecidablePredVertIsPar x✝ = { decide := decide ((S.label? x✝).isNone = true) && decide (S.pol x✝ = true), reflects_decide := ⋯ }
The root of the last formula.
Equations
- Asudeh2022.Sequent.lastRoot h = ⟨⟨List.length S - 1, ⋯⟩, Asudeh2022.GlueTy.Node.root⟩
Instances For
Equations
- Asudeh2022.Sequent.instDecidableCorrect L = { decide := decide (∀ a ∈ Finset.univ, (fun (x : S.Switching) => (L.graph x).IsTree) a), reflects_decide := ⋯ }
A sequent is derivable exactly when it has a correct proof net.
The occurrences of x under an even (false) or odd (true) number of antecedents.
Equations
Instances For
A linking pairs the negative and the positive occurrences of each atom one to one.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A sequent with a linking has a conclusion with its premises' total count of every atom.
The substructural hierarchy #
A logic is characterized by the structural rules it admits, and admitting more rules makes it stronger. The Lambek calculus admits none, linear logic commutativity only; relevance logic adds contraction, affine logic weakening, and intuitionistic logic both.
The structural rules whose presence or absence characterizes a logic.
- weakening : StructuralRule
- contraction : StructuralRule
- commutativity : StructuralRule
Instances For
Equations
- Asudeh2022.instDecidableEqStructuralRule x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
A logic, by the structural rules it admits.
Equations
Instances For
The Lambek calculus admits no structural rules.
Equations
Instances For
Linear logic admits commutativity only.
Instances For
A resource logic admits neither weakening nor contraction.
Equations
Instances For
The resource logics are the Lambek calculus and linear logic.
Linear logic is the commutative resource logic.
The paper's proofs #
Equations
- Asudeh2022.instDecidableEqLabel x✝ y✝ = if h : x✝.ctorIdx = y✝.ctorIdx then isTrue ⋯ else isFalse ⋯
Equations
- Asudeh2022.instReprLabel = { reprPrec := Asudeh2022.instReprLabel.repr }
Equations
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.a prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.a")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.b prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.b")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.c prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.c")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.l prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.l")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.e prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.e")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.s prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.s")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.p prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.p")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.w prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.w")).group prec✝
- Asudeh2022.instReprLabel.repr Asudeh2022.Label.d prec✝ = Repr.addAppParen (Std.Format.nest (if prec✝ ≥ 1024 then 1 else 2) (Std.Format.text "Asudeh2022.Label.d")).group prec✝
Instances For
Recurrying by hypothetical reasoning turns a head taking a then b into one taking b
then a, discharging both hypotheses.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The meaning constructors of Alex likes Blake, word by word.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The single normal-form proof applies likes to Blake and then to Alex, taking the premises out of word order.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The meaning constructors of Finnish Join vettä, where join contributes the speaker and the drinking and vettä the water.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The meaning constructors of English I drank water, one per word.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The one normal-form proof of I drank water in either language.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The meaning constructors of Everybody loves somebody, word by word, with both quantifiers' scope instantiated to the clause.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Surface scope hypothesizes the object and then the subject, discharges the object under somebody and then the subject under everybody.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Inverse scope hypothesizes the object only, applies everybody to loves of it, and discharges the object under somebody.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Everybody loves somebody has exactly two correct proof nets, the two normal-form proofs the paper finds for it.
The occurrence of the clause the sentence proves.
Equations
Instances For
In a correct net the clause is the result of a quantifier, never of loves itself, so one of the two quantifiers takes widest scope.
Clause atoms denote propositions and argument atoms entities.
Equations
Instances For
The premises mean every person, love and some person, the two quantifiers being the generalized quantifiers of the determiners.
Equations
- Asudeh2022.scopeEnv person love = Asudeh2022.Env.cons (Quantifier.GQ.every person) (Asudeh2022.Env.cons love (Asudeh2022.Env.cons (Quantifier.GQ.some person) Asudeh2022.Env.nil))
Instances For
The surface proof means the surface-scope reading, every person loving some person.
The inverse proof means the inverse-scope reading, some person loved by every person.
One set of premises yields, by its two proofs, what Heim and Kratzer's engine computes from their two Quantifier Raising trees.
The two proofs are two readings, since in Heim and Kratzer's model the surface reading holds and the inverse one fails.
Completeness and Coherence #
Asudeh takes resource sensitivity to do the work of Completeness and Coherence. The Dutch cross-serial clauses of Bresnan, Kaplan, Peters and Zaenen test the claim: their f-structure spine is complete and coherent exactly when its objects match its non-final verbs, and exactly then do the meaning constructors it instantiates have a linear proof of the clause.
The atoms of a Dutch clause's semantic structure, for its noun phrases and for the clause each verb heads.
Instances For
Equations
- Asudeh2022.instDecidableEqDutchAtom.decEq (Asudeh2022.DutchAtom.np a) (Asudeh2022.DutchAtom.np b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Asudeh2022.instDecidableEqDutchAtom.decEq (Asudeh2022.DutchAtom.np j) (Asudeh2022.DutchAtom.clause i) = isFalse ⋯
- Asudeh2022.instDecidableEqDutchAtom.decEq (Asudeh2022.DutchAtom.clause i) (Asudeh2022.DutchAtom.np j) = isFalse ⋯
- Asudeh2022.instDecidableEqDutchAtom.decEq (Asudeh2022.DutchAtom.clause a) (Asudeh2022.DutchAtom.clause b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
The meaning constructor of the verb at depth i. A non-final verb takes its complement as a
property of the complement's subject, which functional control identifies with the verb's
object, then the object and its own subject; the final verb takes its subject alone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The premises at the d depths from i, the object and the verb at each.
Equations
- One or more equations did not get rendered due to their size.
- Asudeh2022.premisesFrom s 0 x✝ = []
Instances For
The premises of a spine are the objects and verbs at every depth and the subject.
Equations
- Asudeh2022.premises s = ↑(Asudeh2022.premisesFrom s (max s.objects s.verbs) 0 ++ [Asudeh2022.GlueTy.atom (Asudeh2022.DutchAtom.np 0)])
Instances For
Premises with a linear proof of the clause come from a complete and coherent spine.
The proof from the premises at the depths from i and the subject of the verb at i
applies that verb to the property its complement proves, its object and its subject.
Equations
- One or more equations did not get rendered due to their size.
- Asudeh2022.build n 0 x x_1 = (Asudeh2022.Term.var 0 ⋯).app (Asudeh2022.Term.var 1 ⋯)
Instances For
A complete and coherent spine instantiates premises with a linear proof of its clause.
The meaning constructors of a spine have a linear proof of its clause exactly when the spine is complete and coherent.
Every clause with its objects matching its non-final verbs composes.
dat Jan Piet Marie zag helpen laten zwemmen, with a verb too many, and dat Jan Piet Marie Hans zag helpen zwemmen, with a noun phrase too many, do not compose.
The paper's examples #
The meaning constructors a row's words contribute.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The number of words of a row's sentence, which are separated by single spaces.
Equations
- Asudeh2022.wordCount r = (List.filter (fun (x : Char) => decide (x = ' ')) r.primaryText.toList).length + 1
Instances For
Every row has a lexicon, and each of its words contributes meaning constructors.