Documentation

Mathlib.Data.Finsupp.Antidiagonal

The Finsupp counterpart of Multiset.antidiagonal. #

The antidiagonal of s : α →₀ ℕ consists of all pairs (t₁, t₂) : (α →₀ ℕ) × (α →₀ ℕ) such that t₁ + t₂ = s.

The Finsupp counterpart of Multiset.antidiagonal: the antidiagonal of s : α →₀ ℕ consists of all pairs (t₁, t₂) : (α →₀ ℕ) × (α →₀ ℕ) such that t₁ + t₂ = s. The finitely supported function antidiagonal s is equal to the multiplicities of these pairs.

Equations
Instances For
    def Finsupp.antidiagonal {α : Type u} [DecidableEq α] (f : α →₀ ) :

    The antidiagonal of s : α →₀ ℕ is the finset of all pairs (t₁, t₂) : (α →₀ ℕ) × (α →₀ ℕ) such that t₁ + t₂ = s.

    Equations
    Instances For
      @[simp]
      theorem Finsupp.mem_antidiagonal {α : Type u} [DecidableEq α] {f : α →₀ } {p : (α →₀ ) × (α →₀ )} :
      p Finsupp.antidiagonal f p.fst + p.snd = f
      theorem Finsupp.antidiagonal_filter_fst_eq {α : Type u} [DecidableEq α] (f : α →₀ ) (g : α →₀ ) [D : (p : (α →₀ ) × (α →₀ )) → Decidable (p.fst = g)] :
      Finset.filter (fun p => p.fst = g) (Finsupp.antidiagonal f) = if g f then {(g, f - g)} else
      theorem Finsupp.antidiagonal_filter_snd_eq {α : Type u} [DecidableEq α] (f : α →₀ ) (g : α →₀ ) [D : (p : (α →₀ ) × (α →₀ )) → Decidable (p.snd = g)] :
      Finset.filter (fun p => p.snd = g) (Finsupp.antidiagonal f) = if g f then {(f - g, g)} else
      @[simp]
      theorem Finsupp.sum_antidiagonal_swap {α : Type u} [DecidableEq α] {M : Type u_1} [AddCommMonoid M] (n : α →₀ ) (f : (α →₀ ) → (α →₀ ) → M) :
      (Finset.sum (Finsupp.antidiagonal n) fun p => f p.fst p.snd) = Finset.sum (Finsupp.antidiagonal n) fun p => f p.snd p.fst
      theorem Finsupp.prod_antidiagonal_swap {α : Type u} [DecidableEq α] {M : Type u_1} [CommMonoid M] (n : α →₀ ) (f : (α →₀ ) → (α →₀ ) → M) :
      (Finset.prod (Finsupp.antidiagonal n) fun p => f p.fst p.snd) = Finset.prod (Finsupp.antidiagonal n) fun p => f p.snd p.fst
      @[simp]