Symmetric powers of a finset #
This file defines the symmetric powers of a finset as Finset (Sym α n) and Finset (Sym2 α).
Main declarations #
Finset.sym: The symmetric power of a finset.s.sym nis all the multisets of cardinalitynwhose elements are ins.Finset.sym2: The symmetric square of a finset.s.sym2is all the pairs whose elements are ins.- A
Fintype (Sym2 α)instance that does not requireDecidableEq α.
TODO #
Finset.sym forms a Galois connection between Finset α and Finset (Sym α n). Similar for
Finset.sym2.
@[simp]
@[simp]
@[simp]
@[implicit_reducible]
@[simp]
@[simp]
@[simp]
@[simp]
Alias of the reverse direction of Finset.sym2_nonempty.
@[simp]
Finset stars and bars for the case n = 2.
@[simp]
theorem
Finset.diag_mem_sym2_mem_iff
{α : Type u_1}
{s : Finset α}
{a : α}
:
(∀ b ∈ Sym2.diag a, b ∈ s) ↔ a ∈ s
@[simp]
@[simp]
@[simp]
theorem
Finset.mem_sym_iff
{α : Type u_1}
{s : Finset α}
[DecidableEq α]
{n : ℕ}
{m : Sym α n}
:
m ∈ s.sym n ↔ ∀ a ∈ m, a ∈ s
theorem
Finset.replicate_mem_sym
{α : Type u_1}
{s : Finset α}
{a : α}
[DecidableEq α]
(ha : a ∈ s)
(n : ℕ)
:
Sym.replicate n a ∈ s.sym n
@[simp]
theorem
Finset.sym_singleton
{α : Type u_1}
[DecidableEq α]
(a : α)
(n : ℕ)
:
{a}.sym n = {Sym.replicate n a}
theorem
Finset.eq_empty_of_sym_eq_empty
{α : Type u_1}
{s : Finset α}
[DecidableEq α]
{n : ℕ}
(h : s.sym n = ∅)
:
s = ∅
@[simp]
theorem
Finset.sym_eq_empty
{α : Type u_1}
{s : Finset α}
[DecidableEq α]
{n : ℕ}
:
s.sym n = ∅ ↔ n ≠ 0 ∧ s = ∅
@[simp]
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Finset.sym_filterNe_mem
{α : Type u_1}
{s : Finset α}
[DecidableEq α]
{n : ℕ}
{m : Sym α n}
(a : α)
(h : m ∈ s.sym n)
:
(Sym.filterNe a m).snd ∈ (s.erase a).sym (n - ↑(Sym.filterNe a m).fst)
def
Finset.symInsertEquiv
{α : Type u_1}
{s : Finset α}
{a : α}
[DecidableEq α]
{n : ℕ}
(h : a ∉ s)
:
If a does not belong to the finset s, then the nth symmetric power of {a} ∪ s is
in 1-1 correspondence with the disjoint union of the n - ith symmetric powers of s,
for 0 ≤ i ≤ n.
Instances For
@[simp]
theorem
Finset.symInsertEquiv_apply_snd_coe
{α : Type u_1}
{s : Finset α}
{a : α}
[DecidableEq α]
{n : ℕ}
(h : a ∉ s)
(m : ↥((insert a s).sym n))
:
↑((symInsertEquiv h) m).snd = (Sym.filterNe a ↑m).snd
@[simp]
theorem
Finset.symInsertEquiv_apply_fst
{α : Type u_1}
{s : Finset α}
{a : α}
[DecidableEq α]
{n : ℕ}
(h : a ∉ s)
(m : ↥((insert a s).sym n))
:
((symInsertEquiv h) m).fst = (Sym.filterNe a ↑m).fst
@[simp]
theorem
Finset.symInsertEquiv_symm_apply_coe
{α : Type u_1}
{s : Finset α}
{a : α}
[DecidableEq α]
{n : ℕ}
(h : a ∉ s)
(m : (i : Fin (n + 1)) × ↥(s.sym (n - ↑i)))
:
↑((symInsertEquiv h).symm m) = Sym.fill a m.fst ↑m.snd
theorem
Finset.val_prod_eq_prod_count_pow
{α : Type u_1}
[DecidableEq α]
[CommMonoid α]
{n : ℕ}
{k : Sym α n}
{s : Finset α}
(hk : k ∈ s.sym n)
:
(↑k).prod = ∏ d ∈ s, d ^ Multiset.count d ↑k
theorem
Finset.val_sum_eq_sum_count_nsmul
{α : Type u_1}
[DecidableEq α]
[AddCommMonoid α]
{n : ℕ}
{k : Sym α n}
{s : Finset α}
(hk : k ∈ s.sym n)
:
(↑k).sum = ∑ d ∈ s, Multiset.count d ↑k • d