Theorem: Ideal.spanIntNorm_localization (FltRegular/NumberTheory/IdealNorm.lean)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
let K := FractionRing R
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
let f : Rₘ →+* K := IsLocalization.map _ (T := R⁰) (RingHom.id R) hM
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
letI := f.toAlgebra
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this : Algebra Rₘ K := f.toAlgebra
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this : Algebra Rₘ K := f.toAlgebra
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
have : IsScalarTower R Rₘ K := IsScalarTower.of_algebraMap_eq'
  (by rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHomCompTriple.comp_eq])
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝ : Algebra Rₘ K := f.toAlgebra
this : IsScalarTower R Rₘ K
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝ : Algebra Rₘ K := f.toAlgebra
this : IsScalarTower R Rₘ K
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
letI := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝¹ : Algebra Rₘ K := f.toAlgebra
this✝ : IsScalarTower R Rₘ K
this : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝¹ : Algebra Rₘ K := f.toAlgebra
this✝ : IsScalarTower R Rₘ K
this : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
let L := FractionRing S
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝¹ : Algebra Rₘ K := f.toAlgebra
this✝ : IsScalarTower R Rₘ K
this : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝¹ : Algebra Rₘ K := f.toAlgebra
this✝ : IsScalarTower R Rₘ K
this : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
let g : Sₘ →+* L := IsLocalization.map _ (M := Algebra.algebraMapSubmonoid S M) (T := S⁰)
    (RingHom.id S) (Submonoid.map_le_of_le_comap _ <| hM.trans
    (nonZeroDivisors_le_comap_nonZeroDivisors_of_injective _
      (NoZeroSMulDivisors.algebraMap_injective _ _)))
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝¹ : Algebra Rₘ K := f.toAlgebra
this✝ : IsScalarTower R Rₘ K
this : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝¹ : Algebra Rₘ K := f.toAlgebra
this✝ : IsScalarTower R Rₘ K
this : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
letI := g.toAlgebra
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝² : Algebra Rₘ K := f.toAlgebra
this✝¹ : IsScalarTower R Rₘ K
this✝ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this : Algebra Sₘ L := g.toAlgebra
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝² : Algebra Rₘ K := f.toAlgebra
this✝¹ : IsScalarTower R Rₘ K
this✝ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this : Algebra Sₘ L := g.toAlgebra
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
have : IsScalarTower S Sₘ L := IsScalarTower.of_algebraMap_eq'
  (by rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHomCompTriple.comp_eq])
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝³ : Algebra Rₘ K := f.toAlgebra
this✝² : IsScalarTower R Rₘ K
this✝¹ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝ : Algebra Sₘ L := g.toAlgebra
this : IsScalarTower S Sₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝³ : Algebra Rₘ K := f.toAlgebra
this✝² : IsScalarTower R Rₘ K
this✝¹ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝ : Algebra Sₘ L := g.toAlgebra
this : IsScalarTower S Sₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
letI := ((algebraMap K L).comp f).toAlgebra
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁴ : Algebra Rₘ K := f.toAlgebra
this✝³ : IsScalarTower R Rₘ K
this✝² : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝¹ : Algebra Sₘ L := g.toAlgebra
this✝ : IsScalarTower S Sₘ L
this : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁴ : Algebra Rₘ K := f.toAlgebra
this✝³ : IsScalarTower R Rₘ K
this✝² : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝¹ : Algebra Sₘ L := g.toAlgebra
this✝ : IsScalarTower S Sₘ L
this : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
haveI : IsScalarTower Rₘ K L := IsScalarTower.of_algebraMap_eq' rfl
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁵ : Algebra Rₘ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₘ K
this✝³ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝² : Algebra Sₘ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₘ L
this✝ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₘ K L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁵ : Algebra Rₘ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₘ K
this✝³ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝² : Algebra Sₘ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₘ L
this✝ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₘ K L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
haveI : IsScalarTower Rₘ Sₘ L := by
  apply IsScalarTower.of_algebraMap_eq'
  apply IsLocalization.ringHom_ext M
  rw [RingHom.algebraMap_toAlgebra, RingHom.algebraMap_toAlgebra (R := Sₘ), RingHom.comp_assoc,
    RingHom.comp_assoc, ← IsScalarTower.algebraMap_eq, IsScalarTower.algebraMap_eq R S Sₘ,
    IsLocalization.map_comp, RingHom.comp_id, ← RingHom.comp_assoc, IsLocalization.map_comp,
    RingHom.comp_id, ← IsScalarTower.algebraMap_eq, ← IsScalarTower.algebraMap_eq]
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁶ : Algebra Rₘ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₘ K
this✝⁴ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝³ : Algebra Sₘ L := g.toAlgebra
this✝² : IsScalarTower S Sₘ L
this✝¹ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝ : IsScalarTower Rₘ K L
this : IsScalarTower Rₘ Sₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁶ : Algebra Rₘ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₘ K
this✝⁴ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝³ : Algebra Sₘ L := g.toAlgebra
this✝² : IsScalarTower S Sₘ L
this✝¹ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝ : IsScalarTower Rₘ K L
this : IsScalarTower Rₘ Sₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
letI := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization
  (Algebra.algebraMapSubmonoid S M) Sₘ L
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁷ : Algebra Rₘ K := f.toAlgebra
this✝⁶ : IsScalarTower R Rₘ K
this✝⁵ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁴ : Algebra Sₘ L := g.toAlgebra
this✝³ : IsScalarTower S Sₘ L
this✝² : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₘ K L
this✝ : IsScalarTower Rₘ Sₘ L
this : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁷ : Algebra Rₘ K := f.toAlgebra
this✝⁶ : IsScalarTower R Rₘ K
this✝⁵ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁴ : Algebra Sₘ L := g.toAlgebra
this✝³ : IsScalarTower S Sₘ L
this✝² : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₘ K L
this✝ : IsScalarTower Rₘ Sₘ L
this : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
haveI : IsIntegralClosure Sₘ Rₘ L :=
  IsIntegralClosure.of_isIntegrallyClosed _ _ _
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = map (algebraMap R Rₘ) (spanIntNorm R I)
Tactic:
rw [map_spanIntNorm]
State after:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = span (⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) '' ↑I)

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ spanIntNorm Rₘ (map (algebraMap S Sₘ) I) = span (⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) '' ↑I)
Tactic:
refine span_eq_span (Set.image_subset_iff.mpr ?_) (Set.image_subset_iff.mpr ?_)
State after:
case refine_1
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ ↑(map (algebraMap S Sₘ) I) ⊆
    ⇑(Algebra.intNorm Rₘ Sₘ) ⁻¹' ↑(Submodule.span Rₘ (⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) '' ↑I))

