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

Commit 6eeb941

Browse files
committed
refactor(set_theory/cardinal/basic): migrate from fintype to finite (#15175)
* add `finite_iff_exists_equiv_fin`; * add `cardinal.mk_eq_nat_iff` and `cardinal.lt_aleph_0_iff_finite`; * rename the old `cardinal.lt_aleph_0_iff_finite` to `cardinal.lt_aleph_0_iff_finite_set`; * rename `cardinal.lt_aleph_0_of_fintype` to `cardinal.lt_aleph_0_of_finite`, assume `[finite]` instead of `[fintype]`; * add an alias `set.finite.lt_aleph_0`; * rename `W_type.cardinal_mk_le_max_aleph_0_of_fintype` to `W_type.cardinal_mk_le_max_aleph_0_of_finite`, fix assumption.
1 parent a3c647b commit 6eeb941

File tree

11 files changed

+34
-27
lines changed

11 files changed

+34
-27
lines changed

archive/100-theorems-list/82_cubing_a_cube.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -509,7 +509,7 @@ omit h
509509
/-- The infinite sequence of cubes contradicts the finiteness of the family. -/
510510
theorem not_correct : ¬correct cs :=
511511
begin
512-
intro h, apply (lt_aleph_0_of_fintype ι).not_le,
512+
intro h, apply (lt_aleph_0_of_finite ι).not_le,
513513
rw [aleph_0, lift_id], fapply mk_le_of_injective, exact λ n, (sequence_of_cubes h n).1,
514514
intros n m hnm, apply (strict_anti_sequence_of_cubes h).injective,
515515
dsimp only [decreasing_sequence], rw hnm

src/data/W/cardinal.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ end
5151

5252
/-- If, for any `a : α`, `β a` is finite, then the cardinality of `W_type β`
5353
is at most the maximum of the cardinality of `α` and `ℵ₀` -/
54-
lemma cardinal_mk_le_max_aleph_0_of_fintype a, fintype (β a)] : #(W_type β) ≤ max (#α) ℵ₀ :=
54+
lemma cardinal_mk_le_max_aleph_0_of_finite [∀ a, finite (β a)] : #(W_type β) ≤ max (#α) ℵ₀ :=
5555
(is_empty_or_nonempty α).elim
5656
(begin
5757
introI h,
@@ -63,7 +63,7 @@ calc cardinal.sum (λ a, m ^ #(β a))
6363
≤ #α * ⨆ a, m ^ #(β a) : cardinal.sum_le_supr _
6464
... ≤ m * ⨆ a, m ^ #(β a) : mul_le_mul' (le_max_left _ _) le_rfl
6565
... = m : mul_eq_left.{u} (le_max_right _ _)
66-
(csupr_le' $ λ i, pow_le (le_max_right _ _) (lt_aleph_0_of_fintype _)) $
66+
(csupr_le' $ λ i, pow_le (le_max_right _ _) (lt_aleph_0_of_finite _)) $
6767
pos_iff_ne_zero.1 $ order.succ_le_iff.1
6868
begin
6969
rw succ_zero,

src/data/finite/basic.lean

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,8 +71,11 @@ in this way to allow there to be `finite` instances for propositions.
7171
class inductive finite (α : Sort*) : Prop
7272
| intro {n : ℕ} : α ≃ fin n → finite
7373

74+
lemma finite_iff_exists_equiv_fin {α : Sort*} : finite α ↔ ∃ n, nonempty (α ≃ fin n) :=
75+
⟨λ ⟨e⟩, ⟨_, ⟨e⟩⟩, λ ⟨n, ⟨e⟩⟩, ⟨e⟩⟩
76+
7477
lemma finite.exists_equiv_fin (α : Sort*) [h : finite α] : ∃ (n : ℕ), nonempty (α ≃ fin n) :=
75-
by { casesI h with n f, exact ⟨n, ⟨f⟩⟩ }
78+
finite_iff_exists_equiv_fin.mp h
7679

7780
lemma finite.of_equiv (α : Sort*) {β : Sort*} [h : finite α] (f : α ≃ β) : finite β :=
7881
by { casesI h with n e, exact finite.intro (f.symm.trans e) }

src/data/mv_polynomial/cardinal.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ calc #(mv_polynomial_fun σ R) = #R + #σ + #(ulift bool) :
8585
... ≤ max (max (max (max (#R) (#σ)) ℵ₀) (#(ulift bool))) ℵ₀ :
8686
max_le_max (max_le_max (add_le_max _ _) le_rfl) le_rfl
8787
... ≤ _ : by simp only [max_comm ℵ₀, max_assoc, max_left_comm ℵ₀, max_self,
88-
max_eq_left (lt_aleph_0_of_fintype (ulift.{u} bool)).le]
88+
max_eq_left (lt_aleph_0_of_finite (ulift.{u} bool)).le]
8989

9090
namespace mv_polynomial
9191

@@ -95,7 +95,7 @@ lemma cardinal_mk_le_max {σ R : Type u} [comm_semiring R] :
9595
#(mv_polynomial σ R) ≤ max (max (#R) (#σ)) ℵ₀ :=
9696
calc #(mv_polynomial σ R) ≤ #(W_type (arity σ R)) :
9797
cardinal.mk_le_of_surjective to_mv_polynomial_surjective
98-
... ≤ max (#(mv_polynomial_fun σ R)) ℵ₀ : W_type.cardinal_mk_le_max_aleph_0_of_fintype
98+
... ≤ max (#(mv_polynomial_fun σ R)) ℵ₀ : W_type.cardinal_mk_le_max_aleph_0_of_finite
9999
... ≤ _ : max_le_max cardinal_mv_polynomial_fun_le le_rfl
100100
... ≤ _ : by simp only [max_assoc, max_self]
101101

src/data/polynomial/cardinal.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,6 @@ lemma cardinal_mk_le_max {R : Type u} [comm_semiring R] : #R[X] ≤ max (#R) ℵ
2222
calc #R[X] = #(mv_polynomial punit.{u + 1} R) :
2323
cardinal.eq.2 ⟨(mv_polynomial.punit_alg_equiv.{u u} R).to_equiv.symm⟩
2424
... ≤ _ : mv_polynomial.cardinal_mk_le_max
25-
... ≤ _ : by rw [max_assoc, max_eq_right (lt_aleph_0_of_fintype punit).le]
25+
... ≤ _ : by rw [max_assoc, max_eq_right (lt_aleph_0_of_finite punit).le]
2626

2727
end polynomial

src/field_theory/finiteness.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ its dimension (as a cardinal) is strictly less than the first infinite cardinal
2727
lemma iff_dim_lt_aleph_0 : is_noetherian K V ↔ module.rank K V < ℵ₀ :=
2828
begin
2929
let b := basis.of_vector_space K V,
30-
rw [← b.mk_eq_dim'', lt_aleph_0_iff_finite],
30+
rw [← b.mk_eq_dim'', lt_aleph_0_iff_set_finite],
3131
split,
3232
{ introI,
3333
exact finite_of_linear_independent (basis.of_vector_space_index.linear_independent K V) },
@@ -104,7 +104,7 @@ begin
104104
exact ⟨⟨finset_basis_index K V, by { convert (finset_basis K V).span_eq, simp }⟩⟩ },
105105
{ rintros ⟨s, hs⟩,
106106
rw [is_noetherian.iff_dim_lt_aleph_0, ← dim_top, ← hs],
107-
exact lt_of_le_of_lt (dim_span_le _) (lt_aleph_0_iff_finite.2 (set.finite_mem_finset s)) }
107+
exact lt_of_le_of_lt (dim_span_le _) s.finite_to_set.lt_aleph_0 }
108108
end
109109

110110
end is_noetherian

src/field_theory/is_alg_closed/classification.lean

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ calc #L ≤ #(Σ p : R[X], { x : L // x ∈ (p.map (algebra_map R L)).roots }) :
6666
rw [lt_aleph_0_iff_finite],
6767
classical,
6868
simp only [← @multiset.mem_to_finset _ _ _ (p.map (algebra_map R L)).roots],
69-
exact set.finite_mem_finset _,
69+
apply_instance
7070
end)
7171
... = #R[X] * ℵ₀ : sum_const' _ _
7272
... ≤ max (max (#R[X]) ℵ₀) ℵ₀ : mul_le_max _ _
@@ -192,9 +192,9 @@ begin
192192
from ring_hom.injective _) with t ht,
193193
have : #s = #t,
194194
{ rw [← cardinal_eq_cardinal_transcendence_basis_of_aleph_0_lt _ hs
195-
(lt_aleph_0_of_fintype (zmod p)).le hK,
195+
(lt_aleph_0_of_finite (zmod p)).le hK,
196196
← cardinal_eq_cardinal_transcendence_basis_of_aleph_0_lt _ ht
197-
(lt_aleph_0_of_fintype (zmod p)).le, hKL],
197+
(lt_aleph_0_of_finite (zmod p)).le, hKL],
198198
rwa ← hKL },
199199
cases cardinal.eq.1 this with e,
200200
exact ⟨equiv_of_transcendence_basis _ _ e hs ht⟩

src/linear_algebra/dimension.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -617,7 +617,7 @@ begin
617617
{ exact not_le_of_lt this ⟨set.embedding_of_subset _ _ hs⟩ },
618618
refine lt_of_le_of_lt (le_trans cardinal.mk_Union_le_sum_mk
619619
(cardinal.sum_le_sum _ (λ _, ℵ₀) _)) _,
620-
{ exact λ j, (cardinal.lt_aleph_0_of_fintype _).le },
620+
{ exact λ j, (cardinal.lt_aleph_0_of_finite _).le },
621621
{ simpa } },
622622
end
623623

src/linear_algebra/finsupp_vector_space.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ lemma cardinal_lt_aleph_0_of_finite_dimensional [fintype K] [finite_dimensional
198198
begin
199199
letI : is_noetherian K V := is_noetherian.iff_fg.2 infer_instance,
200200
rw cardinal_mk_eq_cardinal_mk_field_pow_dim K V,
201-
exact cardinal.power_lt_aleph_0 (cardinal.lt_aleph_0_of_fintype K)
201+
exact cardinal.power_lt_aleph_0 (cardinal.lt_aleph_0_of_finite K)
202202
(is_noetherian.dim_lt_aleph_0 K V),
203203
end
204204

src/set_theory/cardinal/basic.lean

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -924,18 +924,22 @@ theorem aleph_0_le {c : cardinal} : ℵ₀ ≤ c ↔ ∀ n : ℕ, ↑n ≤ c :=
924924
exact (nat.lt_succ_self _).not_le (nat_cast_le.1 (h (n+1)))
925925
end
926926

927+
theorem mk_eq_nat_iff {α : Type u} {n : ℕ} : #α = n ↔ nonempty (α ≃ fin n) :=
928+
by rw [← lift_mk_fin, ← lift_uzero (#α), lift_mk_eq']
929+
930+
theorem lt_aleph_0_iff_finite {α : Type u} : #α < ℵ₀ ↔ finite α :=
931+
by simp only [lt_aleph_0, mk_eq_nat_iff, finite_iff_exists_equiv_fin]
932+
927933
theorem lt_aleph_0_iff_fintype {α : Type u} : #α < ℵ₀ ↔ nonempty (fintype α) :=
928-
lt_aleph_0.trans ⟨λ ⟨n, e⟩, begin
929-
rw [← lift_mk_fin n] at e,
930-
cases quotient.exact e with f,
931-
exact ⟨fintype.of_equiv _ f.symm⟩
932-
end, λ ⟨_⟩, by exactI ⟨_, mk_fintype _⟩⟩
934+
lt_aleph_0_iff_finite.trans (finite_iff_nonempty_fintype _)
935+
936+
theorem lt_aleph_0_of_finite (α : Type u) [finite α] : #α < ℵ₀ :=
937+
lt_aleph_0_iff_finite.2 ‹_›
933938

934-
theorem lt_aleph_0_of_fintype (α : Type u) [fintype α] : #α < ℵ₀ :=
935-
lt_aleph_0_iff_fintype.2 ⟨infer_instance⟩
939+
theorem lt_aleph_0_iff_set_finite {α} {S : set α} : #S < ℵ₀ ↔ S.finite :=
940+
lt_aleph_0_iff_finite.trans finite_coe_iff
936941

937-
theorem lt_aleph_0_iff_finite {α} {S : set α} : #S < ℵ₀ ↔ S.finite :=
938-
lt_aleph_0_iff_fintype.trans finite_def.symm
942+
alias lt_aleph_0_iff_set_finite ↔ _ _root_.set.finite.lt_aleph_0
939943

940944
instance can_lift_cardinal_nat : can_lift cardinal ℕ :=
941945
⟨ coe, λ x, x < ℵ₀, λ x hx, let ⟨n, hn⟩ := lt_aleph_0.mp hx in ⟨n, hn.symm⟩⟩
@@ -1015,7 +1019,7 @@ calc #α = 1 ↔ #α ≤ 1 ∧ 1 ≤ #α : le_antisymm_iff
10151019
le_one_iff_subsingleton.and (one_le_iff_ne_zero.trans mk_ne_zero_iff)
10161020

10171021
theorem infinite_iff {α : Type u} : infinite α ↔ ℵ₀ ≤ #α :=
1018-
by rw [←not_lt, lt_aleph_0_iff_fintype, not_nonempty_iff, is_empty_fintype]
1022+
by rw [← not_lt, lt_aleph_0_iff_finite, not_finite_iff_infinite]
10191023

10201024
@[simp] lemma aleph_0_le_mk (α : Type u) [infinite α] : ℵ₀ ≤ #α := infinite_iff.1 ‹_›
10211025

@@ -1316,14 +1320,14 @@ lemma mk_bUnion_le {ι α : Type u} (A : ι → set α) (s : set ι) :
13161320
by { rw bUnion_eq_Union, apply mk_Union_le }
13171321

13181322
lemma finset_card_lt_aleph_0 (s : finset α) : #(↑s : set α) < ℵ₀ :=
1319-
by { rw lt_aleph_0_iff_fintype, exact ⟨finset.subtype.fintype s⟩ }
1323+
lt_aleph_0_of_finite _
13201324

13211325
theorem mk_eq_nat_iff_finset {α} {s : set α} {n : ℕ} :
13221326
#s = n ↔ ∃ t : finset α, (t : set α) = s ∧ t.card = n :=
13231327
begin
13241328
split,
13251329
{ intro h,
1326-
lift s to finset α using lt_aleph_0_iff_finite.1 (h.symm ▸ nat_lt_aleph_0 n),
1330+
lift s to finset α using lt_aleph_0_iff_set_finite.1 (h.symm ▸ nat_lt_aleph_0 n),
13271331
simpa using h },
13281332
{ rintro ⟨t, rfl, rfl⟩,
13291333
exact mk_coe_finset }

0 commit comments

Comments
 (0)