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 sb sa * b s) (hm : 1 s) (hz : ∀ {a b : L}, a sb sa + 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}.carrierx⁻¹ {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 Sy Sx * 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 Sy Sx + 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 Sy Sx - 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 Sx⁻¹ 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 Sy Sx / 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 lx 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 lx 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 ma 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 ma 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 tf 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 tf 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 Sx⁻¹ 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 Sx⁻¹ 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_subalgebrax⁻¹ 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} :