Documentation

Studies.Asudeh2022

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 #

Implementation notes #

TODO #

References #

Proofs as linear terms #

inductive Asudeh2022.GlueTy (α : Type u_1) :
Type u_1

Formulas of the implicational fragment of linear logic over instantiated atoms.

Instances For
    def Asudeh2022.instDecidableEqGlueTy.decEq {α✝ : Type u_1} [DecidableEq α✝] (x✝ x✝¹ : GlueTy α✝) :
    Decidable (x✝ = x✝¹)
    Equations
    Instances For
      @[instance_reducible]
      instance Asudeh2022.instDecidableEqGlueTy {α✝ : Type u_1} [DecidableEq α✝] :
      DecidableEq (GlueTy α✝)
      Equations
      @[instance_reducible]
      instance Asudeh2022.instReprGlueTy {α✝ : Type u_1} [Repr α✝] :
      Repr (GlueTy α✝)
      Equations
      def Asudeh2022.instReprGlueTy.repr {α✝ : Type u_1} [Repr α✝] :
      GlueTy α✝ → ℕ → Std.Format
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        def Asudeh2022.«term_⊸_» :
        Lean.TrailingParserDescr
        Equations
        • Asudeh2022.«term_⊸_» = Lean.ParserDescr.trailingNode `Asudeh2022.«term_⊸_» 25 26 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ⊸ ") (Lean.ParserDescr.cat `term 25))
        Instances For
          inductive Asudeh2022.Term {α : Type u_1} :
          List (GlueTy α) → GlueTy α → Type u_1

          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.

          Instances For
            def Asudeh2022.Term.uses {α : Type u_1} {Γ : List (GlueTy α)} {T : GlueTy α} :
            Term Γ T → List ℕ

            The positions a proof uses, with repetition.

            Equations
            Instances For
              def Asudeh2022.Term.HypLinear {α : Type u_1} {Γ : List (GlueTy α)} {T : GlueTy α} :
              Term Γ T → Prop

              Every hypothesis is used exactly once.

              Equations
              Instances For
                @[instance_reducible]
                instance Asudeh2022.Term.decHypLinear {α : Type u_1} {Γ : List (GlueTy α)} {T : GlueTy α} (t : Term Γ T) :
                Decidable t.HypLinear
                Equations
                def Asudeh2022.Term.Linear {α : Type u_1} {Γ : List (GlueTy α)} {T : GlueTy α} (t : Term Γ T) :

                A proof is linear if it uses every premise and every hypothesis exactly once.

                Equations
                Instances For
                  @[instance_reducible]
                  instance Asudeh2022.instDecidableLinear {α : Type u_1} {Γ : List (GlueTy α)} {T : GlueTy α} (t : Term Γ T) :
                  Decidable t.Linear
                  Equations

                  Curry–Howard evaluation #

                  def Asudeh2022.GlueTy.denote {α : Type u_1} (D : α → Type) :
                  GlueTy α → Type

                  The type of meanings a formula pairs with.

                  Equations
                  Instances For
                    inductive Asudeh2022.Env {α : Type u_1} (D : α → Type) :
                    List (GlueTy α) → Type u_1

                    Meanings for the premises of a list.

                    Instances For
                      def Asudeh2022.Env.get {α : Type u_1} {D : α → Type} {Γ : List (GlueTy α)} :
                      Env D Γ → (n : ℕ) → {T : GlueTy α} → Γ[n]? = some T → GlueTy.denote D T

                      The meaning at a position.

                      Equations
                      Instances For
                        def Asudeh2022.Env.snoc {α : Type u_1} {D : α → Type} {T : GlueTy α} {Γ : List (GlueTy α)} :
                        Env D Γ → GlueTy.denote D T → Env D (Γ ++ [T])

                        The meanings extended by one, for a hypothesis.

                        Equations
                        Instances For
                          theorem Asudeh2022.Env.get_congr {α : Type u_1} {D : α → Type} {Γ : List (GlueTy α)} (ρ : Env D Γ) {n m : ℕ} {T : GlueTy α} (e : n = m) (h : Γ[n]? = some T) (h' : Γ[m]? = some T) :
                          ρ.get n h = ρ.get m h'
                          theorem Asudeh2022.Env.get_snoc_of_lt {α : Type u_1} {D : α → Type} {A B : GlueTy α} {Γ : List (GlueTy α)} (ρ : Env D Γ) (v : GlueTy.denote D A) {n : ℕ} :
                          n < Γ.length → ∀ (h : (Γ ++ [A])[n]? = some B) (h' : Γ[n]? = some B), (ρ.snoc v).get n h = ρ.get n h'
                          theorem Asudeh2022.Env.get_snoc_of_eq {α : Type u_1} {D : α → Type} {A : GlueTy α} {Γ : List (GlueTy α)} (ρ : Env D Γ) (v : GlueTy.denote D A) {n : ℕ} :
                          n = Γ.length → ∀ (h : (Γ ++ [A])[n]? = some A), (ρ.snoc v).get n h = v
                          def Asudeh2022.Term.eval {α : Type u_1} {D : α → Type} {Γ : List (GlueTy α)} {T : GlueTy α} :
                          Term Γ T → Env D Γ → GlueTy.denote D T

                          The meaning a proof assembles, applying for each elimination and abstracting for each introduction.

                          Equations
                          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.

                            def Asudeh2022.liftPos (m m' : ℕ) (f : ℕ → ℕ) (n : ℕ) :
                            ℕ

                            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
                            Instances For
                              theorem Asudeh2022.liftPos_liftPos (m m' : ℕ) (f : ℕ → ℕ) :
                              liftPos (m + 1) (m' + 1) (liftPos m m' f) = liftPos m m' f
                              theorem Asudeh2022.liftPos_getElem? {α : Type u_1} {Γ Γ' : List (GlueTy α)} {f : ℕ → ℕ} (hf : ∀ (n : ℕ) (B : GlueTy α), Γ[n]? = some B → Γ'[f n]? = some B) (A : GlueTy α) (n : ℕ) (B : GlueTy α) :
                              (Γ ++ [A])[n]? = some B → (Γ' ++ [A])[liftPos Γ.length Γ'.length f n]? = some B
                              def Asudeh2022.Term.rename {α : Type u_1} {Γ Γ' : List (GlueTy α)} (f : ℕ → ℕ) :
                              (∀ (n : ℕ) (B : GlueTy α), Γ[n]? = some B → Γ'[f n]? = some B) → {T : GlueTy α} → Term Γ T → Term Γ' T

                              Rename the premises of a proof along a map of positions that preserves their formulas.

                              Equations
                              Instances For
                                theorem Asudeh2022.Term.uses_rename {α : Type u_1} {Γ Γ' : List (GlueTy α)} (f : ℕ → ℕ) (hf : ∀ (n : ℕ) (B : GlueTy α), Γ[n]? = some B → Γ'[f n]? = some B) {T : GlueTy α} (t : Term Γ T) :
                                (rename f hf t).uses = List.map (liftPos Γ.length Γ'.length f) t.uses
                                theorem Asudeh2022.Term.HypLinear.rename {α : Type u_1} {Γ Γ' : List (GlueTy α)} {f : ℕ → ℕ} (hf : ∀ (n : ℕ) (B : GlueTy α), Γ[n]? = some B → Γ'[f n]? = some B) {T : GlueTy α} {t : Term Γ T} (ht : t.HypLinear) :
                                theorem Asudeh2022.Term.Linear.rename_perm {α : Type u_1} {Γ Γ' : List (GlueTy α)} {T : GlueTy α} {t : Term Γ T} (ht : t.Linear) (σ : Equiv.Perm ℕ) (hσ : ∀ (n : ℕ), Γ.length ≤ n → σ n = n) (hlen : Γ'.length = Γ.length) (hf : ∀ (n : ℕ) (B : GlueTy α), Γ[n]? = some B → Γ'[σ n]? = some B) :
                                (rename (⇑σ) hf t).Linear

                                Reordering the premises of a linear proof leaves it linear, so commutativity holds.

                                theorem Asudeh2022.Term.eval_rename {α : Type u_1} {D : α → Type} {Γ Γ' : List (GlueTy α)} (f : ℕ → ℕ) (hf : ∀ (n : ℕ) (B : GlueTy α), Γ[n]? = some B → Γ'[f n]? = some B) {T : GlueTy α} (t : Term Γ T) (ρ : Env D Γ) (ρ' : Env D Γ') (hρ : ∀ (n : ℕ) (B : GlueTy α) (h : Γ[n]? = some B), ρ'.get (f n) ⋯ = ρ.get n h) :
                                (rename f hf t).eval ρ' = t.eval ρ

                                Renaming the premises of a proof, with meanings that agree position by position, does not change what it means.

                                theorem Asudeh2022.getElem?_append_left_of_eq_some {α : Type u_1} {Γ : List (GlueTy α)} {A : GlueTy α} {n : ℕ} {B : GlueTy α} (h : Γ[n]? = some B) :
                                (Γ ++ [A])[n]? = some B
                                def Asudeh2022.Term.weaken {α : Type u_1} {Γ : List (GlueTy α)} {T : GlueTy α} (A : GlueTy α) (t : Term Γ T) :
                                Term (Γ ++ [A]) T

                                Weakening adds a premise that the proof does not use.

                                Equations
                                Instances For
                                  theorem Asudeh2022.Term.not_linear_weaken {α : Type u_1} {Γ : List (GlueTy α)} {T : GlueTy α} (A : GlueTy α) (t : Term Γ T) :
                                  ¬(weaken A t).Linear

                                  A weakened proof is never linear, since its added premise is left over.

                                  theorem Asudeh2022.contract_getElem? {α : Type u_1} {Γ : List (GlueTy α)} {A : GlueTy α} (n : ℕ) (B : GlueTy α) :
                                  (Γ ++ [A, A])[n]? = some B → (Γ ++ [A])[min n Γ.length]? = some B
                                  def Asudeh2022.Term.contract {α : Type u_1} {Γ : List (GlueTy α)} {A T : GlueTy α} (t : Term (Γ ++ [A, A]) T) :
                                  Term (Γ ++ [A]) T

                                  Contraction lets one premise stand for two occurrences of its formula.

                                  Equations
                                  Instances For
                                    theorem Asudeh2022.Term.Linear.not_linear_contract {α : Type u_1} {Γ : List (GlueTy α)} {A T : GlueTy α} {t : Term (Γ ++ [A, A]) T} (ht : t.Linear) :

                                    Contracting a linear proof never yields a linear one, since the merged premise is used twice.

                                    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.

                                    def Asudeh2022.Derivable {α : Type u_1} (M : Multiset (GlueTy α)) (C : GlueTy α) :

                                    A formula is derivable from a multiset of premises if some ordering of them has a linear proof of it.

                                    Equations
                                    Instances For
                                      def Asudeh2022.GlueTy.count {α : Type u_1} [DecidableEq α] (x : α) :
                                      GlueTy α → ℤ

                                      The count of an atom in a formula, its positive occurrences less its negative ones.

                                      Equations
                                      Instances For
                                        def Asudeh2022.countAt {α : Type u_1} [DecidableEq α] (x : α) (Γ : List (GlueTy α)) (i : ℕ) :
                                        ℤ

                                        The count of an atom in the formula at a position of a list, zero past its end.

                                        Equations
                                        Instances For
                                          theorem Asudeh2022.Term.count_eq_sum {α : Type u_1} {Γ : List (GlueTy α)} [DecidableEq α] (x : α) {T : GlueTy α} (t : Term Γ T) (ht : t.HypLinear) :
                                          GlueTy.count x T = (List.map (countAt x Γ) t.uses).sum
                                          theorem Asudeh2022.Term.Linear.count_eq {α : Type u_1} {Γ : List (GlueTy α)} [DecidableEq α] (x : α) {T : GlueTy α} {t : Term Γ T} (ht : t.Linear) :
                                          GlueTy.count x T = (List.map (GlueTy.count x) Γ).sum

                                          The conclusion of a linear proof has the total count of its premises, which is count invariance.

                                          theorem Asudeh2022.Derivable.count_eq {α : Type u_1} [DecidableEq α] {M : Multiset (GlueTy α)} {C : GlueTy α} (h : Derivable M C) (x : α) :
                                          GlueTy.count x C = (Multiset.map (GlueTy.count x) M).sum

                                          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.

                                          inductive Asudeh2022.GlueTy.Node {α : Type u_1} :
                                          GlueTy α → Type u_1

                                          The subformula occurrences of a formula, as paths from its root.

                                          Instances For
                                            def Asudeh2022.GlueTy.Node.path {α : Type u_1} {A : GlueTy α} :
                                            A.Node → List Bool

                                            The path to a node, false for each step into an antecedent and true for each step into a consequent.

                                            Equations
                                            Instances For
                                              theorem Asudeh2022.GlueTy.Node.path_injective {α : Type u_1} {A : GlueTy α} :
                                              Function.Injective path
                                              @[instance_reducible]
                                              instance Asudeh2022.GlueTy.instDecidableEqNode {α : Type u_1} (A : GlueTy α) :
                                              DecidableEq A.Node
                                              Equations
                                              def Asudeh2022.GlueTy.Node.all {α : Type u_1} (A : GlueTy α) :
                                              List A.Node

                                              The subformula occurrences of a formula, root first.

                                              Equations
                                              Instances For
                                                theorem Asudeh2022.GlueTy.Node.mem_all {α : Type u_1} {A : GlueTy α} (n : A.Node) :
                                                n ∈ all A
                                                theorem Asudeh2022.GlueTy.Node.nodup_all {α : Type u_1} (A : GlueTy α) :
                                                (all A).Nodup
                                                @[instance_reducible]
                                                instance Asudeh2022.GlueTy.instFintypeNode {α : Type u_1} (A : GlueTy α) :
                                                Fintype A.Node
                                                Equations
                                                def Asudeh2022.GlueTy.Node.sub {α : Type u_1} {A : GlueTy α} :
                                                A.Node → GlueTy α

                                                The subformula at a node.

                                                Equations
                                                Instances For
                                                  def Asudeh2022.GlueTy.Node.flip {α : Type u_1} {A : GlueTy α} :
                                                  A.Node → Bool

                                                  Whether a node lies under an odd number of antecedents.

                                                  Equations
                                                  Instances For
                                                    def Asudeh2022.GlueTy.Node.childDir {α : Type u_1} {A : GlueTy α} :
                                                    A.Node → A.Node → Option Bool

                                                    Whether c is the antecedent (false) or the consequent (true) child of p.

                                                    Instances For
                                                      def Asudeh2022.GlueTy.label? {α : Type u_1} :
                                                      GlueTy α → Option α

                                                      The atom a formula is, if it is one.

                                                      Equations
                                                      Instances For
                                                        def Asudeh2022.reachWithin {V : Type u_2} [Fintype V] [DecidableEq V] (G : SimpleGraph V) [DecidableRel G.Adj] (v : V) :
                                                        ℕ → Finset V

                                                        The vertices reachable from v in at most k steps.

                                                        Equations
                                                        Instances For
                                                          theorem Asudeh2022.mem_reachWithin_succ {V : Type u_2} [Fintype V] [DecidableEq V] {G : SimpleGraph V} [DecidableRel G.Adj] {v w : V} {k : ℕ} :
                                                          w ∈ reachWithin G v (k + 1) ↔ ∃ u ∈ reachWithin G v k, w = u ∨ G.Adj u w
                                                          theorem Asudeh2022.reachWithin_mono {V : Type u_2} [Fintype V] [DecidableEq V] {G : SimpleGraph V} [DecidableRel G.Adj] (v : V) {k m : ℕ} (h : k ≤ m) :
                                                          reachWithin G v k ⊆ reachWithin G v m
                                                          theorem Asudeh2022.reachable_of_mem_reachWithin {V : Type u_2} [Fintype V] [DecidableEq V] {G : SimpleGraph V} [DecidableRel G.Adj] {v w : V} {k : ℕ} :
                                                          w ∈ reachWithin G v k → G.Reachable v w
                                                          theorem Asudeh2022.reachWithin_subset_of_adj {V : Type u_2} [Fintype V] [DecidableEq V] {G : SimpleGraph V} [DecidableRel G.Adj] {v u : V} (h : G.Adj v u) (k : ℕ) :
                                                          reachWithin G u k ⊆ reachWithin G v (k + 1)
                                                          theorem Asudeh2022.mem_reachWithin_length {V : Type u_2} [Fintype V] [DecidableEq V] {G : SimpleGraph V} [DecidableRel G.Adj] {v w : V} (p : G.Walk v w) :
                                                          w ∈ reachWithin G v p.length
                                                          theorem Asudeh2022.connected_iff_reachWithin {V : Type u_2} [Fintype V] [DecidableEq V] {G : SimpleGraph V} [DecidableRel G.Adj] (v : V) :
                                                          G.Connected ↔ reachWithin G v (Fintype.card V) = Finset.univ
                                                          theorem Asudeh2022.isTree_iff_reachWithin {V : Type u_2} [Fintype V] [DecidableEq V] {G : SimpleGraph V} [DecidableRel G.Adj] (v : V) :
                                                          G.IsTree ↔ reachWithin G v (Fintype.card V) = Finset.univ ∧ ∑ w : V, G.degree w + 2 = 2 * Fintype.card V

                                                          A finite graph is a tree when everything is reachable from one vertex and it has one edge fewer than vertices.

                                                          @[reducible, inline]
                                                          abbrev Asudeh2022.Sequent (α : Type u_2) :
                                                          Type u_2

                                                          A one-sided sequent lists formulas with their polarities.

                                                          Equations
                                                          Instances For
                                                            def Asudeh2022.Sequent.of {α : Type u_1} (Γ : List (GlueTy α)) (C : GlueTy α) :

                                                            The sequent of premises Γ and conclusion C, the premises negative.

                                                            Equations
                                                            Instances For
                                                              @[reducible, inline]
                                                              abbrev Asudeh2022.Sequent.Vert {α : Type u_1} (S : Sequent α) :
                                                              Type u_1

                                                              The subformula occurrences of a sequent.

                                                              Equations
                                                              • S.Vert = ((i : Fin (List.length S)) × S[i].2.Node)
                                                              Instances For
                                                                @[instance_reducible, instance 10000]
                                                                instance Asudeh2022.Sequent.instDecidableEqVert {α : Type u_1} (S : Sequent α) :
                                                                DecidableEq S.Vert
                                                                Equations
                                                                def Asudeh2022.Sequent.pol {α : Type u_1} (S : Sequent α) (v : S.Vert) :
                                                                Bool

                                                                The polarity of an occurrence.

                                                                Equations
                                                                • S.pol v = (S[v.fst].1 != v.snd.flip)
                                                                Instances For
                                                                  def Asudeh2022.Sequent.label? {α : Type u_1} (S : Sequent α) (v : S.Vert) :
                                                                  Option α

                                                                  The atom an occurrence is, if it is one.

                                                                  Equations
                                                                  Instances For
                                                                    @[reducible, inline]
                                                                    abbrev Asudeh2022.Sequent.Neg {α : Type u_1} (S : Sequent α) :
                                                                    Type u_1

                                                                    The negative atom occurrences.

                                                                    Equations
                                                                    Instances For
                                                                      @[reducible, inline]
                                                                      abbrev Asudeh2022.Sequent.Pos {α : Type u_1} (S : Sequent α) :
                                                                      Type u_1

                                                                      The positive atom occurrences.

                                                                      Equations
                                                                      Instances For
                                                                        def Asudeh2022.Sequent.IsPar {α : Type u_1} (S : Sequent α) (v : S.Vert) :

                                                                        A par is a positive implication; a switching keeps one of its two edges.

                                                                        Equations
                                                                        Instances For
                                                                          @[instance_reducible]
                                                                          instance Asudeh2022.Sequent.instDecidablePredVertIsPar {α : Type u_1} (S : Sequent α) :
                                                                          DecidablePred S.IsPar
                                                                          Equations
                                                                          @[reducible, inline]
                                                                          abbrev Asudeh2022.Sequent.Switching {α : Type u_1} (S : Sequent α) :
                                                                          Type u_1

                                                                          A switching chooses an edge at each par.

                                                                          Equations
                                                                          Instances For
                                                                            def Asudeh2022.Sequent.edgeDir {α : Type u_1} (S : Sequent α) :
                                                                            S.Vert → S.Vert → Option Bool

                                                                            The direction of the formula-tree edge from p down to c, if there is one.

                                                                            Equations
                                                                            • S.edgeDir ⟨i, p⟩ ⟨j, c⟩ = if h : i = j then (h ▸ p).childDir c else none
                                                                            Instances For
                                                                              def Asudeh2022.Sequent.kept {α : Type u_1} (S : Sequent α) (σ : S.Switching) (p c : S.Vert) :
                                                                              Bool

                                                                              The switching keeps the formula-tree edge from p down to c.

                                                                              Equations
                                                                              • S.kept σ p c = match S.edgeDir p c with | some b => if h : S.IsPar p then σ ⟨p, h⟩ == b else true | none => false
                                                                              Instances For
                                                                                @[reducible, inline]
                                                                                abbrev Asudeh2022.Sequent.Linking {α : Type u_1} (S : Sequent α) :
                                                                                Type u_1

                                                                                A linking pairs each negative atom occurrence with a positive occurrence of the same atom.

                                                                                Equations
                                                                                Instances For
                                                                                  def Asudeh2022.Sequent.Linking.ax {α : Type u_1} {S : Sequent α} (L : S.Linking) (u v : S.Vert) :
                                                                                  Bool

                                                                                  The axiom link from a negative occurrence u to v.

                                                                                  Equations
                                                                                  • L.ax u v = if h : (S.label? u).isSome = true ∧ S.pol u = false then ↑(↑L ⟨u, h⟩) == v else false
                                                                                  Instances For
                                                                                    def Asudeh2022.Sequent.Linking.graph {α : Type u_1} {S : Sequent α} (L : S.Linking) (σ : S.Switching) :
                                                                                    SimpleGraph S.Vert

                                                                                    The switching graph keeps the chosen formula-tree edges and every axiom link.

                                                                                    Equations
                                                                                    • L.graph σ = SimpleGraph.fromRel fun (u v : S.Vert) => S.kept σ u v = true ∨ L.ax u v = true
                                                                                    Instances For
                                                                                      @[instance_reducible]
                                                                                      instance Asudeh2022.Sequent.instDecidableRelVertAdjGraph {α : Type u_1} {S : Sequent α} (L : S.Linking) (σ : S.Switching) :
                                                                                      DecidableRel (L.graph σ).Adj
                                                                                      Equations
                                                                                      • One or more equations did not get rendered due to their size.

                                                                                      A linking is correct if every switching graph is a tree.

                                                                                      Equations
                                                                                      Instances For
                                                                                        def Asudeh2022.Sequent.lastRoot {α : Type u_1} {S : Sequent α} (h : 0 < List.length S) :

                                                                                        The root of the last formula.

                                                                                        Equations
                                                                                        Instances For
                                                                                          @[instance_reducible]
                                                                                          instance Asudeh2022.Sequent.instDecidableIsTreeVertGraph {α : Type u_1} {S : Sequent α} (L : S.Linking) (σ : S.Switching) :
                                                                                          Decidable (L.graph σ).IsTree
                                                                                          Equations
                                                                                          • One or more equations did not get rendered due to their size.
                                                                                          @[instance_reducible]
                                                                                          instance Asudeh2022.Sequent.instDecidableCorrect {α : Type u_1} {S : Sequent α} (L : S.Linking) :
                                                                                          Decidable L.Correct
                                                                                          Equations
                                                                                          theorem Asudeh2022.derivable_iff_exists_correct {α : Type u_1} [DecidableEq α] (Γ : List (GlueTy α)) (C : GlueTy α) :
                                                                                          Derivable (↑Γ) C ↔ ∃ (L : (Sequent.of Γ C).Linking), L.Correct

                                                                                          A sequent is derivable exactly when it has a correct proof net.

                                                                                          def Asudeh2022.GlueTy.leafCount {α : Type u_1} [DecidableEq α] (A : GlueTy α) (x : α) (b : Bool) :
                                                                                          ℕ

                                                                                          The occurrences of x under an even (false) or odd (true) number of antecedents.

                                                                                          Equations
                                                                                          Instances For
                                                                                            theorem Asudeh2022.GlueTy.count_eq_leafCount {α : Type u_1} [DecidableEq α] (A : GlueTy α) (x : α) :
                                                                                            count x A = ↑(A.leafCount x false) - ↑(A.leafCount x true)
                                                                                            def Asudeh2022.Sequent.occCount {α : Type u_1} [DecidableEq α] (S : Sequent α) (x : α) (p : Bool) :
                                                                                            ℕ

                                                                                            The number of occurrences of x of polarity p in a sequent.

                                                                                            Equations
                                                                                            Instances For
                                                                                              theorem Asudeh2022.Sequent.occCount_eq {α : Type u_1} [DecidableEq α] (S : Sequent α) (x : α) (p : Bool) :
                                                                                              S.occCount x p = (List.map (fun (F : Bool × GlueTy α) => F.2.leafCount x (F.1 != p)) S).sum
                                                                                              def Asudeh2022.Sequent.Linking.equivLabel {α : Type u_1} {S : Sequent α} (L : S.Linking) (x : α) :
                                                                                              { v : S.Vert // S.label? v = some x ∧ S.pol v = false } ≃ { v : S.Vert // S.label? v = some x ∧ S.pol v = true }

                                                                                              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
                                                                                                theorem Asudeh2022.Sequent.Linking.count_eq {α : Type u_1} [DecidableEq α] {Γ : List (GlueTy α)} {C : GlueTy α} (L : (of Γ C).Linking) (x : α) :
                                                                                                GlueTy.count x C = (List.map (GlueTy.count x) Γ).sum

                                                                                                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.

                                                                                                Instances For
                                                                                                  @[instance_reducible]
                                                                                                  Equations
                                                                                                  @[reducible, inline]

                                                                                                  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.

                                                                                                      Equations
                                                                                                      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 #

                                                                                                          The instantiated atoms of the paper's examples.

                                                                                                          Instances For
                                                                                                            @[instance_reducible]
                                                                                                            Equations
                                                                                                            @[instance_reducible]
                                                                                                            Equations
                                                                                                            def Asudeh2022.instReprLabel.repr :
                                                                                                            Label → ℕ → Std.Format
                                                                                                            Equations
                                                                                                            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
                                                                                                                theorem Asudeh2022.recurry_eval {D : Label → Type} (f : D Label.a → D Label.b → D Label.c) :
                                                                                                                recurry.eval (Env.cons f Env.nil) = fun (u : D Label.b) (v : D Label.a) => f v u

                                                                                                                The recurried proof means the same function with its arguments swapped.

                                                                                                                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
                                                                                                                    theorem Asudeh2022.likesProof_eval {D : Label → Type} (alex : D Label.a) (like : D Label.b → D Label.a → D Label.l) (blake : D Label.b) :
                                                                                                                    likesProof.eval (Env.cons alex (Env.cons like (Env.cons blake Env.nil))) = like blake alex
                                                                                                                    def Asudeh2022.finnish :
                                                                                                                    List (List (GlueTy Label))

                                                                                                                    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
                                                                                                                      def Asudeh2022.english :
                                                                                                                      List (List (GlueTy Label))

                                                                                                                      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
                                                                                                                        theorem Asudeh2022.finnish_english :
                                                                                                                        finnish.flatten = english.flatten ∧ finnish.length ≠ english.length

                                                                                                                        Two words and three words instantiate the same premises.

                                                                                                                        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
                                                                                                                          theorem Asudeh2022.drinkProof_eval {D : Label → Type} (speaker : D Label.p) (drink : D Label.w → D Label.p → D Label.d) (water : D Label.w) :
                                                                                                                          drinkProof.eval (Env.cons speaker (Env.cons drink (Env.cons water Env.nil))) = drink water speaker

                                                                                                                          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.

                                                                                                                                theorem Asudeh2022.clause_from_quantifier {L : (Sequent.of everybodyLovesSomebody.flatten (GlueTy.atom Label.l)).Linking} (hL : L.Correct) :
                                                                                                                                ↑(↑((↑L).symm lovesGoal)).fst ≠ 1

                                                                                                                                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
                                                                                                                                  def Asudeh2022.scopeEnv {E : Type} (person : E → Prop) (love : E → E → Prop) :
                                                                                                                                  Env (fun (x : Label) => Montague.Ty.Domain E Unit x.ty) everybodyLovesSomebody.flatten

                                                                                                                                  The premises mean every person, love and some person, the two quantifiers being the generalized quantifiers of the determiners.

                                                                                                                                  Equations
                                                                                                                                  Instances For
                                                                                                                                    theorem Asudeh2022.surface_eval {E : Type} (person : E → Prop) (love : E → E → Prop) :
                                                                                                                                    surface.eval (scopeEnv person love) = Quantifier.Polyadic.surfaceScope Quantifier.GQ.every Quantifier.GQ.some person person fun (x y : E) => love y x

                                                                                                                                    The surface proof means the surface-scope reading, every person loving some person.

                                                                                                                                    theorem Asudeh2022.inverse_eval {E : Type} (person : E → Prop) (love : E → E → Prop) :
                                                                                                                                    inverse.eval (scopeEnv person love) = Quantifier.Polyadic.inverseScope Quantifier.GQ.every Quantifier.GQ.some person person fun (x y : E) => love y x

                                                                                                                                    The inverse proof means the inverse-scope reading, some person loved by every person.

                                                                                                                                    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

                                                                                                                                      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
                                                                                                                                        Instances For

                                                                                                                                          The premises of a spine are the objects and verbs at every depth and the subject.

                                                                                                                                          Equations
                                                                                                                                          Instances For

                                                                                                                                            Premises with a linear proof of the clause come from a complete and coherent spine.

                                                                                                                                            def Asudeh2022.build (n d i : ℕ) :
                                                                                                                                            i + d = n → Term (premisesFrom { objects := n, verbs := n + 1 } (d + 1) i ++ [GlueTy.atom (DutchAtom.np (BresnanEtAl1982.subjOfVerb i))]) (GlueTy.atom (DutchAtom.clause i))

                                                                                                                                            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
                                                                                                                                            Instances For
                                                                                                                                              theorem Asudeh2022.build_linear (n d i : ℕ) (h : i + d = n) :
                                                                                                                                              (build n d i h).Linear

                                                                                                                                              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 #

                                                                                                                                              def Asudeh2022.lexicon? (r : Datum) :
                                                                                                                                              Option (List (List (GlueTy Label)))

                                                                                                                                              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
                                                                                                                                                Instances For
                                                                                                                                                  theorem Asudeh2022.rows_lexicon (r : Datum) :
                                                                                                                                                  r ∈ Examples.all → ∃ lex ∈ lexicon? r, wordCount r = lex.length

                                                                                                                                                  Every row has a lexicon, and each of its words contributes meaning constructors.