case refine_2
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ ↑I ⊆
    ⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) ⁻¹'
      ↑(Submodule.span Rₘ (⇑(Algebra.intNorm Rₘ Sₘ) '' ↑(map (algebraMap S Sₘ) I)))

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this : Algebra Rₘ K := f.toAlgebra
⊢ algebraMap R K = (algebraMap Rₘ K).comp (algebraMap R Rₘ)
Tactic:
rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHomCompTriple.comp_eq]
State after:
no goals

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝² : Algebra Rₘ K := f.toAlgebra
this✝¹ : IsScalarTower R Rₘ K
this✝ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this : Algebra Sₘ L := g.toAlgebra
⊢ algebraMap S L = (algebraMap Sₘ L).comp (algebraMap S Sₘ)
Tactic:
rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHomCompTriple.comp_eq]
State after:
no goals

State before:
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁵ : Algebra Rₘ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₘ K
this✝³ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝² : Algebra Sₘ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₘ L
this✝ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₘ K L
⊢ IsScalarTower Rₘ Sₘ L
Tactic:
apply IsScalarTower.of_algebraMap_eq'
State after:
case h
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁵ : Algebra Rₘ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₘ K
this✝³ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝² : Algebra Sₘ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₘ L
this✝ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₘ K L
⊢ algebraMap Rₘ L = (algebraMap Sₘ L).comp (algebraMap Rₘ Sₘ)

State before:
case h
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁵ : Algebra Rₘ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₘ K
this✝³ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝² : Algebra Sₘ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₘ L
this✝ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₘ K L
⊢ algebraMap Rₘ L = (algebraMap Sₘ L).comp (algebraMap Rₘ Sₘ)
Tactic:
apply IsLocalization.ringHom_ext M
State after:
case h.h
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁵ : Algebra Rₘ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₘ K
this✝³ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝² : Algebra Sₘ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₘ L
this✝ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₘ K L
⊢ (algebraMap Rₘ L).comp (algebraMap R Rₘ) = ((algebraMap Sₘ L).comp (algebraMap Rₘ Sₘ)).comp (algebraMap R Rₘ)

