Documentation

Mathlib.Algebra.Order.Antidiag.Finsupp

Antidiagonal of finitely supported functions as finsets #

This file defines the finset of finitely functions summing to a specific value on a finset. Such finsets should be thought of as the "antidiagonals" in the space of finitely supported functions.

Precisely, for a commutative monoid μ with antidiagonals (see Finset.HasAntidiagonal), Finset.finsuppAntidiag s n is the finset of all finitely supported functions f : ι →₀ μ with support contained in s and such that the sum of its values equals n : μ.

We define it using Finset.piAntidiag s n, the corresponding antidiagonal in ι → μ.

Main declarations #

def Finset.finsuppAntidiag {ι : Type u_1} {μ : Type u_2} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] (s : Finset ι) (n : μ) :
Finset (ι →₀ μ)

The finset of functions ι →₀ μ with support contained in s and sum equal to n.

Equations
Instances For
    @[simp]
    theorem Finset.mem_finsuppAntidiag {ι : Type u_1} {μ : Type u_2} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] {s : Finset ι} {n : μ} {f : ι →₀ μ} :
    f ∈ s.finsuppAntidiag n ↔ s.sum ⇑f = n ∧ f.support ⊆ s
    theorem Finset.mem_finsuppAntidiag' {ι : Type u_1} {μ : Type u_2} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] {s : Finset ι} {n : μ} {f : ι →₀ μ} :
    f ∈ s.finsuppAntidiag n ↔ (f.sum fun (x : ι) (x_1 : μ) => x_1) = n ∧ f.support ⊆ s
    @[simp]
    theorem Finset.finsuppAntidiag_empty_of_ne_zero {ι : Type u_1} {μ : Type u_2} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] {n : μ} (hn : n ≠ 0) :
    theorem Finset.mem_finsuppAntidiag_insert {ι : Type u_1} {μ : Type u_2} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] {a : ι} {s : Finset ι} (h : a ∉ s) (n : μ) {f : ι →₀ μ} :
    f ∈ (insert a s).finsuppAntidiag n ↔ ∃ m ∈ antidiagonal n, ∃ (g : ι →₀ μ), f = g.update a m.1 ∧ g ∈ s.finsuppAntidiag m.2
    theorem Finset.finsuppAntidiag_insert {ι : Type u_1} {μ : Type u_2} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] {a : ι} {s : Finset ι} (h : a ∉ s) (n : μ) :
    (insert a s).finsuppAntidiag n = (antidiagonal n).biUnion fun (p : μ × μ) => map { toFun := fun (f : ↥(s.finsuppAntidiag p.2)) => (↑f).update a p.1, inj' := ⋯ } (s.finsuppAntidiag p.2).attach
    theorem Finset.finsuppAntidiag_mono {ι : Type u_1} {μ : Type u_2} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] {s t : Finset ι} (h : s ⊆ t) (n : μ) :
    theorem Finset.mapRange_finsuppAntidiag_subset {ι : Type u_1} {μ : Type u_2} {μ' : Type u_3} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] [AddCommMonoid μ'] [HasAntidiagonal μ'] [DecidableEq μ'] {e : μ ≃+ μ'} {s : Finset ι} {n : μ} :
    theorem Finset.mapRange_finsuppAntidiag_eq {ι : Type u_1} {μ : Type u_2} {μ' : Type u_3} [DecidableEq ι] [AddCommMonoid μ] [HasAntidiagonal μ] [DecidableEq μ] [AddCommMonoid μ'] [HasAntidiagonal μ'] [DecidableEq μ'] {e : μ ≃+ μ'} {s : Finset ι} {n : μ} :