File: Mathlib/FieldTheory/IntermediateField.lean

full_name: IntermediateField.inv_mem'
code: /-- `S : IntermediateField K L` is a subset of `L` such that there is a field
tower `L / S / K`. -/
structure IntermediateField extends Subalgebra K L where
  inv_mem' : ∀ x ∈ carrier, x⁻¹ ∈ carrier
goal: x ∈ self.carrier → x⁻¹ ∈ self.carrier

full_name: IntermediateField
code: /-- `S : IntermediateField K L` is a subset of `L` such that there is a field
tower `L / S / K`. -/
structure IntermediateField extends Subalgebra K L where
  inv_mem' : ∀ x ∈ carrier, x⁻¹ ∈ carrier
goal: Type u_2

full_name: IntermediateField.instSetLike
code: instance : SetLike (IntermediateField K L) L 
goal: SetLike (IntermediateField K L) L

full_name: IntermediateField.neg_mem
code: protected theorem neg_mem {x : L} (hx : x ∈ S) : -x ∈ S 
goal: -x ∈ S

full_name: IntermediateField.toSubfield
code: /-- Reinterpret an `IntermediateField` as a `Subfield`. -/
def toSubfield : Subfield L 
goal: Subfield L

full_name: IntermediateField.instSubfieldClass
code: instance : SubfieldClass (IntermediateField K L) L 
goal: SubfieldClass (IntermediateField K L) L

full_name: IntermediateField.mem_carrier
code: theorem mem_carrier {s : IntermediateField K L} {x : L} : x ∈ s.carrier ↔ x ∈ s 
goal: x ∈ s.carrier ↔ x ∈ s

full_name: IntermediateField.ext
code: /-- Two intermediate fields are equal if they have the same elements. -/
@[ext]
theorem ext {S T : IntermediateField K L} (h : ∀ x, x ∈ S ↔ x ∈ T) : S = T 
goal: S = T

full_name: IntermediateField.coe_toSubalgebra
code: @[simp]
theorem coe_toSubalgebra : (S.toSubalgebra : Set L) = S 
goal: ↑S.toSubalgebra = ↑S

full_name: IntermediateField.coe_toSubfield
code: @[simp]
theorem coe_toSubfield : (S.toSubfield : Set L) = S 
goal: ↑S.toSubfield = ↑S

full_name: IntermediateField.mem_mk
code: @[simp]
theorem mem_mk (s : Subsemiring L) (hK : ∀ x, algebraMap K L x ∈ s) (hi) (x : L) :
    x ∈ IntermediateField.mk (Subalgebra.mk s hK) hi ↔ x ∈ s 
goal: x ∈ { toSubsemiring := s, algebraMap_mem' := hK, inv_mem' := hi } ↔ x ∈ s

full_name: IntermediateField.mem_toSubalgebra
code: @[simp]
theorem mem_toSubalgebra (s : IntermediateField K L) (x : L) : x ∈ s.toSubalgebra ↔ x ∈ s 
goal: x ∈ s.toSubalgebra ↔ x ∈ s

full_name: IntermediateField.mem_toSubfield
code: @[simp]
theorem mem_toSubfield (s : IntermediateField K L) (x : L) : x ∈ s.toSubfield ↔ x ∈ s 
goal: x ∈ s.toSubfield ↔ x ∈ s

full_name: IntermediateField.copy
code: /-- Copy of an intermediate field with a new `carrier` equal to the old one. Useful to fix
definitional equalities. -/
protected def copy (S : IntermediateField K L) (s : Set L) (hs : s = ↑S) :
    IntermediateField K L 
goal: IntermediateField K L

full_name: IntermediateField.coe_copy
code: @[simp]
theorem coe_copy (S : IntermediateField K L) (s : Set L) (hs : s = ↑S) :
    (S.copy s hs : Set L) = s 
goal: ↑(S.copy s hs) = s

full_name: IntermediateField.copy_eq
code: theorem copy_eq (S : IntermediateField K L) (s : Set L) (hs : s = ↑S) : S.copy s hs = S 
goal: S.copy s hs = S

full_name: IntermediateField.algebraMap_mem
code: /-- An intermediate field contains the image of the smaller field. -/
theorem algebraMap_mem (x : K) : algebraMap K L x ∈ S 
goal: (algebraMap K L) x ∈ S

full_name: IntermediateField.smul_mem
code: /-- An intermediate field is closed under scalar multiplication. -/
theorem smul_mem {y : L} : y ∈ S → ∀ {x : K}, x • y ∈ S 
goal: y ∈ S → ∀ {x : K}, x • y ∈ S

full_name: IntermediateField.one_mem
code: /-- An intermediate field contains the ring's 1. -/
protected theorem one_mem : (1 : L) ∈ S 
goal: 1 ∈ S

full_name: IntermediateField.zero_mem
code: /-- An intermediate field contains the ring's 0. -/
protected theorem zero_mem : (0 : L) ∈ S 
goal: 0 ∈ S

full_name: IntermediateField.mul_mem
code: /-- An intermediate field is closed under multiplication. -/
protected theorem mul_mem {x y : L} : x ∈ S → y ∈ S → x * y ∈ S 
goal: x ∈ S → y ∈ S → x * y ∈ S