State before:
case h.h
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁵ : Algebra Rₘ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₘ K
this✝³ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝² : Algebra Sₘ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₘ L
this✝ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₘ K L
⊢ (algebraMap Rₘ L).comp (algebraMap R Rₘ) = ((algebraMap Sₘ L).comp (algebraMap Rₘ Sₘ)).comp (algebraMap R Rₘ)
Tactic:
rw [RingHom.algebraMap_toAlgebra, RingHom.algebraMap_toAlgebra (R := Sₘ), RingHom.comp_assoc,
  RingHom.comp_assoc, ← IsScalarTower.algebraMap_eq, IsScalarTower.algebraMap_eq R S Sₘ,
  IsLocalization.map_comp, RingHom.comp_id, ← RingHom.comp_assoc, IsLocalization.map_comp,
  RingHom.comp_id, ← IsScalarTower.algebraMap_eq, ← IsScalarTower.algebraMap_eq]
State after:
no goals

State before:
case refine_1
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ ↑(map (algebraMap S Sₘ) I) ⊆
    ⇑(Algebra.intNorm Rₘ Sₘ) ⁻¹' ↑(Submodule.span Rₘ (⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) '' ↑I))
Tactic:
rintro a' ha'
State after:
case refine_1
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
ha' : a' ∈ ↑(map (algebraMap S Sₘ) I)
⊢ a' ∈ ⇑(Algebra.intNorm Rₘ Sₘ) ⁻¹' ↑(Submodule.span Rₘ (⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) '' ↑I))

State before:
case refine_1
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
ha' : a' ∈ ↑(map (algebraMap S Sₘ) I)
⊢ a' ∈ ⇑(Algebra.intNorm Rₘ Sₘ) ⁻¹' ↑(Submodule.span Rₘ (⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) '' ↑I))
Tactic:
simp only [Set.mem_preimage, submodule_span_eq, ← map_spanIntNorm, SetLike.mem_coe,
  IsLocalization.mem_map_algebraMap_iff (Algebra.algebraMapSubmonoid S M) Sₘ,
  IsLocalization.mem_map_algebraMap_iff M Rₘ, Prod.exists] at ha' ⊢
State after:
case refine_1
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
ha' : ∃ a b, a' * (algebraMap S Sₘ) ↑b = (algebraMap S Sₘ) ↑a
⊢ ∃ a b, (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) ↑b = (algebraMap R Rₘ) ↑a

State before:
case refine_1
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
ha' : ∃ a b, a' * (algebraMap S Sₘ) ↑b = (algebraMap S Sₘ) ↑a
⊢ ∃ a b, (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) ↑b = (algebraMap R Rₘ) ↑a
Tactic:
obtain ⟨⟨a, ha⟩, ⟨_, ⟨s, hs, rfl⟩⟩, has⟩ := ha'
State after:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : a' * (algebraMap S Sₘ) ↑⟨(algebraMap R S) s, ⋯⟩ = (algebraMap S Sₘ) ↑⟨a, ha⟩
⊢ ∃ a b, (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) ↑b = (algebraMap R Rₘ) ↑a

State before:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : a' * (algebraMap S Sₘ) ↑⟨(algebraMap R S) s, ⋯⟩ = (algebraMap S Sₘ) ↑⟨a, ha⟩
⊢ ∃ a b, (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) ↑b = (algebraMap R Rₘ) ↑a
Tactic:
refine ⟨⟨Algebra.intNorm R S a, intNorm_mem_spanIntNorm _ _ ha⟩,
  ⟨s ^ FiniteDimensional.finrank K L, pow_mem hs _⟩, ?_⟩
State after:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : a' * (algebraMap S Sₘ) ↑⟨(algebraMap R S) s, ⋯⟩ = (algebraMap S Sₘ) ↑⟨a, ha⟩
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) ↑⟨s ^ FiniteDimensional.finrank K L, ⋯⟩ =
    (algebraMap R Rₘ) ↑⟨(Algebra.intNorm R S) a, ⋯⟩

State before:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : a' * (algebraMap S Sₘ) ↑⟨(algebraMap R S) s, ⋯⟩ = (algebraMap S Sₘ) ↑⟨a, ha⟩
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) ↑⟨s ^ FiniteDimensional.finrank K L, ⋯⟩ =
    (algebraMap R Rₘ) ↑⟨(Algebra.intNorm R S) a, ⋯⟩
Tactic:
simp only [Submodule.coe_mk, Subtype.coe_mk, map_pow] at has ⊢
State after:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : a' * (algebraMap S Sₘ) ((algebraMap R S) s) = (algebraMap S Sₘ) a
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)

State before:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : a' * (algebraMap S Sₘ) ((algebraMap R S) s) = (algebraMap S Sₘ) a
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)
Tactic:
apply_fun algebraMap _ L at has
State after:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : (algebraMap Sₘ L) (a' * (algebraMap S Sₘ) ((algebraMap R S) s)) = (algebraMap Sₘ L) ((algebraMap S Sₘ) a)
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)

