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
, IntermediateField K L
.
An IntermediateField 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 #
IntermediateField K L
: the type of intermediate fields betweenK
andL
.Subalgebra.to_intermediateField
: turns a subalgebra closed under⁻¹
into an intermediate fieldSubfield.to_intermediateField
: turns a subfield containing the image ofK
into an intermediate fieldIntermediateField.map
: map an intermediate field along anAlgHom
IntermediateField.restrict_scalars
: restrict the scalars of an intermediate field to a smaller field in a tower of fields.
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
S : IntermediateField K L
is a subset of L
such that there is a field
tower L / S / K
.
- carrier : Set L
- one_mem' : 1 ∈ self.carrier
- zero_mem' : 0 ∈ self.carrier
- algebraMap_mem' : ∀ (r : K), (algebraMap K L) r ∈ self.carrier
Instances For
Equations
- IntermediateField.instSetLike = { coe := fun (S : IntermediateField K L) => S.carrier, coe_injective' := ⋯ }
Reinterpret an IntermediateField
as a Subfield
.
Equations
- S.toSubfield = { toSubsemiring := S.toSubsemiring, neg_mem' := ⋯, inv_mem' := ⋯ }
Instances For
Equations
- ⋯ = ⋯
Two intermediate fields are equal if they have the same elements.
Copy of an intermediate field with a new carrier
equal to the old one. Useful to fix
definitional equalities.
Equations
- S.copy s hs = { toSubalgebra := S.copy s hs, inv_mem' := ⋯ }
Instances For
Lemmas inherited from more general structures #
The declarations in this section derive from the fact that an IntermediateField
is also a
subalgebra or subfield. Their use should be replaceable with the corresponding lemma from a
subobject class.
An intermediate field contains the image of the smaller field.
An intermediate field contains the ring's 1.
An intermediate field contains the ring's 0.
Sum of a multiset of elements in an IntermediateField
is in the IntermediateField
.
Product of elements of an intermediate field indexed by a Finset
is in the intermediate_field.
Sum of elements in an IntermediateField
indexed by a Finset
is in the IntermediateField
.
Alias of IntermediateField.natCast_mem
.
Alias of intCast_mem
.
Turn a subalgebra closed under inverses into an intermediate field
Equations
- S.toIntermediateField inv_mem = { toSubalgebra := S, inv_mem' := inv_mem }
Instances For
Turn a subalgebra satisfying IsField
into an intermediate_field
Equations
- S.toIntermediateField' hS = S.toIntermediateField ⋯
Instances For
Turn a subfield of L
containing the image of K
into an intermediate field
Equations
- S.toIntermediateField algebra_map_mem = { toSubsemiring := S.toSubsemiring, algebraMap_mem' := algebra_map_mem, inv_mem' := ⋯ }
Instances For
An intermediate field inherits a field structure
Equations
- S.toField = S.toSubfield.toField
IntermediateField
s inherit structure from their Subfield
coercions.
The action by an intermediate field is the action by the underlying field.
Equations
- F.instSMulSubtypeMem = inferInstanceAs (SMul (↥F.toSubfield) X)
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Note that this provides IsScalarTower F K K
which is needed by smul_mul_assoc
.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
The action by an intermediate field is the action by the underlying field.
Equations
- F.instMulActionSubtypeMem = inferInstanceAs (MulAction (↥F.toSubfield) X)
The action by an intermediate field is the action by the underlying field.
Equations
- F.instDistribMulActionSubtypeMem = inferInstanceAs (DistribMulAction (↥F.toSubfield) X)
The action by an intermediate field is the action by the underlying field.
Equations
- F.instMulDistribMulActionSubtypeMem = inferInstanceAs (MulDistribMulAction (↥F.toSubfield) X)
The action by an intermediate field is the action by the underlying field.
Equations
- F.instSMulWithZeroSubtypeMem = inferInstanceAs (SMulWithZero (↥F.toSubfield) X)
The action by an intermediate field is the action by the underlying field.
Equations
- F.instMulActionWithZeroSubtypeMem = inferInstanceAs (MulActionWithZero (↥F.toSubfield) X)
The action by an intermediate field is the action by the underlying field.
Equations
- F.instModuleSubtypeMem = inferInstanceAs (Module (↥F.toSubfield) X)
The action by an intermediate field is the action by the underlying field.
Equations
- F.instMulSemiringActionSubtypeMem = inferInstanceAs (MulSemiringAction (↥F.toSubfield) X)
IntermediateField
s inherit structure from their Subalgebra
coercions.
Equations
- S.toAlgebra = inferInstanceAs (Algebra (↥S.toSubalgebra) L)
Equations
- S.module' = inferInstanceAs (Module R ↥S.toSubalgebra)
Equations
- S.algebra' = inferInstanceAs (Algebra R' ↥S.toSubalgebra)
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Specialize is_scalar_tower_mid
to the common case where the top field is L
Equations
- ⋯ = ⋯
Equations
- S.instAlgebraSubtypeMem = inferInstanceAs (Algebra (↥S.toSubalgebra) E)
Equations
- IntermediateField.instAlgebraSubtypeMem_1 T = T.algebra
Equations
- IntermediateField.instModuleSubtypeMem_1 T = Algebra.toModule
Equations
- IntermediateField.instSMulSubtypeMem_1 T = Algebra.toSMul
Equations
- ⋯ = ⋯
Given f : L →ₐ[K] L'
, S.comap f
is the intermediate field between K
and L
such that f x ∈ S ↔ x ∈ S.comap f
.
Equations
- IntermediateField.comap f S = { toSubalgebra := Subalgebra.comap f S.toSubalgebra, inv_mem' := ⋯ }
Instances For
Given f : L →ₐ[K] L'
, S.map f
is the intermediate field between K
and L'
such that x ∈ S ↔ f x ∈ S.map f
.
Equations
- IntermediateField.map f S = { toSubalgebra := Subalgebra.map f S.toSubalgebra, inv_mem' := ⋯ }
Instances For
Given an equivalence e : L ≃ₐ[K] L'
of K
-field extensions and an intermediate
field E
of L/K
, intermediateFieldMap e E
is the induced equivalence
between E
and E.map e
Equations
- IntermediateField.intermediateFieldMap e E = e.subalgebraMap E.toSubalgebra
Instances For
The range of an algebra homomorphism, as an intermediate field.
Equations
- f.fieldRange = { toSubalgebra := f.range, inv_mem' := ⋯ }
Instances For
Equations
- IntermediateField.AlgHom.inhabited S = { default := S.val }
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
Instances For
Lift an intermediate_field of an intermediate_field
Equations
- IntermediateField.lift E = IntermediateField.map F.val E
Instances For
Equations
- IntermediateField.hasLift = { coe := IntermediateField.lift }
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
- IntermediateField.restrictScalars K E = { carrier := E.carrier, mul_mem' := ⋯, one_mem' := ⋯, add_mem' := ⋯, zero_mem' := ⋯, algebraMap_mem' := ⋯, inv_mem' := ⋯ }
Instances For
If F ≤ E
are two subfields of L
, then E
is also an intermediate field of
L / F
. It can be viewed as an inverse to IntermediateField.toSubfield
.
Equations
- Subfield.extendScalars h = E.toIntermediateField ⋯
Instances For
Subfield.extendScalars.orderIso
bundles Subfield.extendScalars
into an order isomorphism from
{ E : Subfield L // F ≤ E }
to IntermediateField F L
. Its inverse is
IntermediateField.toSubfield
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F ≤ E
are two intermediate fields of L / K
, then E
is also an intermediate field of
L / F
. It can be viewed as an inverse to IntermediateField.restrictScalars
.
Equations
Instances For
IntermediateField.extendScalars.orderIso
bundles IntermediateField.extendScalars
into an order isomorphism from
{ E : IntermediateField K L // F ≤ E }
to IntermediateField F L
. Its inverse is
IntermediateField.restrictScalars
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
If F ≤ E
are two intermediate fields of L / K
, then F
is also an intermediate field of
E / K
. It is an inverse of IntermediateField.lift
, and can be viewed as a dual to
IntermediateField.extendScalars
.
Equations
- IntermediateField.restrict h = (IntermediateField.inclusion h).fieldRange
Instances For
F
is equivalent to F
as an intermediate field of E / K
.