mathlib documentation

field_theory.intermediate_field

Intermediate fields #

Let L / K be a field extension, given as an instance algebra K L. This file defines the type of fields in between K and L, intermediate_field K L. An intermediate_field K L is a subfield of L which contains (the image of) K, i.e. it is a subfield L and a subalgebra K L.

Main definitions #

Implementation notes #

Intermediate fields are defined with a structure extending subfield and subalgebra. A subalgebra is closed under all operations except ⁻¹,

Tags #

intermediate field, field extension

structure intermediate_field (K : Type u_1) (L : Type u_2) [field K] [field L] [algebra K L] :
Type u_2

S : intermediate_field K L is a subset of L such that there is a field tower L / S / K.

def intermediate_field.to_subfield {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :

Reinterpret an intermediate_field as a subfield.

Equations
@[protected, instance]
def intermediate_field.set_like {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] :
Equations
@[protected, instance]
def intermediate_field.subfield_class {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] :
Equations
@[simp]
theorem intermediate_field.mem_carrier {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {s : intermediate_field K L} {x : L} :
@[ext]
theorem intermediate_field.ext {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {S T : intermediate_field K L} (h : ∀ (x : L), x ∈ S ↔ x ∈ T) :
S = T

Two intermediate fields are equal if they have the same elements.

@[simp]
theorem intermediate_field.coe_to_subalgebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
@[simp]
theorem intermediate_field.coe_to_subfield {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
@[simp]
theorem intermediate_field.mem_mk {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (s : set L) (hK : ∀ (x : K), ⇑(algebra_map K L) x ∈ s) (ho : ∀ {a b : L}, a ∈ s → b ∈ s → a * b ∈ s) (hm : 1 ∈ s) (hz : ∀ {a b : L}, a ∈ s → b ∈ s → a + b ∈ s) (ha : 0 ∈ s) (hn : ∀ (x : L), x ∈ {carrier := s, mul_mem' := ho, one_mem' := hm, add_mem' := hz, zero_mem' := ha, algebra_map_mem' := hK}.carrier → -x ∈ {carrier := s, mul_mem' := ho, one_mem' := hm, add_mem' := hz, zero_mem' := ha, algebra_map_mem' := hK}.carrier) (hi : ∀ (x : L), x ∈ {carrier := s, mul_mem' := ho, one_mem' := hm, add_mem' := hz, zero_mem' := ha, algebra_map_mem' := hK}.carrier → x⁻¹ ∈ {carrier := s, mul_mem' := ho, one_mem' := hm, add_mem' := hz, zero_mem' := ha, algebra_map_mem' := hK}.carrier) (x : L) :
x ∈ {to_subalgebra := {carrier := s, mul_mem' := ho, one_mem' := hm, add_mem' := hz, zero_mem' := ha, algebra_map_mem' := hK}, neg_mem' := hn, inv_mem' := hi} ↔ x ∈ s
@[simp]
theorem intermediate_field.mem_to_subalgebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (s : intermediate_field K L) (x : L) :
@[simp]
theorem intermediate_field.mem_to_subfield {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (s : intermediate_field K L) (x : L) :
@[protected]
def intermediate_field.copy {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (s : set L) (hs : s = ↑S) :

Copy of an intermediate field with a new carrier equal to the old one. Useful to fix definitional equalities.

Equations
@[simp]
theorem intermediate_field.coe_copy {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (s : set L) (hs : s = ↑S) :
↑(S.copy s hs) = s
theorem intermediate_field.copy_eq {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (s : set L) (hs : s = ↑S) :
S.copy s hs = S

Lemmas inherited from more general structures #

The declarations in this section derive from the fact that an intermediate_field is also a subalgebra or subfield. Their use should be replaceable with the corresponding lemma from a subobject class.

theorem intermediate_field.algebra_map_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (x : K) :

An intermediate field contains the image of the smaller field.

theorem intermediate_field.smul_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {y : L} :
y ∈ S → ∀ {x : K}, x • y ∈ S

An intermediate field is closed under scalar multiplication.

@[protected]
theorem intermediate_field.one_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
1 ∈ S

An intermediate field contains the ring's 1.

@[protected]
theorem intermediate_field.zero_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
0 ∈ S

An intermediate field contains the ring's 0.

@[protected]
theorem intermediate_field.mul_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x y : L} :
x ∈ S → y ∈ S → x * y ∈ S

An intermediate field is closed under multiplication.

@[protected]
theorem intermediate_field.add_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x y : L} :
x ∈ S → y ∈ S → x + y ∈ S

An intermediate field is closed under addition.

@[protected]
theorem intermediate_field.sub_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x y : L} :
x ∈ S → y ∈ S → x - y ∈ S

An intermediate field is closed under subtraction

@[protected]
theorem intermediate_field.neg_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x : L} :
x ∈ S → -x ∈ S

An intermediate field is closed under negation.

@[protected]
theorem intermediate_field.inv_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x : L} :
x ∈ S → x⁻¹ ∈ S

An intermediate field is closed under inverses.

@[protected]
theorem intermediate_field.div_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x y : L} :
x ∈ S → y ∈ S → x / y ∈ S

An intermediate field is closed under division.

@[protected]
theorem intermediate_field.list_prod_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {l : list L} :
(∀ (x : L), x ∈ l → x ∈ S) → l.prod ∈ S

Product of a list of elements in an intermediate_field is in the intermediate_field.

@[protected]
theorem intermediate_field.list_sum_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {l : list L} :
(∀ (x : L), x ∈ l → x ∈ S) → l.sum ∈ S

Sum of a list of elements in an intermediate field is in the intermediate_field.

@[protected]
theorem intermediate_field.multiset_prod_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (m : multiset L) :
(∀ (a : L), a ∈ m → a ∈ S) → m.prod ∈ S

Product of a multiset of elements in an intermediate field is in the intermediate_field.

@[protected]
theorem intermediate_field.multiset_sum_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (m : multiset L) :
(∀ (a : L), a ∈ m → a ∈ S) → m.sum ∈ S

Sum of a multiset of elements in a intermediate_field is in the intermediate_field.

@[protected]
theorem intermediate_field.prod_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {ι : Type u_3} {t : finset ι} {f : ι → L} (h : ∀ (c : ι), c ∈ t → f c ∈ S) :
∏ (i : ι) in t, f i ∈ S

Product of elements of an intermediate field indexed by a finset is in the intermediate_field.

@[protected]
theorem intermediate_field.sum_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {ι : Type u_3} {t : finset ι} {f : ι → L} (h : ∀ (c : ι), c ∈ t → f c ∈ S) :
∑ (i : ι) in t, f i ∈ S

Sum of elements in a intermediate_field indexed by a finset is in the intermediate_field.

@[protected]
theorem intermediate_field.pow_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x : L} (hx : x ∈ S) (n : ℤ) :
x ^ n ∈ S
@[protected]
theorem intermediate_field.zsmul_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x : L} (hx : x ∈ S) (n : ℤ) :
n • x ∈ S
@[protected]
theorem intermediate_field.coe_int_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (n : ℤ) :
↑n ∈ S
@[protected]
theorem intermediate_field.coe_add {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (x y : ↥S) :
↑(x + y) = ↑x + ↑y
@[protected]
theorem intermediate_field.coe_neg {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (x : ↥S) :
@[protected]
theorem intermediate_field.coe_mul {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (x y : ↥S) :
↑x * y = (↑x) * ↑y
@[protected]
theorem intermediate_field.coe_inv {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (x : ↥S) :
@[protected]
theorem intermediate_field.coe_zero {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
↑0 = 0
@[protected]
theorem intermediate_field.coe_one {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
↑1 = 1
@[protected]
theorem intermediate_field.coe_pow {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (x : ↥S) (n : ℕ) :
↑(x ^ n) = ↑x ^ n
def subalgebra.to_intermediate_field {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : subalgebra K L) (inv_mem : ∀ (x : L), x ∈ S → x⁻¹ ∈ S) :

Turn a subalgebra closed under inverses into an intermediate field

Equations
@[simp]
theorem to_subalgebra_to_intermediate_field {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : subalgebra K L) (inv_mem : ∀ (x : L), x ∈ S → x⁻¹ ∈ S) :
@[simp]
theorem to_intermediate_field_to_subalgebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (inv_mem : ∀ (x : L), x ∈ S.to_subalgebra → x⁻¹ ∈ S) :
def subfield.to_intermediate_field {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : subfield L) (algebra_map_mem : ∀ (x : K), ⇑(algebra_map K L) x ∈ S) :

Turn a subfield of L containing the image of K into an intermediate field

Equations
@[protected, instance]
def intermediate_field.to_field {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :

An intermediate field inherits a field structure

Equations
@[simp, norm_cast]
theorem intermediate_field.coe_sum {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {ι : Type u_3} [fintype ι] (f : ι → ↥S) :
↑∑ (i : ι), f i = ∑ (i : ι), ↑(f i)
@[simp, norm_cast]
theorem intermediate_field.coe_prod {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {ι : Type u_3} [fintype ι] (f : ι → ↥S) :
↑∏ (i : ι), f i = ∏ (i : ι), ↑(f i)

intermediate_fields inherit structure from their subalgebra coercions.

@[protected, instance]
def intermediate_field.module' {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [semiring R] [has_scalar R K] [module R L] [is_scalar_tower R K L] :
Equations
@[protected, instance]
def intermediate_field.module {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
Equations
@[protected, instance]
def intermediate_field.is_scalar_tower {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [semiring R] [has_scalar R K] [module R L] [is_scalar_tower R K L] :
@[simp]
theorem intermediate_field.coe_smul {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [semiring R] [has_scalar R K] [module R L] [is_scalar_tower R K L] (r : R) (x : ↥S) :
↑(r • x) = r • ↑x
@[protected, instance]
def intermediate_field.algebra' {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {K' : Type u_3} [comm_semiring K'] [has_scalar K' K] [algebra K' L] [is_scalar_tower K' K L] :
Equations
@[protected, instance]
def intermediate_field.algebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
Equations
@[protected, instance]
def intermediate_field.to_algebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [semiring R] [algebra L R] :
Equations
@[protected, instance]
def intermediate_field.is_scalar_tower_bot {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [semiring R] [algebra L R] :
@[protected, instance]
def intermediate_field.is_scalar_tower_mid {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [semiring R] [algebra L R] [algebra K R] [is_scalar_tower K L R] :
@[protected, instance]
def intermediate_field.is_scalar_tower_mid' {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :

Specialize is_scalar_tower_mid to the common case where the top field is L

def intermediate_field.map {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {L' : Type u_3} [field L'] [algebra K L'] (f : L →ₐ[K] L') :

If f : L →+* L' fixes K, S.map f is the intermediate field between L' and K such that x ∈ S ↔ f x ∈ S.map f.

Equations
theorem intermediate_field.map_map {K : Type u_1} {L₁ : Type u_2} {L₂ : Type u_3} {L₃ : Type u_4} [field K] [field L₁] [algebra K L₁] [field L₂] [algebra K L₂] [field L₃] [algebra K L₃] (E : intermediate_field K L₁) (f : L₁ →ₐ[K] L₂) (g : L₂ →ₐ[K] L₃) :
(E.map f).map g = E.map (g.comp f)
def intermediate_field.intermediate_field_map {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {L' : Type u_3} [field L'] [algebra K L'] (e : L ≃ₐ[K] L') (E : intermediate_field K L) :

Given an equivalence e : L ≃ₐ[K] L' of K-field extensions and an intermediate field E of L/K, intermediate_field_equiv_map e E is the induced equivalence between E and E.map e

Equations
@[simp]
theorem intermediate_field.intermediate_field_map_apply_coe {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {L' : Type u_3} [field L'] [algebra K L'] (e : L ≃ₐ[K] L') (E : intermediate_field K L) (ᾰ : ↥(E.to_subalgebra.to_subsemiring)) :
def intermediate_field.val {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :

The embedding from an intermediate field of L / K to L.

Equations
@[simp]
theorem intermediate_field.coe_val {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
@[simp]
theorem intermediate_field.val_mk {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {x : L} (hx : x ∈ S) :
⇑(S.val) ⟨x, hx⟩ = x
theorem intermediate_field.range_val {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
theorem intermediate_field.aeval_coe {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [comm_ring R] [algebra R K] [algebra R L] [is_scalar_tower R K L] (x : ↥S) (P : R[X]) :
theorem intermediate_field.coe_is_integral_iff {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) {R : Type u_3} [comm_ring R] [algebra R K] [algebra R L] [is_scalar_tower R K L] {x : ↥S} :
theorem intermediate_field.to_subalgebra_injective {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {S S' : intermediate_field K L} (h : S.to_subalgebra = S'.to_subalgebra) :
S = S'
theorem intermediate_field.set_range_subset {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
theorem intermediate_field.field_range_le {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
@[simp]
theorem intermediate_field.to_subalgebra_le_to_subalgebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {S S' : intermediate_field K L} :
@[simp]
theorem intermediate_field.to_subalgebra_lt_to_subalgebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {S S' : intermediate_field K L} :
def intermediate_field.lift1 {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} (E : intermediate_field K ↥F) :

Lift an intermediate_field of an intermediate_field

Equations
def intermediate_field.lift2 {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} (E : intermediate_field ↥F L) :

Lift an intermediate_field of an intermediate_field

Equations
@[protected, instance]
def intermediate_field.has_lift1 {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} :
Equations
@[protected, instance]
def intermediate_field.has_lift2 {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} :
Equations
@[simp]
theorem intermediate_field.mem_lift2 {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} {E : intermediate_field ↥F L} {x : L} :
x ∈ ↑E ↔ x ∈ E
theorem intermediate_field.lift2_algebra_map {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} {E : intermediate_field ↥F L} :
@[protected, instance]
def intermediate_field.lift2_tower {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} {E : intermediate_field ↥F L} :
def intermediate_field.lift2_alg_equiv {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F : intermediate_field K L} (E : intermediate_field ↥F L) :

lift2 is isomorphic to the original intermediate_field.

Equations
@[protected, instance]
def intermediate_field.finite_dimensional_left {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (F : intermediate_field K L) [finite_dimensional K L] :
@[protected, instance]
def intermediate_field.finite_dimensional_right {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (F : intermediate_field K L) [finite_dimensional K L] :
@[simp]
theorem intermediate_field.dim_eq_dim_subalgebra {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (F : intermediate_field K L) :
@[simp]
theorem intermediate_field.to_subalgebra_eq_iff {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F E : intermediate_field K L} :
theorem intermediate_field.eq_of_le_of_finrank_le {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F E : intermediate_field K L} [finite_dimensional K L] (h_le : F ≤ E) (h_finrank : finite_dimensional.finrank K ↥E ≤ finite_dimensional.finrank K ↥F) :
F = E
theorem intermediate_field.eq_of_le_of_finrank_eq {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F E : intermediate_field K L} [finite_dimensional K L] (h_le : F ≤ E) (h_finrank : finite_dimensional.finrank K ↥F = finite_dimensional.finrank K ↥E) :
F = E
theorem intermediate_field.eq_of_le_of_finrank_le' {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F E : intermediate_field K L} [finite_dimensional K L] (h_le : F ≤ E) (h_finrank : finite_dimensional.finrank ↥F L ≤ finite_dimensional.finrank ↥E L) :
F = E
theorem intermediate_field.eq_of_le_of_finrank_eq' {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {F E : intermediate_field K L} [finite_dimensional K L] (h_le : F ≤ E) (h_finrank : finite_dimensional.finrank ↥F L = finite_dimensional.finrank ↥E L) :
F = E
def subalgebra_equiv_intermediate_field {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (alg : algebra.is_algebraic K L) :

If L/K is algebraic, the K-subalgebras of L are all fields.

Equations
@[simp]
theorem mem_subalgebra_equiv_intermediate_field {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (alg : algebra.is_algebraic K L) {S : subalgebra K L} {x : L} :
@[simp]
theorem mem_subalgebra_equiv_intermediate_field_symm {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (alg : algebra.is_algebraic K L) {S : intermediate_field K L} {x : L} :