State before:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has : (algebraMap Sₘ L) (a' * (algebraMap S Sₘ) ((algebraMap R S) s)) = (algebraMap Sₘ L) ((algebraMap S Sₘ) a)
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)
Tactic:
apply_fun Algebra.norm K at has
State after:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) (a' * (algebraMap S Sₘ) ((algebraMap R S) s))) =
    (Algebra.norm K) ((algebraMap Sₘ L) ((algebraMap S Sₘ) a))
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)

State before:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) (a' * (algebraMap S Sₘ) ((algebraMap R S) s))) =
    (Algebra.norm K) ((algebraMap Sₘ L) ((algebraMap S Sₘ) a))
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)
Tactic:
simp only [_root_.map_mul, IsScalarTower.algebraMap_apply R Rₘ Sₘ] at has
State after:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') *
      (Algebra.norm K) ((algebraMap Sₘ L) ((algebraMap S Sₘ) ((algebraMap R S) s))) =
    (Algebra.norm K) ((algebraMap Sₘ L) ((algebraMap S Sₘ) a))
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)

State before:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') *
      (Algebra.norm K) ((algebraMap Sₘ L) ((algebraMap S Sₘ) ((algebraMap R S) s))) =
    (Algebra.norm K) ((algebraMap Sₘ L) ((algebraMap S Sₘ) a))
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)
Tactic:
rw [← IsScalarTower.algebraMap_apply, ← IsScalarTower.algebraMap_apply,
  ← IsScalarTower.algebraMap_apply,
  IsScalarTower.algebraMap_apply R K L,
  Algebra.norm_algebraMap] at has
State after:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') * (algebraMap R K) s ^ FiniteDimensional.finrank K L =
    (Algebra.norm K) ((algebraMap S L) a)
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)

State before:
case refine_1.intro.mk.intro.mk.intro.intro
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') * (algebraMap R K) s ^ FiniteDimensional.finrank K L =
    (Algebra.norm K) ((algebraMap S L) a)
