@@ -6,6 +6,7 @@ Authors: Mario Carneiro
6
6
import Mathlib.Algebra.Ring.Hom.Defs -- FIXME: This import is bogus
7
7
import Mathlib.Data.Finset.Image
8
8
import Mathlib.Data.Fin.OrderHom
9
+ import Mathlib.Data.List.FinRange
9
10
10
11
#align_import data.fintype.basic from "leanprover-community/mathlib" @"d78597269638367c3863d40d45108f52207e03cf"
11
12
@@ -836,6 +837,18 @@ theorem Fin.univ_def (n : ℕ) : (univ : Finset (Fin n)) = ⟨List.finRange n, L
836
837
@[simp] theorem List.toFinset_finRange (n : ℕ) : (List.finRange n).toFinset = Finset.univ := by
837
838
ext; simp
838
839
840
+ @[simp] theorem Fin.univ_val_map {n : ℕ} (f : Fin n → α) :
841
+ Finset.univ.val.map f = List.ofFn f := by
842
+ simp [List.ofFn_eq_map, univ_def]
843
+
844
+ theorem Fin.univ_image_def {n : ℕ} [DecidableEq α] (f : Fin n → α) :
845
+ Finset.univ.image f = (List.ofFn f).toFinset := by
846
+ simp [Finset.image]
847
+
848
+ theorem Fin.univ_map_def {n : ℕ} (f : Fin n ↪ α) :
849
+ Finset.univ.map f = ⟨List.ofFn f, List.nodup_ofFn.mpr f.injective⟩ := by
850
+ simp [Finset.map]
851
+
839
852
@[simp]
840
853
theorem Fin.image_succAbove_univ {n : ℕ} (i : Fin (n + 1 )) : univ.image i.succAbove = {i}ᶜ := by
841
854
ext m
@@ -858,25 +871,33 @@ theorem Fin.image_castSucc (n : ℕ) :
858
871
/-- Embed `Fin n` into `Fin (n + 1)` by prepending zero to the `univ` -/
859
872
theorem Fin.univ_succ (n : ℕ) :
860
873
(univ : Finset (Fin (n + 1 ))) =
861
- cons 0 (univ.map ⟨Fin.succ, Fin.succ_injective _⟩) (by simp [map_eq_image]) :=
874
+ Finset. cons 0 (univ.map ⟨Fin.succ, Fin.succ_injective _⟩) (by simp [map_eq_image]) :=
862
875
by simp [map_eq_image]
863
876
#align fin.univ_succ Fin.univ_succ
864
877
865
878
/-- Embed `Fin n` into `Fin (n + 1)` by appending a new `Fin.last n` to the `univ` -/
866
879
theorem Fin.univ_castSuccEmb (n : ℕ) :
867
880
(univ : Finset (Fin (n + 1 ))) =
868
- cons (Fin.last n) (univ.map Fin.castSuccEmb.toEmbedding) (by simp [map_eq_image]) :=
881
+ Finset. cons (Fin.last n) (univ.map Fin.castSuccEmb.toEmbedding) (by simp [map_eq_image]) :=
869
882
by simp [map_eq_image]
870
883
#align fin.univ_cast_succ Fin.univ_castSuccEmb
871
884
872
885
/-- Embed `Fin n` into `Fin (n + 1)` by inserting
873
886
around a specified pivot `p : Fin (n + 1)` into the `univ` -/
874
887
theorem Fin.univ_succAbove (n : ℕ) (p : Fin (n + 1 )) :
875
888
(univ : Finset (Fin (n + 1 ))) =
876
- cons p (univ.map <| (Fin.succAboveEmb p).toEmbedding) (by simp) :=
889
+ Finset. cons p (univ.map <| (Fin.succAboveEmb p).toEmbedding) (by simp) :=
877
890
by simp [map_eq_image]
878
891
#align fin.univ_succ_above Fin.univ_succAbove
879
892
893
+ @[simp] theorem Fin.univ_image_get [DecidableEq α] (l : List α) :
894
+ Finset.univ.image l.get = l.toFinset := by
895
+ simp [univ_image_def]
896
+
897
+ @[simp] theorem Fin.univ_image_get' [DecidableEq β] (l : List α) (f : α → β) :
898
+ Finset.univ.image (f <| l.get ·) = (l.map f).toFinset := by
899
+ simp [univ_image_def]
900
+
880
901
@[instance]
881
902
def Unique.fintype {α : Type *} [Unique α] : Fintype α :=
882
903
Fintype.ofSubsingleton default
0 commit comments