full_name: IntermediateField.add_mem
code: /-- An intermediate field is closed under addition. -/
protected theorem add_mem {x y : L} : x ∈ S → y ∈ S → x + y ∈ S 
goal: x ∈ S → y ∈ S → x + y ∈ S

full_name: IntermediateField.sub_mem
code: /-- An intermediate field is closed under subtraction -/
protected theorem sub_mem {x y : L} : x ∈ S → y ∈ S → x - y ∈ S 
goal: x ∈ S → y ∈ S → x - y ∈ S

full_name: IntermediateField.inv_mem
code: /-- An intermediate field is closed under inverses. -/
protected theorem inv_mem {x : L} : x ∈ S → x⁻¹ ∈ S 
goal: x ∈ S → x⁻¹ ∈ S

full_name: IntermediateField.div_mem
code: /-- An intermediate field is closed under division. -/
protected theorem div_mem {x y : L} : x ∈ S → y ∈ S → x / y ∈ S 
goal: x ∈ S → y ∈ S → x / y ∈ S

full_name: IntermediateField.list_prod_mem
code: /-- Product of a list of elements in an intermediate_field is in the intermediate_field. -/
protected theorem list_prod_mem {l : List L} : (∀ x ∈ l, x ∈ S) → l.prod ∈ S 
goal: (∀ x ∈ l, x ∈ S) → l.prod ∈ S

full_name: IntermediateField.list_sum_mem
code: /-- Sum of a list of elements in an intermediate field is in the intermediate_field. -/
protected theorem list_sum_mem {l : List L} : (∀ x ∈ l, x ∈ S) → l.sum ∈ S 
goal: (∀ x ∈ l, x ∈ S) → l.sum ∈ S

full_name: IntermediateField.multiset_prod_mem
code: /-- Product of a multiset of elements in an intermediate field is in the intermediate_field. -/
protected theorem multiset_prod_mem (m : Multiset L) : (∀ a ∈ m, a ∈ S) → m.prod ∈ S 
goal: (∀ a ∈ m, a ∈ S) → m.prod ∈ S

full_name: IntermediateField.multiset_sum_mem
code: /-- Sum of a multiset of elements in an `IntermediateField` is in the `IntermediateField`. -/
protected theorem multiset_sum_mem (m : Multiset L) : (∀ a ∈ m, a ∈ S) → m.sum ∈ S 
goal: (∀ a ∈ m, a ∈ S) → m.sum ∈ S

full_name: IntermediateField.prod_mem
code: /-- Product of elements of an intermediate field indexed by a `Finset` is in the intermediate_field.
-/
protected theorem prod_mem {ι : Type*} {t : Finset ι} {f : ι → L} (h : ∀ c ∈ t, f c ∈ S) :
    (∏ i ∈ t, f i) ∈ S 
goal: ∏ i ∈ t, f i ∈ S

full_name: IntermediateField.sum_mem
code: /-- Sum of elements in an `IntermediateField` indexed by a `Finset` is in the `IntermediateField`.
-/
protected theorem sum_mem {ι : Type*} {t : Finset ι} {f : ι → L} (h : ∀ c ∈ t, f c ∈ S) :
    (∑ i ∈ t, f i) ∈ S 
goal: ∑ i ∈ t, f i ∈ S

full_name: IntermediateField.pow_mem
code: protected theorem pow_mem {x : L} (hx : x ∈ S) (n : ℤ) : x ^ n ∈ S 
goal: x ^ n ∈ S

full_name: IntermediateField.zsmul_mem
code: protected theorem zsmul_mem {x : L} (hx : x ∈ S) (n : ℤ) : n • x ∈ S 
goal: n • x ∈ S

full_name: IntermediateField.intCast_mem
code: protected theorem intCast_mem (n : ℤ) : (n : L) ∈ S 
goal: ↑n ∈ S

full_name: IntermediateField.coe_add
code: protected theorem coe_add (x y : S) : (↑(x + y) : L) = ↑x + ↑y 
goal: ↑(x + y) = ↑x + ↑y

full_name: IntermediateField.coe_neg
code: protected theorem coe_neg (x : S) : (↑(-x) : L) = -↑x 
goal: ↑(-x) = -↑x

full_name: IntermediateField.coe_mul
code: protected theorem coe_mul (x y : S) : (↑(x * y) : L) = ↑x * ↑y 
goal: ↑(x * y) = ↑x * ↑y

full_name: IntermediateField.coe_inv
code: protected theorem coe_inv (x : S) : (↑x⁻¹ : L) = (↑x)⁻¹ 
goal: ↑x⁻¹ = (↑x)⁻¹

full_name: IntermediateField.coe_zero
code: protected theorem coe_zero : ((0 : S) : L) = 0 
goal: ↑0 = 0

full_name: IntermediateField.coe_one
code: protected theorem coe_one : ((1 : S) : L) = 1 
goal: ↑1 = 1

full_name: IntermediateField.coe_pow
code: protected theorem coe_pow (x : S) (n : ℕ) : (↑(x ^ n : S) : L) = (x : L) ^ n 
goal: ↑(x ^ n) = ↑x ^ n

