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

Commit c9ae9e6

Browse files
committed
chore(linear_algebra/dimension): more same-universe versions of is_basis.mk_eq_dim (#4591)
While all the `lift` magic is good for general theory, it is not that convenient for the case when everything is in `Type`. * add `mk_eq_mk_of_basis'`: same-universe version of `mk_eq_mk_of_basis`; * generalize `is_basis.mk_eq_dim''` to any index type in the same universe as `V`, not necessarily `s : set V`; * reorder lemmas to optimize the total length of the proofs; * drop one `finite_dimensional` assumption in `findim_of_infinite_dimensional`.
1 parent 766d860 commit c9ae9e6

File tree

3 files changed

+29
-17
lines changed

3 files changed

+29
-17
lines changed

src/field_theory/tower.lean

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -74,12 +74,18 @@ by { rw [submodule.restrict_scalars'_top, eq_top_iff, ← hb, submodule.span_le]
7474

7575
/-- Tower law: if `A` is a `K`-algebra and `K` is a field extension of `F` then
7676
`dim_F(A) = dim_F(K) * dim_K(A)`. -/
77-
theorem findim_mul_findim [finite_dimensional F K] [finite_dimensional K A] :
77+
theorem findim_mul_findim [finite_dimensional F K] :
7878
findim F K * findim K A = findim F A :=
79-
let ⟨b, hb⟩ := exists_is_basis_finset F K in
80-
let ⟨c, hc⟩ := exists_is_basis_finset K A in
81-
by rw [findim_eq_card_basis hb, findim_eq_card_basis hc,
82-
findim_eq_card_basis (hb.smul hc), fintype.card_prod]
79+
begin
80+
by_cases hA : finite_dimensional K A,
81+
{ resetI,
82+
rcases exists_is_basis_finset F K with ⟨b, hb⟩,
83+
rcases exists_is_basis_finset K A with ⟨c, hc⟩,
84+
rw [findim_eq_card_basis hb, findim_eq_card_basis hc,
85+
findim_eq_card_basis (hb.smul hc), fintype.card_prod] },
86+
{ rw [findim_of_infinite_dimensional hA, mul_zero, findim_of_infinite_dimensional],
87+
exact mt (@right F K A _ _ _ _ _ _ _) hA }
88+
end
8389

8490
instance linear_map (F : Type u) (V : Type v) (W : Type w)
8591
[field F] [add_comm_group V] [vector_space F V] [add_comm_group W] [vector_space F W]

src/linear_algebra/dimension.lean

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,24 @@ begin
109109
apply (cardinal.mk_range_eq_of_injective hv.injective).symm, }, }
110110
end
111111

112-
theorem is_basis.mk_range_eq_dim {v : ι → V} (h : is_basis K v) :
113-
cardinal.mk (range v) = dim K V :=
112+
theorem mk_eq_mk_of_basis' {ι' : Type w} {v : ι → V} {v' : ι' → V} (hv : is_basis K v)
113+
(hv' : is_basis K v') :
114+
cardinal.mk ι = cardinal.mk ι' :=
115+
cardinal.lift_inj.1 $ mk_eq_mk_of_basis hv hv'
116+
117+
theorem is_basis.mk_eq_dim'' {ι : Type v} {v : ι → V} (h : is_basis K v) :
118+
cardinal.mk ι = dim K V :=
114119
begin
115-
have := show ∃ v', dim K V = _, from cardinal.min_eq _ _,
116-
rcases this with ⟨v', e⟩,
120+
obtain ⟨v', e : dim K V = _⟩ := cardinal.min_eq _ _,
117121
rw e,
118-
apply cardinal.lift_inj.1,
119-
rw cardinal.mk_range_eq_of_injective h.injective,
120-
convert @mk_eq_mk_of_basis _ _ _ _ _ _ _ _ _ h v'.property
122+
rw ← cardinal.mk_range_eq _ h.injective,
123+
exact mk_eq_mk_of_basis' h.range v'.2
121124
end
122125

126+
theorem is_basis.mk_range_eq_dim {v : ι → V} (h : is_basis K v) :
127+
cardinal.mk (range v) = dim K V :=
128+
h.range.mk_eq_dim''
129+
123130
theorem is_basis.mk_eq_dim {v : ι → V} (h : is_basis K v) :
124131
cardinal.lift.{w v} (cardinal.mk ι) = cardinal.lift.{v w} (dim K V) :=
125132
by rw [←h.mk_range_eq_dim, cardinal.mk_range_eq_of_injective h.injective]
@@ -128,10 +135,6 @@ theorem {m} is_basis.mk_eq_dim' {v : ι → V} (h : is_basis K v) :
128135
cardinal.lift.{w (max v m)} (cardinal.mk ι) = cardinal.lift.{v (max w m)} (dim K V) :=
129136
by simpa using h.mk_eq_dim
130137

131-
theorem is_basis.mk_eq_dim'' {b : set V} (hb : is_basis K (λ x : b, (x : V))) :
132-
cardinal.mk b = dim K V :=
133-
(dim K V).lift_id ▸ hb.mk_eq_dim ▸ (cardinal.mk b).lift_id.symm
134-
135138
theorem dim_le {n : ℕ}
136139
(H : ∀ s : finset V, linear_independent K (λ i : (↑s : set V), (i : V)) → s.card ≤ n) :
137140
dim K V ≤ n :=

src/linear_algebra/finite_dimensional.lean

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -195,14 +195,17 @@ begin
195195
exact (classical.some_spec (lt_omega.1 (dim_lt_omega K V))).symm
196196
end
197197

198+
lemma findim_of_infinite_dimensional {K V : Type*} [field K] [add_comm_group V] [vector_space K V]
199+
(h : ¬finite_dimensional K V) : findim K V = 0 :=
200+
dif_neg $ mt finite_dimensional_iff_dim_lt_omega.2 h
201+
198202
/-- If a vector space has a finite basis, then its dimension (seen as a cardinal) is equal to the
199203
cardinality of the basis. -/
200204
lemma dim_eq_card_basis {ι : Type w} [fintype ι] {b : ι → V} (h : is_basis K b) :
201205
dim K V = fintype.card ι :=
202206
by rw [←h.mk_range_eq_dim, cardinal.fintype_card,
203207
set.card_range_of_injective h.injective]
204208

205-
206209
/-- If a vector space has a finite basis, then its dimension is equal to the cardinality of the
207210
basis. -/
208211
lemma findim_eq_card_basis {ι : Type w} [fintype ι] {b : ι → V} (h : is_basis K b) :

0 commit comments

Comments
 (0)