Documentation

Mathlib.Data.Finset.Dedup

Deduplicating Multisets to make Finsets #

This file concerns Multiset.dedup and List.dedup as a way to create Finsets.

Tags #

finite sets, finset

@[simp]
theorem Finset.dedup_eq_self {α : Type u_1} [DecidableEq α] (s : Finset α) :

dedup on list and multiset #

def Multiset.toFinset {α : Type u_1} [DecidableEq α] (s : Multiset α) :

toFinset s removes duplicates from the multiset s to produce a finset.

Equations
@[simp]
theorem Multiset.toFinset_val {α : Type u_1} [DecidableEq α] (s : Multiset α) :
theorem Multiset.toFinset_eq {α : Type u_1} [DecidableEq α] {s : Multiset α} (n : s.Nodup) :
{ val := s, nodup := n } = s.toFinset
theorem Multiset.Nodup.toFinset_inj {α : Type u_1} [DecidableEq α] {l l' : Multiset α} (hl : l.Nodup) (hl' : l'.Nodup) (h : l.toFinset = l'.toFinset) :
l = l'
@[simp]
theorem Multiset.mem_toFinset {α : Type u_1} [DecidableEq α] {a : α} {s : Multiset α} :
@[simp]
theorem Multiset.toFinset_subset {α : Type u_1} [DecidableEq α] {s t : Multiset α} :
@[simp]
theorem Multiset.toFinset_ssubset {α : Type u_1} [DecidableEq α] {s t : Multiset α} :
@[simp]
instance Multiset.isWellFounded_ssubset {β : Type u_2} :
IsWellFounded (Multiset β) fun (x1 x2 : Multiset β) => x1 x2
@[simp]
theorem Finset.val_toFinset {α : Type u_1} [DecidableEq α] (s : Finset α) :
theorem Finset.val_le_iff_val_subset {α : Type u_1} {a : Finset α} {b : Multiset α} :
a.val b a.val b
def List.toFinset {α : Type u_1} [DecidableEq α] (l : List α) :

toFinset l removes duplicates from the list l to produce a finset.

Equations
@[simp]
theorem List.toFinset_val {α : Type u_1} [DecidableEq α] (l : List α) :
@[simp]
theorem List.toFinset_coe {α : Type u_1} [DecidableEq α] (l : List α) :
theorem List.toFinset_eq {α : Type u_1} [DecidableEq α] {l : List α} (n : l.Nodup) :
{ val := l, nodup := n } = l.toFinset
@[simp]
theorem List.mem_toFinset {α : Type u_1} [DecidableEq α] {l : List α} {a : α} :
@[simp]
theorem List.coe_toFinset {α : Type u_1} [DecidableEq α] (l : List α) :
l.toFinset = {a : α | a l}
theorem List.toFinset.ext_iff {α : Type u_1} [DecidableEq α] {a b : List α} :
a.toFinset = b.toFinset ∀ (x : α), x a x b
theorem List.toFinset.ext {α : Type u_1} [DecidableEq α] {l l' : List α} :
(∀ (x : α), x l x l')l.toFinset = l'.toFinset
theorem List.toFinset_eq_of_perm {α : Type u_1} [DecidableEq α] (l l' : List α) (h : l.Perm l') :
theorem List.perm_of_nodup_nodup_toFinset_eq {α : Type u_1} [DecidableEq α] {l l' : List α} (hl : l.Nodup) (hl' : l'.Nodup) (h : l.toFinset = l'.toFinset) :
l.Perm l'
@[simp]
theorem List.toFinset_reverse {α : Type u_1} [DecidableEq α] {l : List α} :
noncomputable def Finset.toList {α : Type u_1} (s : Finset α) :
List α

Produce a list of the elements in the finite set using choice.

Equations
theorem Finset.nodup_toList {α : Type u_1} (s : Finset α) :
@[simp]
theorem Finset.mem_toList {α : Type u_1} {a : α} {s : Finset α} :
a s.toList a s
@[simp]
theorem Finset.coe_toList {α : Type u_1} (s : Finset α) :
s.toList = s.val
@[simp]
theorem Finset.toList_toFinset {α : Type u_1} [DecidableEq α] (s : Finset α) :
theorem List.toFinset_toList {α : Type u_1} [DecidableEq α] {s : List α} (hs : s.Nodup) :
theorem Finset.exists_list_nodup_eq {α : Type u_1} [DecidableEq α] (s : Finset α) :
∃ (l : List α), l.Nodup l.toFinset = s