File: Mathlib/FieldTheory/Extension.lean

full_name: IntermediateField.Lifts.carrier
code: /-- Lifts `L → K` of `F → K` -/
structure Lifts where
  /-- The domain of a lift. -/
  carrier : IntermediateField F E
  /-- The lifted RingHom, expressed as an AlgHom. -/
  emb : carrier →ₐ[F] K
goal: IntermediateField F E

full_name: IntermediateField.Lifts.emb
code: /-- Lifts `L → K` of `F → K` -/
structure Lifts where
  /-- The domain of a lift. -/
  carrier : IntermediateField F E
  /-- The lifted RingHom, expressed as an AlgHom. -/
  emb : carrier →ₐ[F] K
goal: ↥self.carrier →ₐ[F] K

full_name: IntermediateField.Lifts
code: /-- Lifts `L → K` of `F → K` -/
structure Lifts where
  /-- The domain of a lift. -/
  carrier : IntermediateField F E
  /-- The lifted RingHom, expressed as an AlgHom. -/
  emb : carrier →ₐ[F] K
goal: Type (max u_2 u_3)

full_name: IntermediateField.instPartialOrderLifts
code: instance : PartialOrder (Lifts F E K) 
goal: PartialOrder (IntermediateField.Lifts F E K)

full_name: IntermediateField.instOrderBotLifts
code: noncomputable instance : OrderBot (Lifts F E K) 
goal: OrderBot (IntermediateField.Lifts F E K)

full_name: IntermediateField.instInhabitedLifts
code: noncomputable instance : Inhabited (Lifts F E K) 
goal: Inhabited (IntermediateField.Lifts F E K)

full_name: IntermediateField.Lifts.exists_upper_bound
code: /-- A chain of lifts has an upper bound. -/
theorem Lifts.exists_upper_bound (c : Set (Lifts F E K)) (hc : IsChain (· ≤ ·) c) :
    ∃ ub, ∀ a ∈ c, a ≤ ub 
goal: ∃ ub, ∀ a ∈ c, a ≤ ub

full_name: IntermediateField.Lifts.exists_lift_of_splits'
code: /-- Given a lift `x` and an integral element `s : E` over `x.carrier` whose conjugates over
`x.carrier` are all in `K`, we can extend the lift to a lift whose carrier contains `s`. -/
theorem Lifts.exists_lift_of_splits' (x : Lifts F E K) {s : E} (h1 : IsIntegral x.carrier s)
    (h2 : (minpoly x.carrier s).Splits x.emb.toRingHom) : ∃ y, x ≤ y ∧ s ∈ y.carrier 
goal: ∃ y, x ≤ y ∧ s ∈ y.carrier

full_name: IntermediateField.Lifts.exists_lift_of_splits
code: /-- Given an integral element `s : E` over `F` whose `F`-conjugates are all in `K`,
any lift can be extended to one whose carrier contains `s`. -/
theorem Lifts.exists_lift_of_splits (x : Lifts F E K) {s : E} (h1 : IsIntegral F s)
    (h2 : (minpoly F s).Splits (algebraMap F K)) : ∃ y, x ≤ y ∧ s ∈ y.carrier 
goal: ∃ y, x ≤ y ∧ s ∈ y.carrier

full_name: _private.Mathlib.FieldTheory.Extension.0.IntermediateField.exists_algHom_adjoin_of_splits''
code: private theorem exists_algHom_adjoin_of_splits'' {L : IntermediateField F E}
    (f : L →ₐ[F] K) (hK : ∀ s ∈ S, IsIntegral L s ∧ (minpoly L s).Splits f.toRingHom) :
    ∃ φ : adjoin L S →ₐ[F] K, φ.comp (IsScalarTower.toAlgHom F L _) = f 
goal: ∃ φ, φ.comp (IsScalarTower.toAlgHom F ↥L ↥(IntermediateField.adjoin (↥L) S)) = f

full_name: IntermediateField.exists_algHom_adjoin_of_splits'
code: theorem exists_algHom_adjoin_of_splits' :
    ∃ φ : adjoin L S →ₐ[F] K, φ.comp (IsScalarTower.toAlgHom F L _) = f 
goal: ∃ φ, φ.comp (IsScalarTower.toAlgHom F L ↥(IntermediateField.adjoin L S)) = f