⊢ (Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L =
    (algebraMap R Rₘ) ((Algebra.intNorm R S) a)
Tactic:
apply IsFractionRing.injective Rₘ K
State after:
case refine_1.intro.mk.intro.mk.intro.intro.a
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') * (algebraMap R K) s ^ FiniteDimensional.finrank K L =
    (Algebra.norm K) ((algebraMap S L) a)
⊢ (algebraMap Rₘ K) ((Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L) =
    (algebraMap Rₘ K) ((algebraMap R Rₘ) ((Algebra.intNorm R S) a))

State before:
case refine_1.intro.mk.intro.mk.intro.intro.a
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') * (algebraMap R K) s ^ FiniteDimensional.finrank K L =
    (Algebra.norm K) ((algebraMap S L) a)
⊢ (algebraMap Rₘ K) ((Algebra.intNorm Rₘ Sₘ) a' * (algebraMap R Rₘ) s ^ FiniteDimensional.finrank K L) =
    (algebraMap Rₘ K) ((algebraMap R Rₘ) ((Algebra.intNorm R S) a))
Tactic:
simp only [_root_.map_mul, map_pow]
State after:
case refine_1.intro.mk.intro.mk.intro.intro.a
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') * (algebraMap R K) s ^ FiniteDimensional.finrank K L =
    (Algebra.norm K) ((algebraMap S L) a)
⊢ (algebraMap Rₘ K) ((Algebra.intNorm Rₘ Sₘ) a') *
      (algebraMap Rₘ K) ((algebraMap R Rₘ) s) ^ FiniteDimensional.finrank K L =
    (algebraMap Rₘ K) ((algebraMap R Rₘ) ((Algebra.intNorm R S) a))

State before:
case refine_1.intro.mk.intro.mk.intro.intro.a
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a' : Sₘ
a : S
ha : a ∈ I
s : R
hs : s ∈ ↑M
has :
  (Algebra.norm K) ((algebraMap Sₘ L) a') * (algebraMap R K) s ^ FiniteDimensional.finrank K L =
    (Algebra.norm K) ((algebraMap S L) a)
⊢ (algebraMap Rₘ K) ((Algebra.intNorm Rₘ Sₘ) a') *
      (algebraMap Rₘ K) ((algebraMap R Rₘ) s) ^ FiniteDimensional.finrank K L =
    (algebraMap Rₘ K) ((algebraMap R Rₘ) ((Algebra.intNorm R S) a))
Tactic:
rwa [Algebra.algebraMap_intNorm (L := L), ← IsScalarTower.algebraMap_apply,
  ← IsScalarTower.algebraMap_apply, Algebra.algebraMap_intNorm (L := L)]
State after:
no goals

State before:
case refine_2
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
⊢ ↑I ⊆
    ⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) ⁻¹'
      ↑(Submodule.span Rₘ (⇑(Algebra.intNorm Rₘ Sₘ) '' ↑(map (algebraMap S Sₘ) I)))
Tactic:
intro a ha
State after:
case refine_2
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a : S
ha : a ∈ ↑I
⊢ a ∈
    ⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) ⁻¹'
      ↑(Submodule.span Rₘ (⇑(Algebra.intNorm Rₘ Sₘ) '' ↑(map (algebraMap S Sₘ) I)))

State before:
case refine_2
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a : S
ha : a ∈ ↑I
⊢ a ∈
    ⇑(algebraMap R Rₘ) ∘ ⇑(Algebra.intNorm R S) ⁻¹'
      ↑(Submodule.span Rₘ (⇑(Algebra.intNorm Rₘ Sₘ) '' ↑(map (algebraMap S Sₘ) I)))
Tactic:
rw [Set.mem_preimage, Function.comp_apply, Algebra.intNorm_eq_of_isLocalization
  (A := R) (B := S) M (Aₘ := Rₘ) (Bₘ := Sₘ)]
State after:
case refine_2
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a : S
ha : a ∈ ↑I
⊢ (Algebra.intNorm Rₘ Sₘ) ((algebraMap S Sₘ) a) ∈
    ↑(Submodule.span Rₘ (⇑(Algebra.intNorm Rₘ Sₘ) '' ↑(map (algebraMap S Sₘ) I)))

State before:
case refine_2
R : Type u_1
inst✝²⁵ : CommRing R
S : Type u_2
inst✝²⁴ : CommRing S
inst✝²³ : Algebra R S
inst✝²² : IsIntegrallyClosed R
inst✝²¹ : IsDomain R
inst✝²⁰ : IsDomain S
inst✝¹⁹ : NoZeroSMulDivisors R S
hRS : Module.Finite R S
inst✝¹⁸ : IsIntegrallyClosed S
inst✝¹⁷ : IsSeparable (FractionRing R) (FractionRing S)
I : Ideal S
M : Submonoid R
hM : M ≤ R⁰
Rₘ : Type u_3
Sₘ : Type u_4
inst✝¹⁶ : CommRing Rₘ
inst✝¹⁵ : Algebra R Rₘ
inst✝¹⁴ : CommRing Sₘ
inst✝¹³ : Algebra S Sₘ
inst✝¹² : Algebra Rₘ Sₘ
inst✝¹¹ : Algebra R Sₘ
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ
inst✝⁹ : IsScalarTower R S Sₘ
inst✝⁸ : IsLocalization M Rₘ
inst✝⁷ : IsLocalization (Algebra.algebraMapSubmonoid S M) Sₘ
inst✝⁶ : IsIntegrallyClosed Rₘ
inst✝⁵ : IsDomain Rₘ
inst✝⁴ : IsDomain Sₘ
inst✝³ : NoZeroSMulDivisors Rₘ Sₘ
inst✝² : Module.Finite Rₘ Sₘ
inst✝¹ : IsIntegrallyClosed Sₘ
inst✝ : IsSeparable (FractionRing Rₘ) (FractionRing Sₘ)
K : Type u_1 := FractionRing R
f : Rₘ →+* K := IsLocalization.map K (RingHom.id R) hM
this✝⁸ : Algebra Rₘ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₘ K
this✝⁶ : IsFractionRing Rₘ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization M Rₘ K
L : Type u_2 := FractionRing S
g : Sₘ →+* L := IsLocalization.map L (RingHom.id S) ⋯
this✝⁵ : Algebra Sₘ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₘ L
this✝³ : Algebra Rₘ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₘ K L
this✝¹ : IsScalarTower Rₘ Sₘ L
this✝ : IsFractionRing Sₘ L :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization (Algebra.algebraMapSubmonoid S M) Sₘ L
this : IsIntegralClosure Sₘ Rₘ L
a : S
ha : a ∈ ↑I
⊢ (Algebra.intNorm Rₘ Sₘ) ((algebraMap S Sₘ) a) ∈
    ↑(Submodule.span Rₘ (⇑(Algebra.intNorm Rₘ Sₘ) '' ↑(map (algebraMap S Sₘ) I)))
Tactic:
exact subset_span (Set.mem_image_of_mem _ (mem_map_of_mem _ ha))
State after:
no goals