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

Commit 9c46cad

Browse files
committed
feat(field_theory/algebraic_closure): algebraically closed fields have no nontrivial algebraic extensions (#5537)
1 parent 6e0d0fa commit 9c46cad

File tree

2 files changed

+27
-3
lines changed

2 files changed

+27
-3
lines changed

src/field_theory/algebraic_closure.lean

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,25 @@ lemma degree_eq_one_of_irreducible [is_alg_closed k] {p : polynomial k} (h_nz :
6767
p.degree = 1 :=
6868
degree_eq_one_of_irreducible_of_splits h_nz hp (polynomial.splits' _)
6969

70+
lemma algebra_map_surjective_of_is_integral {k K : Type*} [field k] [domain K]
71+
[hk : is_alg_closed k] [algebra k K] (hf : algebra.is_integral k K) :
72+
function.surjective (algebra_map k K) :=
73+
begin
74+
refine λ x, ⟨-((minimal_polynomial (hf x)).coeff 0), _⟩,
75+
have hq : (minimal_polynomial (hf x)).leading_coeff = 1 := minimal_polynomial.monic (hf x),
76+
have h : (minimal_polynomial (hf x)).degree = 1 := degree_eq_one_of_irreducible k
77+
(minimal_polynomial.ne_zero (hf x)) (minimal_polynomial.irreducible (hf x)),
78+
have : (aeval x (minimal_polynomial (hf x))) = 0 := minimal_polynomial.aeval (hf x),
79+
rw [eq_X_add_C_of_degree_eq_one h, hq, C_1, one_mul,
80+
aeval_add, aeval_X, aeval_C, add_eq_zero_iff_eq_neg] at this,
81+
exact (ring_hom.map_neg (algebra_map k K) ((minimal_polynomial (hf x)).coeff 0)).symm ▸ this.symm,
82+
end
83+
84+
lemma algebra_map_surjective_of_is_algebraic {k K : Type*} [field k] [domain K]
85+
[hk : is_alg_closed k] [algebra k K] (hf : algebra.is_algebraic k K) :
86+
function.surjective (algebra_map k K) :=
87+
algebra_map_surjective_of_is_integral ((is_algebraic_iff_is_integral' k).mp hf)
88+
7089
end is_alg_closed
7190

7291
instance complex.is_alg_closed : is_alg_closed ℂ :=

src/ring_theory/algebraic.lean

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ open_locale classical
2323
open polynomial
2424

2525
section
26-
variables (R : Type u) {A : Type v} [comm_ring R] [comm_ring A] [algebra R A]
26+
variables (R : Type u) {A : Type v} [comm_ring R] [ring A] [algebra R A]
2727

2828
/-- An element of an R-algebra is algebraic over R if it is the root of a nonzero polynomial. -/
2929
def is_algebraic (x : A) : Prop :=
@@ -65,7 +65,7 @@ end
6565
end
6666

6767
section zero_ne_one
68-
variables (R : Type u) {A : Type v} [comm_ring R] [nontrivial R] [comm_ring A] [algebra R A]
68+
variables (R : Type u) {A : Type v} [comm_ring R] [nontrivial R] [ring A] [algebra R A]
6969

7070
/-- An integral element of an algebra is algebraic.-/
7171
lemma is_integral.is_algebraic {x : A} (h : is_integral R x) : is_algebraic R x :=
@@ -74,7 +74,7 @@ by { rcases h with ⟨p, hp, hpx⟩, exact ⟨p, hp.ne_zero, hpx⟩ }
7474
end zero_ne_one
7575

7676
section field
77-
variables (K : Type u) {A : Type v} [field K] [comm_ring A] [algebra K A]
77+
variables (K : Type u) {A : Type v} [field K] [ring A] [algebra K A]
7878

7979
/-- An element of an algebra over a field is algebraic if and only if it is integral.-/
8080
lemma is_algebraic_iff_is_integral {x : A} :
@@ -86,6 +86,11 @@ begin
8686
rw [← aeval_def, alg_hom.map_mul, hpx, zero_mul],
8787
end
8888

89+
lemma is_algebraic_iff_is_integral' :
90+
algebra.is_algebraic K A ↔ algebra.is_integral K A :=
91+
⟨λ h x, (is_algebraic_iff_is_integral K).mp (h x),
92+
λ h x, (is_algebraic_iff_is_integral K).mpr (h x)⟩
93+
8994
end field
9095

9196
namespace algebra

0 commit comments

Comments
 (0)