Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit d8d6e18

Browse files
committed
feat(data/finset/basic): equivalence of finsets from equivalence of types (#4560)
Broken off from #4259. Given an equivalence `α` to `β`, produce an equivalence between `finset α` and `finset β`, and simp lemmas about it.
1 parent df5adc5 commit d8d6e18

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

src/data/finset/basic.lean

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,6 +1412,7 @@ ext $ λ _, by simp only [mem_image, multiset.mem_to_finset, exists_prop, multis
14121412
theorem image_val_of_inj_on (H : ∀x∈s, ∀y∈s, f x = f y → x = y) : (image f s).1 = s.1.map f :=
14131413
multiset.erase_dup_eq_self.2 (nodup_map_on H s.2)
14141414

1415+
@[simp]
14151416
theorem image_id [decidable_eq α] : s.image id = s :=
14161417
ext $ λ _, by simp only [mem_image, exists_prop, id, exists_eq_right]
14171418

@@ -2163,6 +2164,24 @@ subrelation.wf H $ inv_image.wf _ $ nat.lt_wf
21632164

21642165
end finset
21652166

2167+
namespace equiv
2168+
2169+
/-- Given an equivalence `α` to `β`, produce an equivalence between `finset α` and `finset β`. -/
2170+
protected def finset_congr (e : α ≃ β) : finset α ≃ finset β :=
2171+
{ to_fun := λ s, s.map e.to_embedding,
2172+
inv_fun := λ s, s.map e.symm.to_embedding,
2173+
left_inv := λ s, by simp [finset.map_map],
2174+
right_inv := λ s, by simp [finset.map_map] }
2175+
2176+
@[simp] lemma finset_congr_apply (e : α ≃ β) (s : finset α) :
2177+
e.finset_congr s = s.map e.to_embedding :=
2178+
rfl
2179+
@[simp] lemma finset_congr_symm_apply (e : α ≃ β) (s : finset β) :
2180+
e.finset_congr.symm s = s.map e.symm.to_embedding :=
2181+
rfl
2182+
2183+
end equiv
2184+
21662185
namespace list
21672186
variable [decidable_eq α]
21682187

0 commit comments

Comments
 (0)