full_name: IntermediateField.natCast_mem
code: theorem natCast_mem (n : ℕ) : (n : L) ∈ S 
goal: ↑n ∈ S

full_name: Subalgebra.toIntermediateField
code: /-- Turn a subalgebra closed under inverses into an intermediate field -/
def Subalgebra.toIntermediateField (S : Subalgebra K L) (inv_mem : ∀ x ∈ S, x⁻¹ ∈ S) :
    IntermediateField K L 
goal: IntermediateField K L

full_name: toSubalgebra_toIntermediateField
code: @[simp]
theorem toSubalgebra_toIntermediateField (S : Subalgebra K L) (inv_mem : ∀ x ∈ S, x⁻¹ ∈ S) :
    (S.toIntermediateField inv_mem).toSubalgebra = S 
goal: (S.toIntermediateField inv_mem).toSubalgebra = S

full_name: toIntermediateField_toSubalgebra
code: @[simp]
theorem toIntermediateField_toSubalgebra (S : IntermediateField K L) :
    (S.toSubalgebra.toIntermediateField fun x => S.inv_mem) = S 
goal: S.toIntermediateField ⋯ = S

full_name: Subalgebra.toIntermediateField'
code: /-- Turn a subalgebra satisfying `IsField` into an intermediate_field -/
def Subalgebra.toIntermediateField' (S : Subalgebra K L) (hS : IsField S) : IntermediateField K L 
goal: IntermediateField K L

