Theorem: IsAlgClosed.lift_def
File: Mathlib/FieldTheory/IsAlgClosed/Basic.lean

Proof steps:
state_before: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
⊢ S →ₐ[R] M
state_after: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
⊢ S →ₐ[R] M
tactic: letI : IsDomain R := (NoZeroSMulDivisors.algebraMap_injective R S).isDomain _
state_before: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
⊢ S →ₐ[R] M
state_after: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
⊢ S →ₐ[R] M
tactic: letI := FractionRing.liftAlgebra R M
state_before: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
⊢ S →ₐ[R] M
state_after: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝¹ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝ : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
⊢ S →ₐ[R] M
tactic: letI := FractionRing.liftAlgebra R (FractionRing S)
state_before: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝¹ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝ : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
⊢ S →ₐ[R] M
state_after: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝² : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝¹ : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this✝ : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
this : IsScalarTower R (FractionRing R) M
⊢ S →ₐ[R] M
tactic: have := FractionRing.isScalarTower_liftAlgebra R M
state_before: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝² : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝¹ : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this✝ : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
this : IsScalarTower R (FractionRing R) M
⊢ S →ₐ[R] M
state_after: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝³ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝² : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this✝¹ : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
this✝ : IsScalarTower R (FractionRing R) M
this : IsScalarTower R (FractionRing R) (FractionRing S)
⊢ S →ₐ[R] M
tactic: have := FractionRing.isScalarTower_liftAlgebra R (FractionRing S)
state_before: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝³ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝² : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this✝¹ : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
this✝ : IsScalarTower R (FractionRing R) M
this : IsScalarTower R (FractionRing R) (FractionRing S)
⊢ S →ₐ[R] M
state_after: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝³ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝² : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this✝¹ : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
this✝ : IsScalarTower R (FractionRing R) M
this : IsScalarTower R (FractionRing R) (FractionRing S)
f : FractionRing S →ₐ[FractionRing R] M := IsAlgClosed.lift_aux (FractionRing R) (FractionRing S) M
⊢ S →ₐ[R] M
tactic: let f : FractionRing S →ₐ[FractionRing R] M := lift_aux (FractionRing R) (FractionRing S) M
state_before: k : Type u
inst✝¹⁵ : Field k
K : Type u
inst✝¹⁴ : Field K
L : Type v
M : Type w
inst✝¹³ : Field L
inst✝¹² : Algebra K L
inst✝¹¹ : Field M
inst✝¹⁰ : Algebra K M
inst✝⁹ : IsAlgClosed M
inst✝⁸ : Algebra.IsAlgebraic K L
R : Type u
inst✝⁷ : CommRing R
S : Type v
inst✝⁶ : CommRing S
inst✝⁵ : IsDomain S
inst✝⁴ : Algebra R S
inst✝³ : Algebra R M
inst✝² : NoZeroSMulDivisors R S
inst✝¹ : NoZeroSMulDivisors R M
inst✝ : Algebra.IsAlgebraic R S
this✝³ : IsDomain R := Function.Injective.isDomain (algebraMap R S) (NoZeroSMulDivisors.algebraMap_injective R S)
this✝² : Algebra (FractionRing R) M := FractionRing.liftAlgebra R M
this✝¹ : Algebra (FractionRing R) (FractionRing S) := FractionRing.liftAlgebra R (FractionRing S)
this✝ : IsScalarTower R (FractionRing R) M
this : IsScalarTower R (FractionRing R) (FractionRing S)
f : FractionRing S →ₐ[FractionRing R] M := IsAlgClosed.lift_aux (FractionRing R) (FractionRing S) M
⊢ S →ₐ[R] M
state_after: no goals
tactic: exact (f.restrictScalars R).comp ((Algebra.ofId S (FractionRing S)).restrictScalars R)