Lindström–Gessel–Viennot and total positivity

The Lindström–Gessel–Viennot lemma expresses a minor of a path-network matrix as a signed count of families of vertex-disjoint paths. When every crossing family cancels against another, only nonintersecting families survive, and the minor is a sum of nonnegative path weights.

Building on the path-cancellation proof in the LeanLGV library:

References

B. Lindström, “On the vector representations of induced matroids,” Bull. London Math. Soc. 5 (1973), 85–90. I. Gessel and G. Viennot, “Binomial determinants, paths, and hook length formulae,” Adv. Math. 58 (1985), 300–321. The kernel rows connect to the Brändén–Saud Leite page.

Definitions

  • Index set of a Toeplitz minor

    RealRooted.StrictToeplitzMinorIndexsource
    structure StrictToeplitzMinorIndex (n : ℕ) where
      sourceRow : Fin n → ℕ
      sinkColumn : Fin n → ℕ
      sourceRow_strictMono : StrictMono sourceRow
      sinkColumn_strictMono : StrictMono sinkColumn
  • Lower-bidiagonal chip

    RealRooted.LGV.ChipNetwork.Chipsource
    structure Chip (R : Type*) (N : ℕ) where
      diagonal : Fin (N + 1) → R
      subdiagonal : Fin N → R
  • Matrix of a word of chips

    RealRooted.LGV.ChipNetwork.wordMatrixsource
    def wordMatrix {R : Type*} [Semiring R] (word : List (Chip R N)) :
        Matrix (Fin (N + 1)) (Fin (N + 1)) R :=
      (word.map Chip.matrix).prod
  • Repeated-chip kernel sequence

    RealRooted.LGV.RepeatedChip.kernelSequencesource
    def kernelSequence (G K : List (Chip ℝ N)) (q : ℕ) : ℝ :=
      (wordMatrix G * (wordMatrix K * wordMatrix G) ^ q) (Fin.last N) 0

Theorems

  • Path networks give totally nonnegative matrices

    LGV.FinitePathNetwork.matrix_isTotallyNonneg_of_orderedCertificatessource
    theorem matrix_isTotallyNonneg_of_orderedCertificates
        {R : Type u} {ι : Type v}
        [CommRing R] [LinearOrder R] [IsStrictOrderedRing R] [PartialOrder ι]
        (N : LGV.FinitePathNetwork R ι)
        (certificate : ∀ {n : ℕ} {rows cols : Fin n → ι},
          StrictMono rows → StrictMono cols →
            OrderedCancellationCertificate (N.reindex rows cols))
        (hweight : ∀ {s t : ι} (p : N.Path s t), 0 ≤ N.weight p) :
        N.matrix.IsTotallyNonneg
  • Path networks give Pólya frequency sequences

    RealRooted.isPolyaFreqSeq_of_minorOrderedCertificatessource
    theorem isPolyaFreqSeq_of_minorOrderedCertificates
        {a : ℕ → ℝ}
        (network : ∀ {n : ℕ}, StrictToeplitzMinorIndex n →
          LGV.FinitePathNetwork ℝ (Fin n))
        (hmatrix : ∀ {n : ℕ} (I : StrictToeplitzMinorIndex n),
          (network I).matrix = I.toeplitzSubmatrix a)
        (certificate : ∀ {n : ℕ} (I : StrictToeplitzMinorIndex n),
          LGV.FinitePathNetwork.OrderedCancellationCertificate (network I))
        (hweight : ∀ {n : ℕ} (I : StrictToeplitzMinorIndex n)
          {s t : Fin n} (p : (network I).Path s t),
          0 ≤ (network I).weight p) :
        IsPolyaFreqSeq a
  • Repeated-chip kernel sequences are PF

    RealRooted.LGV.RepeatedChip.kernelSequence_isPolyaFreqSeqsource
    theorem kernelSequence_isPolyaFreqSeq
        (G K : List (Chip ℝ N))
        (hG : ∀ c ∈ G, c.IsNonnegative)
        (hK : ∀ c ∈ K, c.IsNonnegative)
        (hKstrict : ∀ i j, i.val ≤ j.val → wordMatrix K i j = 0) :
        IsPolyaFreqSeq (kernelSequence G K)
  • Repeated-chip kernel rows are PF polynomials

    RealRooted.LGV.RepeatedChip.kernelRow_isPFPolynomialsource
    theorem kernelRow_isPFPolynomial
        (G K : List (Chip ℝ N))
        (hG : ∀ c ∈ G, c.IsNonnegative)
        (hK : ∀ c ∈ K, c.IsNonnegative)
        (hKstrict : ∀ i j, i.val ≤ j.val → wordMatrix K i j = 0) :
        IsPFPolynomial
          (BrandenLeite.kernelRow (wordMatrix G) (wordMatrix K) (Fin.last N))
  • Paths of length n and powers of the edge matrix

    Quiver.Path.sum_weight_exactLength_eq_edgeSumMatrix_powsource
    theorem sum_weight_exactLength_eq_edgeSumMatrix_pow
        [Semiring R] [Fintype V] [DecidableEq V] [∀ a b : V, Fintype (a ⟶ b)]
        (w : ∀ {a b : V}, (a ⟶ b) → R) (a b : V) (n : ℕ) :
        ∑ p : ExactLength a b n, p.1.weight w = (edgeSumMatrix w ^ n) a b

Lean source RealRooted/Challenges/LGV.lean at revision 5827550b.