full_name: toSubalgebra_toIntermediateField'
code: @[simp]
theorem toSubalgebra_toIntermediateField' (S : Subalgebra K L) (hS : IsField S) :
    (S.toIntermediateField' hS).toSubalgebra = S 
goal: (S.toIntermediateField' hS).toSubalgebra = S

full_name: toIntermediateField'_toSubalgebra
code: @[simp]
theorem toIntermediateField'_toSubalgebra (S : IntermediateField K L) :
    S.toSubalgebra.toIntermediateField' (Field.toIsField S) = S 
goal: S.toIntermediateField' ⋯ = S

full_name: Subfield.toIntermediateField
code: /-- Turn a subfield of `L` containing the image of `K` into an intermediate field -/
def Subfield.toIntermediateField (S : Subfield L) (algebra_map_mem : ∀ x, algebraMap K L x ∈ S) :
    IntermediateField K L 
goal: IntermediateField K L

full_name: IntermediateField.toField
code: /-- An intermediate field inherits a field structure -/
instance toField : Field S 
goal: Field ↥S

full_name: IntermediateField.coe_sum
code: @[simp, norm_cast]
theorem coe_sum {ι : Type*} [Fintype ι] (f : ι → S) : (↑(∑ i, f i) : L) = ∑ i, (f i : L) 
goal: ↑(∑ i : ι, f i) = ∑ i : ι, ↑(f i)

full_name: IntermediateField.coe_prod
code: @[norm_cast] --Porting note (#10618): `simp` can prove it
theorem coe_prod {ι : Type*} [Fintype ι] (f : ι → S) : (↑(∏ i, f i) : L) = ∏ i, (f i : L) 
goal: ↑(∏ i : ι, f i) = ∏ i : ι, ↑(f i)

full_name: IntermediateField.module'
code: instance module' {R} [Semiring R] [SMul R K] [Module R L] [IsScalarTower R K L] : Module R S 
goal: Module R ↥S

full_name: IntermediateField.module
code: instance module : Module K S 
goal: Module K ↥S

full_name: IntermediateField.isScalarTower
code: instance isScalarTower {R} [Semiring R] [SMul R K] [Module R L] [IsScalarTower R K L] :
    IsScalarTower R K S 
goal: IsScalarTower R K ↥S

full_name: IntermediateField.coe_smul
code: @[simp]
theorem coe_smul {R} [Semiring R] [SMul R K] [Module R L] [IsScalarTower R K L] (r : R) (x : S) :
    ↑(r • x : S) = (r • (x : L)) 
goal: ↑(r • x) = r • ↑x

full_name: IntermediateField.algebra
code: instance algebra : Algebra K S 
goal: Algebra K ↥S

full_name: IntermediateField.algebraMap_apply
code: @[simp] lemma algebraMap_apply (x : S) : algebraMap S L x = x 
goal: (algebraMap (↥S) L) x = ↑x

full_name: IntermediateField.coe_algebraMap_apply
code: @[simp] lemma coe_algebraMap_apply (x : K) : ↑(algebraMap K S x) = algebraMap K L x 
goal: ↑((algebraMap K ↥S) x) = (algebraMap K L) x

full_name: IntermediateField.isScalarTower_bot
code: instance isScalarTower_bot {R : Type*} [Semiring R] [Algebra L R] : IsScalarTower S L R 
goal: IsScalarTower (↥S) L R

full_name: IntermediateField.isScalarTower_mid
code: instance isScalarTower_mid {R : Type*} [Semiring R] [Algebra L R] [Algebra K R]
    [IsScalarTower K L R] : IsScalarTower K S R 
goal: IsScalarTower K (↥S) R

full_name: IntermediateField.isScalarTower_mid'
code: /-- Specialize `is_scalar_tower_mid` to the common case where the top field is `L` -/
instance isScalarTower_mid' : IsScalarTower K S L 
goal: IsScalarTower K (↥S) L

full_name: IntermediateField.instAlgebraSubtypeMem
code: instance : Algebra S T 
goal: Algebra ↥S ↥T

full_name: IntermediateField.instModuleSubtypeMem
code: instance : Module S T 
goal: Module ↥S ↥T

full_name: IntermediateField.instSMulSubtypeMem
code: instance : SMul S T 
goal: SMul ↥S ↥T

full_name: IntermediateField.instIsScalarTowerSubtypeMem
code: instance [Algebra K E] [IsScalarTower K L E] : IsScalarTower K S T 
goal: IsScalarTower K ↥S ↥T

full_name: IntermediateField.comap
code: /-- 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`. -/
def comap (f : L →ₐ[K] L') (S : IntermediateField K L') : IntermediateField K L 
goal: IntermediateField K L

full_name: IntermediateField.map
code: /-- 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`. -/
def map (f : L →ₐ[K] L') (S : IntermediateField K L) : IntermediateField K L' 
goal: IntermediateField K L'

full_name: IntermediateField.coe_map
code: @[simp]
theorem coe_map (f : L →ₐ[K] L') : (S.map f : Set L') = f '' S 
goal: ↑(IntermediateField.map f S) = ⇑f '' ↑S

full_name: IntermediateField.toSubalgebra_map
code: @[simp]
theorem toSubalgebra_map (f : L →ₐ[K] L') : (S.map f).toSubalgebra = S.toSubalgebra.map f 
goal: (IntermediateField.map f S).toSubalgebra = Subalgebra.map f S.toSubalgebra

full_name: IntermediateField.toSubfield_map
code: @[simp]
theorem toSubfield_map (f : L →ₐ[K] L') : (S.map f).toSubfield = S.toSubfield.map f 
goal: (IntermediateField.map f S).toSubfield = Subfield.map (↑f) S.toSubfield

full_name: IntermediateField.map_map
code: theorem map_map {K L₁ L₂ L₃ : Type*} [Field K] [Field L₁] [Algebra K L₁] [Field L₂] [Algebra K L₂]
    [Field L₃] [Algebra K L₃] (E : IntermediateField K L₁) (f : L₁ →ₐ[K] L₂) (g : L₂ →ₐ[K] L₃) :
    (E.map f).map g = E.map (g.comp f) 
goal: IntermediateField.map g (IntermediateField.map f E) = IntermediateField.map (g.comp f) E

full_name: IntermediateField.map_mono
code: theorem map_mono (f : L →ₐ[K] L') {S T : IntermediateField K L} (h : S ≤ T) :
    S.map f ≤ T.map f 
goal: IntermediateField.map f S ≤ IntermediateField.map f T

full_name: IntermediateField.map_le_iff_le_comap
code: theorem map_le_iff_le_comap {f : L →ₐ[K] L'}
    {s : IntermediateField K L} {t : IntermediateField K L'} :
    s.map f ≤ t ↔ s ≤ t.comap f 
goal: IntermediateField.map f s ≤ t ↔ s ≤ IntermediateField.comap f t

full_name: IntermediateField.gc_map_comap
code: theorem gc_map_comap (f : L →ₐ[K] L') : GaloisConnection (map f) (comap f) 
goal: GaloisConnection (IntermediateField.map f) (IntermediateField.comap f)

full_name: IntermediateField.intermediateFieldMap
code: /-- 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` -/
def intermediateFieldMap (e : L ≃ₐ[K] L') (E : IntermediateField K L) : E ≃ₐ[K] E.map e.toAlgHom 
goal: ↥E ≃ₐ[K] ↥(IntermediateField.map (↑e) E)

full_name: IntermediateField.intermediateFieldMap_apply_coe
code: @[simp, nolint simpNF]
theorem intermediateFieldMap_apply_coe (e : L ≃ₐ[K] L') (E : IntermediateField K L) (a : E) :
    ↑(intermediateFieldMap e E a) = e a 
goal: ↑((IntermediateField.intermediateFieldMap e E) a) = e ↑a

full_name: IntermediateField.intermediateFieldMap_symm_apply_coe
code: @[simp, nolint simpNF]
theorem intermediateFieldMap_symm_apply_coe (e : L ≃ₐ[K] L') (E : IntermediateField K L)
    (a : E.map e.toAlgHom) : ↑((intermediateFieldMap e E).symm a) = e.symm a 
goal: ↑((IntermediateField.intermediateFieldMap e E).symm a) = e.symm ↑a

full_name: AlgHom.fieldRange_toSubalgebra
code: /-- The range of an algebra homomorphism, as an intermediate field. -/
@[simps toSubalgebra]
def fieldRange : IntermediateField K L' 
goal: f.fieldRange.toSubalgebra = f.range

full_name: AlgHom.fieldRange
code: /-- The range of an algebra homomorphism, as an intermediate field. -/
@[simps toSubalgebra]
def fieldRange : IntermediateField K L' 
goal: IntermediateField K L'

full_name: AlgHom.coe_fieldRange
code: @[simp]
theorem coe_fieldRange : ↑f.fieldRange = Set.range f 
goal: ↑f.fieldRange = Set.range ⇑f

full_name: AlgHom.fieldRange_toSubfield
code: @[simp]
theorem fieldRange_toSubfield : f.fieldRange.toSubfield = (f : L →+* L').fieldRange 
goal: f.fieldRange.toSubfield = (↑f).fieldRange

full_name: AlgHom.mem_fieldRange
code: @[simp]
theorem mem_fieldRange {y : L'} : y ∈ f.fieldRange ↔ ∃ x, f x = y 
goal: y ∈ f.fieldRange ↔ ∃ x, f x = y

full_name: IntermediateField.val
code: /-- The embedding from an intermediate field of `L / K` to `L`. -/
def val : S →ₐ[K] L 
goal: ↥S →ₐ[K] L

full_name: IntermediateField.coe_val
code: @[simp]
theorem coe_val : ⇑S.val = ((↑) : S → L) 
goal: ⇑S.val = Subtype.val

full_name: IntermediateField.val_mk
code: @[simp]
theorem val_mk {x : L} (hx : x ∈ S) : S.val ⟨x, hx⟩ = x 
goal: S.val ⟨x, hx⟩ = x

full_name: IntermediateField.range_val
code: theorem range_val : S.val.range = S.toSubalgebra 
goal: S.val.range = S.toSubalgebra

full_name: IntermediateField.fieldRange_val
code: @[simp]
theorem fieldRange_val : S.val.fieldRange = S 
goal: S.val.fieldRange = S

full_name: IntermediateField.AlgHom.inhabited
code: instance AlgHom.inhabited : Inhabited (S →ₐ[K] L) 
goal: Inhabited (↥S →ₐ[K] L)

full_name: IntermediateField.aeval_coe
code: theorem aeval_coe {R : Type*} [CommRing R] [Algebra R K] [Algebra R L] [IsScalarTower R K L]
    (x : S) (P : R[X]) : aeval (x : L) P = aeval x P 
goal: (Polynomial.aeval ↑x) P = ↑((Polynomial.aeval x) P)

full_name: IntermediateField.coe_isIntegral_iff
code: theorem coe_isIntegral_iff {R : Type*} [CommRing R] [Algebra R K] [Algebra R L]
    [IsScalarTower R K L] {x : S} : IsIntegral R (x : L) ↔ IsIntegral R x 
goal: IsIntegral R ↑x ↔ IsIntegral R x

full_name: IntermediateField.inclusion
code: /-- 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`. -/
def inclusion {E F : IntermediateField K L} (hEF : E ≤ F) : E →ₐ[K] F 
goal: ↥E →ₐ[K] ↥F

full_name: IntermediateField.inclusion_injective
code: theorem inclusion_injective {E F : IntermediateField K L} (hEF : E ≤ F) :
    Function.Injective (inclusion hEF) 
goal: Function.Injective ⇑(IntermediateField.inclusion hEF)

full_name: IntermediateField.inclusion_self
code: @[simp]
theorem inclusion_self {E : IntermediateField K L} : inclusion (le_refl E) = AlgHom.id K E 
goal: IntermediateField.inclusion ⋯ = AlgHom.id K ↥E

full_name: IntermediateField.inclusion_inclusion
code: @[simp]
theorem inclusion_inclusion {E F G : IntermediateField K L} (hEF : E ≤ F) (hFG : F ≤ G) (x : E) :
    inclusion hFG (inclusion hEF x) = inclusion (le_trans hEF hFG) x 
goal: (IntermediateField.inclusion hFG) ((IntermediateField.inclusion hEF) x) = (IntermediateField.inclusion ⋯) x

full_name: IntermediateField.coe_inclusion
code: @[simp]
theorem coe_inclusion {E F : IntermediateField K L} (hEF : E ≤ F) (e : E) :
    (inclusion hEF e : L) = e 
goal: ↑((IntermediateField.inclusion hEF) e) = ↑e

full_name: IntermediateField.toSubalgebra_injective
code: theorem toSubalgebra_injective :
    Function.Injective (IntermediateField.toSubalgebra : IntermediateField K L → _) 
goal: Function.Injective IntermediateField.toSubalgebra

full_name: IntermediateField.map_injective
code: theorem map_injective (f : L →ₐ[K] L') :
    Function.Injective (map f) 
goal: Function.Injective (IntermediateField.map f)

full_name: IntermediateField.set_range_subset
code: theorem set_range_subset : Set.range (algebraMap K L) ⊆ S 
goal: Set.range ⇑(algebraMap K L) ⊆ ↑S

full_name: IntermediateField.fieldRange_le
code: theorem fieldRange_le : (algebraMap K L).fieldRange ≤ S.toSubfield 
goal: (algebraMap K L).fieldRange ≤ S.toSubfield

full_name: IntermediateField.toSubalgebra_le_toSubalgebra
code: @[simp]
theorem toSubalgebra_le_toSubalgebra {S S' : IntermediateField K L} :
    S.toSubalgebra ≤ S'.toSubalgebra ↔ S ≤ S' 
goal: S.toSubalgebra ≤ S'.toSubalgebra ↔ S ≤ S'

full_name: IntermediateField.toSubalgebra_lt_toSubalgebra
code: @[simp]
theorem toSubalgebra_lt_toSubalgebra {S S' : IntermediateField K L} :
    S.toSubalgebra < S'.toSubalgebra ↔ S < S' 
goal: S.toSubalgebra < S'.toSubalgebra ↔ S < S'

full_name: IntermediateField.lift
code: /-- Lift an intermediate_field of an intermediate_field -/
def lift {F : IntermediateField K L} (E : IntermediateField K F) : IntermediateField K L 
goal: IntermediateField K L

full_name: IntermediateField.hasLift
code: instance hasLift {F : IntermediateField K L} :
    CoeOut (IntermediateField K F) (IntermediateField K L) 
goal: CoeOut (IntermediateField K ↥F) (IntermediateField K L)

full_name: IntermediateField.lift_injective
code: theorem lift_injective (F : IntermediateField K L) : Function.Injective F.lift 
goal: Function.Injective IntermediateField.lift

full_name: IntermediateField.lift_le
code: theorem lift_le {F : IntermediateField K L} (E : IntermediateField K F) : lift E ≤ F 
goal: IntermediateField.lift E ≤ F

full_name: IntermediateField.mem_lift
code: theorem mem_lift {F : IntermediateField K L} {E : IntermediateField K F} (x : F) :
    x.1 ∈ lift E ↔ x ∈ E 
goal: ↑x ∈ IntermediateField.lift E ↔ x ∈ E

full_name: IntermediateField.restrictScalars
code: /-- 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`. -/
def restrictScalars (E : IntermediateField L' L) : IntermediateField K L 
goal: IntermediateField K L

full_name: IntermediateField.coe_restrictScalars
code: @[simp]
theorem coe_restrictScalars {E : IntermediateField L' L} :
    (restrictScalars K E : Set L) = (E : Set L) 
goal: ↑(IntermediateField.restrictScalars K E) = ↑E

full_name: IntermediateField.restrictScalars_toSubalgebra
code: @[simp]
theorem restrictScalars_toSubalgebra {E : IntermediateField L' L} :
    (E.restrictScalars K).toSubalgebra = E.toSubalgebra.restrictScalars K 
goal: (IntermediateField.restrictScalars K E).toSubalgebra = Subalgebra.restrictScalars K E.toSubalgebra

full_name: IntermediateField.restrictScalars_toSubfield
code: @[simp]
theorem restrictScalars_toSubfield {E : IntermediateField L' L} :
    (E.restrictScalars K).toSubfield = E.toSubfield 
goal: (IntermediateField.restrictScalars K E).toSubfield = E.toSubfield

full_name: IntermediateField.mem_restrictScalars
code: @[simp]
theorem mem_restrictScalars {E : IntermediateField L' L} {x : L} :
    x ∈ restrictScalars K E ↔ x ∈ E 
goal: x ∈ IntermediateField.restrictScalars K E ↔ x ∈ E

full_name: IntermediateField.restrictScalars_injective
code: theorem restrictScalars_injective :
    Function.Injective (restrictScalars K : IntermediateField L' L → IntermediateField K L) 
goal: Function.Injective (IntermediateField.restrictScalars K)

full_name: Subfield.extendScalars
code: /-- 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`. -/
def extendScalars : IntermediateField F L 
goal: IntermediateField (↥F) L

full_name: Subfield.coe_extendScalars
code: @[simp]
theorem coe_extendScalars : (extendScalars h : Set L) = (E : Set L) 
goal: ↑(Subfield.extendScalars h) = ↑E

full_name: Subfield.extendScalars_toSubfield
code: @[simp]
theorem extendScalars_toSubfield : (extendScalars h).toSubfield = E 
goal: (Subfield.extendScalars h).toSubfield = E

full_name: Subfield.mem_extendScalars
code: @[simp]
theorem mem_extendScalars : x ∈ extendScalars h ↔ x ∈ E 
goal: x ∈ Subfield.extendScalars h ↔ x ∈ E

full_name: Subfield.extendScalars_le_extendScalars_iff
code: theorem extendScalars_le_extendScalars_iff : extendScalars h ≤ extendScalars h' ↔ E ≤ E' 
goal: Subfield.extendScalars h ≤ Subfield.extendScalars h' ↔ E ≤ E'

full_name: Subfield.extendScalars_le_iff
code: theorem extendScalars_le_iff (E' : IntermediateField F L) :
    extendScalars h ≤ E' ↔ E ≤ E'.toSubfield 
goal: Subfield.extendScalars h ≤ E' ↔ E ≤ E'.toSubfield

full_name: Subfield.le_extendScalars_iff
code: theorem le_extendScalars_iff (E' : IntermediateField F L) :
    E' ≤ extendScalars h ↔ E'.toSubfield ≤ E 
goal: E' ≤ Subfield.extendScalars h ↔ E'.toSubfield ≤ E

full_name: Subfield.extendScalars.orderIso
code: /-- `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`. -/
@[simps]
def extendScalars.orderIso :
    { E : Subfield L // F ≤ E } ≃o IntermediateField F L 
goal: { E // F ≤ E } ≃o IntermediateField (↥F) L

full_name: Subfield.extendScalars.orderIso_apply
code: /-- `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`. -/
@[simps]
def extendScalars.orderIso :
    { E : Subfield L // F ≤ E } ≃o IntermediateField F L 
goal: (Subfield.extendScalars.orderIso F) E = Subfield.extendScalars ⋯

full_name: Subfield.extendScalars.orderIso_symm_apply_coe
code: /-- `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`. -/
@[simps]
def extendScalars.orderIso :
    { E : Subfield L // F ≤ E } ≃o IntermediateField F L 
goal: ↑((RelIso.symm (Subfield.extendScalars.orderIso F)) E) = E.toSubfield

full_name: Subfield.extendScalars_injective
code: theorem extendScalars_injective :
    Function.Injective fun E : { E : Subfield L // F ≤ E } ↦ extendScalars E.2 
goal: Function.Injective fun E => Subfield.extendScalars ⋯

full_name: IntermediateField.extendScalars
code: /-- 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`. -/
def extendScalars : IntermediateField F L 
goal: IntermediateField (↥F) L

full_name: IntermediateField.coe_extendScalars
code: @[simp]
theorem coe_extendScalars : (extendScalars h : Set L) = (E : Set L) 
goal: ↑(IntermediateField.extendScalars h) = ↑E

full_name: IntermediateField.extendScalars_toSubfield
code: @[simp]
theorem extendScalars_toSubfield : (extendScalars h).toSubfield = E.toSubfield 
goal: (IntermediateField.extendScalars h).toSubfield = E.toSubfield

full_name: IntermediateField.mem_extendScalars
code: @[simp]
theorem mem_extendScalars : x ∈ extendScalars h ↔ x ∈ E 
goal: x ∈ IntermediateField.extendScalars h ↔ x ∈ E

full_name: IntermediateField.extendScalars_restrictScalars
code: @[simp]
theorem extendScalars_restrictScalars : (extendScalars h).restrictScalars K = E 
goal: IntermediateField.restrictScalars K (IntermediateField.extendScalars h) = E

full_name: IntermediateField.extendScalars_le_extendScalars_iff
code: theorem extendScalars_le_extendScalars_iff : extendScalars h ≤ extendScalars h' ↔ E ≤ E' 
goal: IntermediateField.extendScalars h ≤ IntermediateField.extendScalars h' ↔ E ≤ E'

full_name: IntermediateField.extendScalars_le_iff
code: theorem extendScalars_le_iff (E' : IntermediateField F L) :
    extendScalars h ≤ E' ↔ E ≤ E'.restrictScalars K 
goal: IntermediateField.extendScalars h ≤ E' ↔ E ≤ IntermediateField.restrictScalars K E'

full_name: IntermediateField.le_extendScalars_iff
code: theorem le_extendScalars_iff (E' : IntermediateField F L) :
    E' ≤ extendScalars h ↔ E'.restrictScalars K ≤ E 
goal: E' ≤ IntermediateField.extendScalars h ↔ IntermediateField.restrictScalars K E' ≤ E

full_name: IntermediateField.extendScalars.orderIso_symm_apply_coe
code: /-- `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`. -/
@[simps]
def extendScalars.orderIso : { E : IntermediateField K L // F ≤ E } ≃o IntermediateField F L 
goal: ↑((RelIso.symm (IntermediateField.extendScalars.orderIso F)) E) = IntermediateField.restrictScalars K E

full_name: IntermediateField.extendScalars.orderIso
code: /-- `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`. -/
@[simps]
def extendScalars.orderIso : { E : IntermediateField K L // F ≤ E } ≃o IntermediateField F L 
goal: { E // F ≤ E } ≃o IntermediateField (↥F) L

full_name: IntermediateField.extendScalars.orderIso_apply
code: /-- `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`. -/
@[simps]
def extendScalars.orderIso : { E : IntermediateField K L // F ≤ E } ≃o IntermediateField F L 
goal: (IntermediateField.extendScalars.orderIso F) E = IntermediateField.extendScalars ⋯

full_name: IntermediateField.extendScalars_injective
code: theorem extendScalars_injective :
    Function.Injective fun E : { E : IntermediateField K L // F ≤ E } ↦ extendScalars E.2 
goal: Function.Injective fun E => IntermediateField.extendScalars ⋯

full_name: IntermediateField.restrict
code: /--
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`.
-/
def restrict : IntermediateField K E 
goal: IntermediateField K ↥E

full_name: IntermediateField.mem_restrict
code: theorem mem_restrict (x : E) : x ∈ restrict h ↔ x.1 ∈ F 
goal: x ∈ IntermediateField.restrict h ↔ ↑x ∈ F

full_name: IntermediateField.lift_restrict
code: @[simp]
theorem lift_restrict : lift (restrict h) = F 
goal: IntermediateField.lift (IntermediateField.restrict h) = F

full_name: IntermediateField.restrict_algEquiv
code: /--
`F` is equivalent to `F` as an intermediate field of `E / K`.
-/
noncomputable def restrict_algEquiv :
    F ≃ₐ[K] ↥(IntermediateField.restrict h) 
goal: ↥F ≃ₐ[K] ↥(IntermediateField.restrict h)

full_name: IntermediateField.finiteDimensional_left
code: instance finiteDimensional_left [FiniteDimensional K L] : FiniteDimensional K F 
goal: FiniteDimensional K ↥F

full_name: IntermediateField.finiteDimensional_right
code: instance finiteDimensional_right [FiniteDimensional K L] : FiniteDimensional F L 
goal: FiniteDimensional (↥F) L

full_name: IntermediateField.rank_eq_rank_subalgebra
code: @[simp]
theorem rank_eq_rank_subalgebra : Module.rank K F.toSubalgebra = Module.rank K F 
goal: Module.rank K ↥F.toSubalgebra = Module.rank K ↥F

full_name: IntermediateField.finrank_eq_finrank_subalgebra
code: @[simp]
theorem finrank_eq_finrank_subalgebra : finrank K F.toSubalgebra = finrank K F 
goal: FiniteDimensional.finrank K ↥F.toSubalgebra = FiniteDimensional.finrank K ↥F

full_name: IntermediateField.toSubalgebra_eq_iff
code: @[simp]
theorem toSubalgebra_eq_iff : F.toSubalgebra = E.toSubalgebra ↔ F = E 
goal: F.toSubalgebra = E.toSubalgebra ↔ F = E

full_name: IntermediateField.eq_of_le_of_finrank_le
code: /-- If `F ≤ E` are two intermediate fields of `L / K` such that `[E : K] ≤ [F : K]` are finite,
then `F = E`. -/
theorem eq_of_le_of_finrank_le [hfin : FiniteDimensional K E] (h_le : F ≤ E)
    (h_finrank : finrank K E ≤ finrank K F) : F = E 
goal: F = E

full_name: IntermediateField.eq_of_le_of_finrank_eq
code: /-- If `F ≤ E` are two intermediate fields of `L / K` such that `[F : K] = [E : K]` are finite,
then `F = E`. -/
theorem eq_of_le_of_finrank_eq [FiniteDimensional K E] (h_le : F ≤ E)
    (h_finrank : finrank K F = finrank K E) : F = E 
goal: F = E

full_name: _private.Mathlib.FieldTheory.IntermediateField.0.IntermediateField.eq_of_le_of_finrank_le''
code: private theorem eq_of_le_of_finrank_le'' [FiniteDimensional K L] (h_le : F ≤ E)
    (h_finrank : finrank F L ≤ finrank E L) : F = E 
goal: F = E

full_name: IntermediateField.eq_of_le_of_finrank_le'
code: /-- If `F ≤ E` are two intermediate fields of `L / K` such that `[L : F] ≤ [L : E]` are finite,
then `F = E`. -/
theorem eq_of_le_of_finrank_le' [FiniteDimensional F L] (h_le : F ≤ E)
    (h_finrank : finrank F L ≤ finrank E L) : F = E 
goal: F = E

full_name: IntermediateField.eq_of_le_of_finrank_eq'
code: /-- If `F ≤ E` are two intermediate fields of `L / K` such that `[L : F] = [L : E]` are finite,
then `F = E`. -/
theorem eq_of_le_of_finrank_eq' [FiniteDimensional F L] (h_le : F ≤ E)
    (h_finrank : finrank F L = finrank E L) : F = E 
goal: F = E

full_name: IntermediateField.isAlgebraic_iff
code: theorem isAlgebraic_iff {x : S} : IsAlgebraic K x ↔ IsAlgebraic K (x : L) 
goal: IsAlgebraic K x ↔ IsAlgebraic K ↑x

full_name: IntermediateField.isIntegral_iff
code: theorem isIntegral_iff {x : S} : IsIntegral K x ↔ IsIntegral K (x : L) 
goal: IsIntegral K x ↔ IsIntegral K ↑x

full_name: IntermediateField.minpoly_eq
code: theorem minpoly_eq (x : S) : minpoly K x = minpoly K (x : L) 
goal: minpoly K x = minpoly K ↑x

full_name: subalgebraEquivIntermediateField
code: /-- If `L/K` is algebraic, the `K`-subalgebras of `L` are all fields.  -/
def subalgebraEquivIntermediateField [Algebra.IsAlgebraic K L] :
    Subalgebra K L ≃o IntermediateField K L 
goal: Subalgebra K L ≃o IntermediateField K L

full_name: mem_subalgebraEquivIntermediateField
code: @[simp]
theorem mem_subalgebraEquivIntermediateField [Algebra.IsAlgebraic K L] {S : Subalgebra K L}
    {x : L} : x ∈ subalgebraEquivIntermediateField S ↔ x ∈ S 
goal: x ∈ subalgebraEquivIntermediateField S ↔ x ∈ S

full_name: mem_subalgebraEquivIntermediateField_symm
code: @[simp]
theorem mem_subalgebraEquivIntermediateField_symm [Algebra.IsAlgebraic K L]
    {S : IntermediateField K L} {x : L} :
    x ∈ subalgebraEquivIntermediateField.symm S ↔ x ∈ S 
goal: x ∈ subalgebraEquivIntermediateField.symm S ↔ x ∈ S