Skip to content

Commit 220ed18

Browse files
committed
chore(Fintype): move nonempty_fintype (#20053)
This implication doesn't need the axiom of choice or `Fintype.card`. Currently, it depends on `Classical.choice` because `Fin.fintype` depends on it (for no good reason).
1 parent 49ac6bf commit 220ed18

File tree

6 files changed

+13
-11
lines changed

6 files changed

+13
-11
lines changed

Mathlib/Algebra/Order/Field/Pi.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Authors: Yaël Dillies
55
-/
66
import Mathlib.Algebra.Order.Monoid.Defs
77
import Mathlib.Data.Finset.Lattice.Fold
8-
import Mathlib.Data.Fintype.Card
8+
import Mathlib.Data.Fintype.Basic
99

1010
/-!
1111
# Lemmas about (finite domain) functions into fields.

Mathlib/Data/Finite/Defs.lean

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,10 @@ theorem Function.Bijective.finite_iff {f : α → β} (h : Bijective f) : Finite
118118
theorem Finite.ofBijective [Finite α] {f : α → β} (h : Bijective f) : Finite β :=
119119
h.finite_iff.mp ‹_›
120120

121+
variable (α) in
122+
theorem Finite.nonempty_decidableEq [Finite α] : Nonempty (DecidableEq α) :=
123+
let ⟨_n, ⟨e⟩⟩ := Finite.exists_equiv_fin α; ⟨e.decidableEq⟩
124+
121125
instance [Finite α] : Finite (PLift α) :=
122126
Finite.of_equiv α Equiv.plift.symm
123127

Mathlib/Data/Finset/PiInduction.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Authors: Yury Kudryashov
55
-/
66
import Mathlib.Data.Finset.Max
77
import Mathlib.Data.Finset.Sigma
8-
import Mathlib.Data.Fintype.Card
8+
import Mathlib.Data.Fintype.Basic
99

1010
/-!
1111
# Induction principles for `∀ i, Finset (α i)`

Mathlib/Data/Fintype/Basic.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -777,6 +777,11 @@ instance Fin.fintype (n : ℕ) : Fintype (Fin n) :=
777777
theorem Fin.univ_def (n : ℕ) : (univ : Finset (Fin n)) = ⟨List.finRange n, List.nodup_finRange n⟩ :=
778778
rfl
779779

780+
/-- See also `nonempty_encodable`, `nonempty_denumerable`. -/
781+
theorem nonempty_fintype (α : Type*) [Finite α] : Nonempty (Fintype α) := by
782+
rcases Finite.exists_equiv_fin α with ⟨n, ⟨e⟩⟩
783+
exact ⟨.ofEquiv _ e.symm⟩
784+
780785
@[simp] theorem List.toFinset_finRange (n : ℕ) : (List.finRange n).toFinset = Finset.univ := by
781786
ext; simp
782787

Mathlib/Data/Fintype/Card.lean

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -378,14 +378,7 @@ instance (priority := 900) Finite.of_fintype (α : Type*) [Fintype α] : Finite
378378
Fintype.finite ‹_›
379379

380380
theorem finite_iff_nonempty_fintype (α : Type*) : Finite α ↔ Nonempty (Fintype α) :=
381-
fun h =>
382-
let ⟨_k, ⟨e⟩⟩ := @Finite.exists_equiv_fin α h
383-
⟨Fintype.ofEquiv _ e.symm⟩,
384-
fun ⟨_⟩ => inferInstance⟩
385-
386-
/-- See also `nonempty_encodable`, `nonempty_denumerable`. -/
387-
theorem nonempty_fintype (α : Type*) [Finite α] : Nonempty (Fintype α) :=
388-
(finite_iff_nonempty_fintype α).mp ‹_›
381+
fun _ => nonempty_fintype α, fun ⟨_⟩ => inferInstance⟩
389382

390383
/-- Noncomputably get a `Fintype` instance from a `Finite` instance. This is not an
391384
instance because we want `Fintype` instances to be useful for computations. -/

Mathlib/Data/Fintype/Lattice.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ Copyright (c) 2017 Mario Carneiro. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Mario Carneiro
55
-/
6-
import Mathlib.Data.Fintype.Card
76
import Mathlib.Data.Finset.Max
7+
import Mathlib.Data.Fintype.Basic
88

99
/-!
1010
# Lemmas relating fintypes and order/lattice structure.

0 commit comments

Comments
 (0)