mathlib3 documentation

field_theory.intermediate_field

Intermediate fields #

THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.

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.

Instances for intermediate_field
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]
@[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) :
t.prod (λ (i : ι), 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) :
t.sum (λ (i : ι), 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
theorem intermediate_field.coe_nat_mem {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) (n : ) :
n S
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]
def subalgebra.to_intermediate_field' {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : subalgebra K L) (hS : is_field S) :

Turn a subalgebra satisfying is_field 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) (hS : is_field S) :
@[simp]
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) :
(finset.univ.sum (λ (i : ι), f i)) = finset.univ.sum (λ (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) :
(finset.univ.prod (λ (i : ι), f i)) = finset.univ.prod (λ (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_smul 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_smul 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_smul 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_smul 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]

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} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] (f : L →ₐ[K] L') (S : intermediate_field 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
Instances for intermediate_field.map
@[simp]
theorem intermediate_field.coe_map {K : Type u_1} {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] (S : intermediate_field K L) (f : L →ₐ[K] L') :
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₃) :
def intermediate_field.intermediate_field_map {K : Type u_1} {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K 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} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] (e : L ≃ₐ[K] L') (E : intermediate_field K L) (a : E) :
def alg_hom.field_range {K : Type u_1} {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] (f : L →ₐ[K] L') :

The range of an algebra homomorphism, as an intermediate field.

Equations
@[simp]
theorem alg_hom.field_range_to_subalgebra {K : Type u_1} {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] (f : L →ₐ[K] L') :
@[simp]
theorem alg_hom.coe_field_range {K : Type u_1} {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] (f : L →ₐ[K] L') :
@[simp]
theorem alg_hom.field_range_to_subfield {K : Type u_1} {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] (f : L →ₐ[K] L') :
@[simp]
theorem alg_hom.mem_field_range {K : Type u_1} {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] {f : L →ₐ[K] L'} {y : L'} :
y f.field_range (x : L), f x = y
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) :
@[simp]
theorem intermediate_field.field_range_val {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
@[protected, instance]
def intermediate_field.alg_hom.inhabited {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] (S : intermediate_field K L) :
Equations
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 : polynomial R) :
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} :
def intermediate_field.inclusion {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {E F : intermediate_field K L} (hEF : E F) :

The map E → F when E is an intermediate field contained in the intermediate field F.

This is the intermediate field version of subalgebra.inclusion.

Equations
@[simp]
theorem intermediate_field.inclusion_inclusion {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {E F G : intermediate_field K L} (hEF : E F) (hFG : F G) (x : E) :
@[simp]
theorem intermediate_field.coe_inclusion {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {E F : intermediate_field K L} (hEF : E F) (e : E) :
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'
@[simp]
@[simp]
def intermediate_field.lift {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.restrict_scalars (K : Type u_1) {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] [algebra L' L] [is_scalar_tower K L' L] (E : intermediate_field L' L) :

Given a tower L / ↥E / L' / K of field extensions, where E is an L'-intermediate field of L, reinterpret E as a K-intermediate field of L.

Equations
@[simp]
theorem intermediate_field.coe_restrict_scalars (K : Type u_1) {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] [algebra L' L] [is_scalar_tower K L' L] {E : intermediate_field L' L} :
@[simp]
@[simp]
theorem intermediate_field.mem_restrict_scalars (K : Type u_1) {L : Type u_2} {L' : Type u_3} [field K] [field L] [field L'] [algebra K L] [algebra K L'] [algebra L' L] [is_scalar_tower K L' L] {E : intermediate_field L' L} {x : L} :
@[protected, instance]
@[protected, instance]
@[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
theorem intermediate_field.is_algebraic_iff {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {S : intermediate_field K L} {x : S} :
theorem intermediate_field.is_integral_iff {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {S : intermediate_field K L} {x : S} :
theorem intermediate_field.minpoly_eq {K : Type u_1} {L : Type u_2} [field K] [field L] [algebra K L] {S : intermediate_field K L} (x : S) :

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]