full_name: IntermediateField.exists_algHom_of_adjoin_splits'
code: theorem exists_algHom_of_adjoin_splits' (hS : adjoin L S = ⊤) :
    ∃ φ : E →ₐ[F] K, φ.comp (IsScalarTower.toAlgHom F L E) = f 
goal: ∃ φ, φ.comp (IsScalarTower.toAlgHom F L E) = f

full_name: IntermediateField.exists_algHom_of_splits'
code: theorem exists_algHom_of_splits' (hK : ∀ s : E, IsIntegral L s ∧ (minpoly L s).Splits f.toRingHom) :
    ∃ φ : E →ₐ[F] K, φ.comp (IsScalarTower.toAlgHom F L E) = f 
goal: ∃ φ, φ.comp (IsScalarTower.toAlgHom F L E) = f

full_name: IntermediateField.exists_algHom_adjoin_of_splits
code: theorem exists_algHom_adjoin_of_splits : ∃ φ : adjoin F S →ₐ[F] K, φ.comp (inclusion hL) = f 
goal: ∃ φ, φ.comp (IntermediateField.inclusion hL) = f

full_name: IntermediateField.nonempty_algHom_adjoin_of_splits
code: theorem nonempty_algHom_adjoin_of_splits : Nonempty (adjoin F S →ₐ[F] K) 
goal: Nonempty (↥(IntermediateField.adjoin F S) →ₐ[F] K)

full_name: IntermediateField.exists_algHom_of_adjoin_splits
code: theorem exists_algHom_of_adjoin_splits : ∃ φ : E →ₐ[F] K, φ.comp L.val = f 
goal: ∃ φ, φ.comp L.val = f

full_name: IntermediateField.nonempty_algHom_of_adjoin_splits
code: theorem nonempty_algHom_of_adjoin_splits : Nonempty (E →ₐ[F] K) 
goal: Nonempty (E →ₐ[F] K)

full_name: IntermediateField.exists_algHom_adjoin_of_splits_of_aeval
code: theorem exists_algHom_adjoin_of_splits_of_aeval : ∃ φ : adjoin F S →ₐ[F] K, φ ⟨x, hx⟩ = y 
goal: ∃ φ, φ ⟨x, hx⟩ = y

full_name: IntermediateField.exists_algHom_of_adjoin_splits_of_aeval
code: theorem exists_algHom_of_adjoin_splits_of_aeval : ∃ φ : E →ₐ[F] K, φ x = y 
goal: ∃ φ, φ x = y

full_name: IntermediateField.exists_algHom_of_splits
code: theorem exists_algHom_of_splits : ∃ φ : E →ₐ[F] K, φ.comp L.val = f 
goal: ∃ φ, φ.comp L.val = f

full_name: IntermediateField.nonempty_algHom_of_splits
code: theorem nonempty_algHom_of_splits : Nonempty (E →ₐ[F] K) 
goal: Nonempty (E →ₐ[F] K)

full_name: IntermediateField.exists_algHom_of_splits_of_aeval
code: theorem exists_algHom_of_splits_of_aeval : ∃ φ : E →ₐ[F] K, φ x = y 
goal: ∃ φ, φ x = y

full_name: Algebra.IsAlgebraic.range_eval_eq_rootSet_minpoly_of_splits
code: /-- Let `K/F` be an algebraic extension of fields and `L` a field in which all the minimal
polynomial over `F` of elements of `K` splits. Then, for `x ∈ K`, the images of `x` by the
`F`-algebra morphisms from `K` to `L` are exactly the roots in `L` of the minimal polynomial
of `x` over `F`. -/
theorem Algebra.IsAlgebraic.range_eval_eq_rootSet_minpoly_of_splits {F K : Type*} (L : Type*)
    [Field F] [Field K] [Field L] [Algebra F L] [Algebra F K]
    (hA : ∀ x : K, (minpoly F x).Splits (algebraMap F L))
    [Algebra.IsAlgebraic F K] (x : K) :
    (Set.range fun (ψ : K →ₐ[F] L) => ψ x) = (minpoly F x).rootSet L 
goal: (Set.range fun ψ => ψ x) = (minpoly F x).rootSet L