Skip to content

Commit eeb6a33

Browse files
kim-emParcly-Taxelurkud
committed
chore: split FieldTheory/Tower (#15689)
The results in this file were unrelated (and had disjoint import requirements!) so I've separated them. The doc-string was badly out of date before I came along, so I've replaced it. Co-authored-by: Parcly Taxel <reddeloostw@gmail.com> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>
1 parent f8afc33 commit eeb6a33

File tree

10 files changed

+63
-47
lines changed

10 files changed

+63
-47
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import Mathlib.Algebra.Algebra.RestrictScalars
2121
import Mathlib.Algebra.Algebra.Spectrum
2222
import Mathlib.Algebra.Algebra.Subalgebra.Basic
2323
import Mathlib.Algebra.Algebra.Subalgebra.Directed
24+
import Mathlib.Algebra.Algebra.Subalgebra.IsSimpleOrder
2425
import Mathlib.Algebra.Algebra.Subalgebra.MulOpposite
2526
import Mathlib.Algebra.Algebra.Subalgebra.Operations
2627
import Mathlib.Algebra.Algebra.Subalgebra.Order
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/-
2+
Copyright (c) 2020 Kenny Lau. All rights reserved.
3+
Released under Apache 2.0 license as described in the file LICENSE.
4+
Authors: Kenny Lau
5+
-/
6+
import Mathlib.LinearAlgebra.FiniteDimensional.Defs
7+
import Mathlib.LinearAlgebra.Dimension.FreeAndStrongRankCondition
8+
import Mathlib.LinearAlgebra.FreeModule.StrongRankCondition
9+
10+
/-!
11+
If `A` is a domain, and a finite-dimensional algebra over a field `F`, with prime dimension,
12+
then there are no non-trivial `F`-subalgebras.
13+
-/
14+
15+
open FiniteDimensional Submodule
16+
17+
theorem Subalgebra.isSimpleOrder_of_finrank_prime (F A) [Field F] [Ring A] [IsDomain A]
18+
[Algebra F A] (hp : (finrank F A).Prime) : IsSimpleOrder (Subalgebra F A) :=
19+
{ toNontrivial :=
20+
⟨⟨⊥, ⊤, fun he =>
21+
Nat.not_prime_one ((Subalgebra.bot_eq_top_iff_finrank_eq_one.1 he).subst hp)⟩⟩
22+
eq_bot_or_eq_top := fun K => by
23+
haveI : FiniteDimensional _ _ := .of_finrank_pos hp.pos
24+
letI := divisionRingOfFiniteDimensional F K
25+
refine (hp.eq_one_or_self_of_dvd _ ⟨_, (finrank_mul_finrank F K A).symm⟩).imp ?_ fun h => ?_
26+
· exact fun h' => Subalgebra.eq_bot_of_finrank_one h'
27+
· exact
28+
Algebra.toSubmodule_eq_top.1 (eq_top_of_finrank_eq <| K.finrank_toSubmodule.trans h) }
29+
-- TODO: `IntermediateField` version
30+
31+
@[deprecated (since := "2024-08-11")]
32+
alias FiniteDimensional.Subalgebra.is_simple_order_of_finrank_prime :=
33+
Subalgebra.isSimpleOrder_of_finrank_prime

Mathlib/Algebra/CharP/IntermediateField.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Jz Pan
55
-/
66
import Mathlib.Algebra.CharP.ExpChar
77
import Mathlib.FieldTheory.IntermediateField.Basic
8+
import Mathlib.Algebra.EuclideanDomain.Field
89

910
/-!
1011

Mathlib/FieldTheory/Adjoin.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Mathlib.FieldTheory.IntermediateField.Algebraic
88
import Mathlib.FieldTheory.Separable
99
import Mathlib.FieldTheory.SplittingField.IsSplittingField
1010
import Mathlib.RingTheory.TensorProduct.Basic
11+
import Mathlib.LinearAlgebra.Dimension.FreeAndStrongRankCondition
1112

1213
/-!
1314
# Adjoining Elements to Fields

Mathlib/FieldTheory/Fixed.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import Mathlib.Algebra.Ring.Action.Field
88
import Mathlib.Algebra.Ring.Action.Invariant
99
import Mathlib.FieldTheory.Normal
1010
import Mathlib.FieldTheory.Separable
11-
import Mathlib.FieldTheory.Tower
11+
import Mathlib.LinearAlgebra.FreeModule.Finite.Matrix
1212

1313
/-!
1414
# Fixed field under a group action.

Mathlib/FieldTheory/IntermediateField/Algebraic.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import Mathlib.FieldTheory.IntermediateField.Basic
77
import Mathlib.RingTheory.Algebraic
88
import Mathlib.FieldTheory.Tower
99
import Mathlib.FieldTheory.Minpoly.Basic
10+
import Mathlib.LinearAlgebra.FreeModule.StrongRankCondition
1011

1112
/-!
1213
# Results on finite dimensionality and algebraicity of intermediate fields.

Mathlib/FieldTheory/NormalClosure.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ Authors: Thomas Browning
66

77
import Mathlib.FieldTheory.Normal
88
import Mathlib.Order.Closure
9+
import Mathlib.LinearAlgebra.FreeModule.Finite.Matrix
910
/-!
1011
# Normal closures
1112

Mathlib/FieldTheory/Tower.lean

Lines changed: 20 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -3,27 +3,19 @@ Copyright (c) 2020 Kenny Lau. All rights reserved.
33
Released under Apache 2.0 license as described in the file LICENSE.
44
Authors: Kenny Lau
55
-/
6-
import Mathlib.Data.Nat.Prime.Defs
76
import Mathlib.RingTheory.AlgebraTower
8-
import Mathlib.LinearAlgebra.FiniteDimensional.Defs
9-
import Mathlib.LinearAlgebra.FreeModule.Finite.Matrix
10-
import Mathlib.RingTheory.LocalRing.Basic
7+
import Mathlib.RingTheory.Noetherian
118

129
/-!
13-
# Tower of field extensions
10+
# Finiteness of `IsScalarTower`
1411
15-
In this file we prove the tower law for arbitrary extensions and finite extensions.
16-
Suppose `L` is a field extension of `K` and `K` is a field extension of `F`.
17-
Then `[L:F] = [L:K] [K:F]` where `[E₁:E₂]` means the `E₂`-dimension of `E₁`.
12+
We prove that given `IsScalarTower F K A`, if `A` is finite as a module over `F` then
13+
`A` is finite over `K`, and
14+
(as long as `A` is Noetherian over `F` and we have `NoZeroSMulDivisors K A`) `K` is finite over `F`.
1815
19-
In fact we generalize it to rings and modules, where `L` is not necessarily a field,
20-
but just a free module over `K`.
16+
In particular these conditions hold when `A`, `F`, and `K` are fields.
2117
22-
## Implementation notes
23-
24-
We prove two versions, since there are two notions of dimensions: `Module.rank` which gives
25-
the dimension of an arbitrary vector space as a cardinal, and `FiniteDimensional.finrank` which
26-
gives the dimension of a finite-dimensional vector space as a natural number.
18+
The formulas for the dimensions are given elsewhere by `FiniteDimensional.finrank_mul_finrank`.
2719
2820
## Tags
2921
@@ -38,49 +30,31 @@ open Cardinal Submodule
3830

3931
variable (F : Type u) (K : Type v) (A : Type w)
4032

41-
section Field
42-
43-
variable [DivisionRing F] [DivisionRing K] [AddCommGroup A]
44-
variable [Module F K] [Module K A] [Module F A] [IsScalarTower F K A]
45-
46-
namespace FiniteDimensional
47-
48-
open IsNoetherian
33+
namespace Module.Finite
4934

35+
variable [Ring F] [Ring K] [Module F K]
36+
[AddCommGroup A] [Module K A] [NoZeroSMulDivisors K A]
37+
[Module F A] [IsNoetherian F A] [IsScalarTower F K A] in
5038
/-- In a tower of field extensions `A / K / F`, if `A / F` is finite, so is `K / F`.
5139
5240
(In fact, it suffices that `A` is a nontrivial ring.)
5341
5442
Note this cannot be an instance as Lean cannot infer `A`.
5543
-/
56-
theorem left [Nontrivial A] [FiniteDimensional F A] : FiniteDimensional F K :=
44+
theorem left [Nontrivial A] : Module.Finite F K :=
5745
let ⟨x, hx⟩ := exists_ne (0 : A)
58-
FiniteDimensional.of_injective
46+
Module.Finite.of_injective
5947
(LinearMap.ringLmapEquivSelf K ℕ A |>.symm x |>.restrictScalars F) (smul_left_injective K hx)
6048

61-
theorem right [hf : FiniteDimensional F A] : FiniteDimensional K A :=
49+
variable [Semiring F] [Semiring K] [Module F K]
50+
[AddCommMonoid A] [Module K A] [Module F A] [IsScalarTower F K A] in
51+
theorem right [hf : Module.Finite F A] : Module.Finite K A :=
6252
let ⟨⟨b, hb⟩⟩ := hf
6353
⟨⟨b, Submodule.restrictScalars_injective F _ _ <| by
6454
rw [Submodule.restrictScalars_top, eq_top_iff, ← hb, Submodule.span_le]
6555
exact Submodule.subset_span⟩⟩
6656

67-
theorem Subalgebra.isSimpleOrder_of_finrank_prime (F A) [Field F] [Ring A] [IsDomain A]
68-
[Algebra F A] (hp : (finrank F A).Prime) : IsSimpleOrder (Subalgebra F A) :=
69-
{ toNontrivial :=
70-
⟨⟨⊥, ⊤, fun he =>
71-
Nat.not_prime_one ((Subalgebra.bot_eq_top_iff_finrank_eq_one.1 he).subst hp)⟩⟩
72-
eq_bot_or_eq_top := fun K => by
73-
haveI : FiniteDimensional _ _ := .of_finrank_pos hp.pos
74-
letI := divisionRingOfFiniteDimensional F K
75-
refine (hp.eq_one_or_self_of_dvd _ ⟨_, (finrank_mul_finrank F K A).symm⟩).imp ?_ fun h => ?_
76-
· exact fun h' => Subalgebra.eq_bot_of_finrank_one h'
77-
· exact
78-
Algebra.toSubmodule_eq_top.1 (eq_top_of_finrank_eq <| K.finrank_toSubmodule.trans h) }
79-
-- TODO: `IntermediateField` version
80-
81-
@[deprecated (since := "2024-01-12")]
82-
alias finrank_linear_map' := FiniteDimensional.finrank_linearMap_self
83-
84-
end FiniteDimensional
85-
86-
end Field
57+
end Module.Finite
58+
59+
alias FiniteDimensional.left := Module.Finite.left
60+
alias FiniteDimensional.right := Module.Finite.right

Mathlib/LinearAlgebra/Eigenspace/Triangularizable.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ Authors: Alexander Bentkamp
55
-/
66
import Mathlib.LinearAlgebra.Eigenspace.Basic
77
import Mathlib.FieldTheory.IsAlgClosed.Spectrum
8+
import Mathlib.LinearAlgebra.FreeModule.Finite.Matrix
89

910
/-!
1011
# Triangularizable linear endomorphisms

Mathlib/LinearAlgebra/FreeModule/Finite/Matrix.lean

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,9 @@ theorem FiniteDimensional.rank_linearMap_self :
6565
theorem FiniteDimensional.finrank_linearMap_self : finrank S (M →ₗ[R] S) = finrank R M := by
6666
rw [finrank_linearMap, finrank_self, mul_one]
6767

68+
@[deprecated (since := "2024-01-12")]
69+
alias FiniteDimensional.finrank_linear_map' := FiniteDimensional.finrank_linearMap_self
70+
6871
end Ring
6972

7073
section AlgHom

0 commit comments

Comments
 (0)