The powerset of a multiset #
powerset #
A helper function for the powerset of a multiset. Given a list l, returns a list
of sublists of l as multisets.
Instances For
theorem
Multiset.powersetAux_eq_map_coe
{α : Type u_1}
{l : List α}
:
powersetAux l = List.map ofList l.sublists
@[simp]
theorem
Multiset.mem_powersetAux
{α : Type u_1}
{l : List α}
{s : Multiset α}
:
s ā powersetAux l ā s ⤠āl
Helper function for the powerset of a multiset. Given a list l, returns a list
of sublists of l (using sublists'), as multisets.
Instances For
theorem
Multiset.powersetAux_perm_powersetAux'
{α : Type u_1}
{l : List α}
:
(powersetAux l).Perm (powersetAux' l)
@[simp]
@[simp]
theorem
Multiset.powersetAux'_cons
{α : Type u_1}
(a : α)
(l : List α)
:
powersetAux' (a :: l) = powersetAux' l ++ List.map (cons a) (powersetAux' l)
theorem
Multiset.powerset_aux'_perm
{α : Type u_1}
{lā lā : List α}
(p : lā.Perm lā)
:
(powersetAux' lā).Perm (powersetAux' lā)
theorem
Multiset.powersetAux_perm
{α : Type u_1}
{lā lā : List α}
(p : lā.Perm lā)
:
(powersetAux lā).Perm (powersetAux lā)
The power set of a multiset.
Instances For
@[simp]
@[simp]
@[simp]
@[simp]
theorem
Multiset.powerset_eq_singleton_zero_iff
{α : Type u_1}
(s : Multiset α)
:
s.powerset = {0} ā s = 0
theorem
Multiset.revzip_powersetAux
{α : Type u_1}
{l : List α}
ā¦x : Multiset α Ć Multiset αā¦
(h : x ā (powersetAux l).revzip)
:
x.1 + x.2 = āl
theorem
Multiset.revzip_powersetAux'
{α : Type u_1}
{l : List α}
ā¦x : Multiset α Ć Multiset αā¦
(h : x ā (powersetAux' l).revzip)
:
x.1 + x.2 = āl
theorem
Multiset.revzip_powersetAux_perm_aux'
{α : Type u_1}
{l : List α}
:
(powersetAux l).revzip.Perm (powersetAux' l).revzip
theorem
Multiset.revzip_powersetAux_perm
{α : Type u_1}
{lā lā : List α}
(p : lā.Perm lā)
:
(powersetAux lā).revzip.Perm (powersetAux lā).revzip
@[simp]
powersetCard #
Helper function for powersetCard. Given a list l, powersetCardAux n l is the list
of sublists of length n, as multisets.
Instances For
theorem
Multiset.powersetCardAux_eq_map_coe
{α : Type u_1}
{n : ā}
{l : List α}
:
powersetCardAux n l = List.map ofList (List.sublistsLen n l)
@[simp]
theorem
Multiset.mem_powersetCardAux
{α : Type u_1}
{n : ā}
{l : List α}
{s : Multiset α}
:
s ā powersetCardAux n l ā s ⤠āl ā§ s.card = n
@[simp]
@[simp]
@[simp]
theorem
Multiset.powersetCardAux_cons
{α : Type u_1}
(n : ā)
(a : α)
(l : List α)
:
powersetCardAux (n + 1) (a :: l) = powersetCardAux (n + 1) l ++ List.map (cons a) (powersetCardAux n l)
theorem
Multiset.powersetCardAux_perm
{α : Type u_1}
{n : ā}
{lā lā : List α}
(p : lā.Perm lā)
:
(powersetCardAux n lā).Perm (powersetCardAux n lā)
powersetCard n s is the multiset of all submultisets of s of length n.
Instances For
theorem
Multiset.powersetCard_coe'
{α : Type u_1}
(n : ā)
(l : List α)
:
powersetCard n āl = ā(powersetCardAux n l)
theorem
Multiset.powersetCard_coe
{α : Type u_1}
(n : ā)
(l : List α)
:
powersetCard n āl = ā(List.map ofList (List.sublistsLen n l))
@[simp]
@[simp]
theorem
Multiset.powersetCard_cons
{α : Type u_1}
(n : ā)
(a : α)
(s : Multiset α)
:
powersetCard (n + 1) (a ::ā s) = powersetCard (n + 1) s + map (cons a) (powersetCard n s)
theorem
Multiset.powersetCard_one
{α : Type u_1}
(s : Multiset α)
:
powersetCard 1 s = map singleton s
@[simp]
theorem
Multiset.mem_powersetCard
{α : Type u_1}
{n : ā}
{s t : Multiset α}
:
s ā powersetCard n t ā s ⤠t ā§ s.card = n
@[simp]
theorem
Multiset.card_powersetCard
{α : Type u_1}
(n : ā)
(s : Multiset α)
:
(powersetCard n s).card = s.card.choose n
@[simp]
theorem
Multiset.powersetCard_eq_empty
{α : Type u_2}
(n : ā)
{s : Multiset α}
(h : s.card < n)
:
powersetCard n s = 0
theorem
Multiset.powersetCard_card_add
{α : Type u_1}
(s : Multiset α)
{i : ā}
(hi : 0 < i)
:
powersetCard (s.card + i) s = 0
theorem
Multiset.powersetCard_map
{α : Type u_1}
{β : Type u_2}
(f : α ā β)
(n : ā)
(s : Multiset α)
:
powersetCard n (map f s) = map (map f) (powersetCard n s)
theorem
Multiset.pairwise_disjoint_powersetCard
{α : Type u_1}
(s : Multiset α)
:
_root_.Pairwise fun (i j : ā) => Disjoint (powersetCard i s) (powersetCard j s)
theorem
Multiset.bind_powerset_len
{α : Type u_2}
(S : Multiset α)
:
((range (S.card + 1)).bind fun (k : ā) => powersetCard k S) = S.powerset
@[simp]
Alias of the reverse direction of Multiset.nodup_powerset.
Alias of the forward direction of Multiset.nodup_powerset.
theorem
Multiset.Nodup.powersetCard
{α : Type u_1}
{n : ā}
{s : Multiset α}
(h : s.Nodup)
:
(powersetCard n s).Nodup