Theorem: Ideal.spanIntNorm_map (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)
inst✝⁵ : IsDomain R
inst✝⁴ : IsDomain S
inst✝³ : IsDedekindDomain R
inst✝² : IsDedekindDomain S
inst✝¹ : Module.Finite R S
inst✝ : Module.Free R S
I : Ideal R
⊢ spanIntNorm R (map (algebraMap R S) I) = I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)
Tactic:
classical
nontriviality R
nontriviality S
refine eq_of_localization_maximal ?_
intro P hPd
let P' := Algebra.algebraMapSubmonoid S P.primeCompl
let Rₚ := Localization.AtPrime P
let Sₚ := Localization P'
letI : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
haveI : IsScalarTower R Rₚ Sₚ :=
  IsScalarTower.of_algebraMap_eq (fun x =>
    (IsLocalization.map_eq (T := P') (Q := Localization P') P.primeCompl.le_comap_map x).symm)
have h : P' ≤ S⁰ :=
  map_le_nonZeroDivisors_of_injective _ (NoZeroSMulDivisors.algebraMap_injective _ _)
    P.primeCompl_le_nonZeroDivisors
haveI : IsDomain Sₚ := IsLocalization.isDomain_localization h
haveI : IsDedekindDomain Sₚ := IsLocalization.isDedekindDomain S h _
haveI : IsPrincipalIdealRing Rₚ := IsLocalization.AtPrime.PID_of_dedekind_domain P Rₚ
haveI := isIntegrallyClosed_of_isLocalization P.primeCompl P.primeCompl_le_nonZeroDivisors Rₚ
haveI := NoZeroSMulDivisors_of_isLocalization R S Rₚ Sₚ _ P.primeCompl_le_nonZeroDivisors
haveI := Module.Finite_of_isLocalization R S Rₚ Sₚ P.primeCompl
let K := FractionRing R
let f : Rₚ →+* K := IsLocalization.map _ (T := R⁰) (RingHom.id R) P.primeCompl_le_nonZeroDivisors
letI := f.toAlgebra
have : IsScalarTower R Rₚ K := IsScalarTower.of_algebraMap_eq'
  (by rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHomCompTriple.comp_eq])
letI := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
let L := FractionRing S
let g : Sₚ →+* L := IsLocalization.map _ (M := P') (T := S⁰) (RingHom.id S) h
letI := g.toAlgebra
haveI : IsScalarTower S Sₚ (FractionRing S) := IsScalarTower.of_algebraMap_eq'
  (by rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHom.comp_id])
letI := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization
  P' Sₚ (FractionRing S)
letI := ((algebraMap K L).comp f).toAlgebra
haveI : IsScalarTower Rₚ K L := IsScalarTower.of_algebraMap_eq' rfl
haveI : IsScalarTower Rₚ Sₚ L := by
  apply IsScalarTower.of_algebraMap_eq'
  apply IsLocalization.ringHom_ext P.primeCompl
  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]
haveI : IsIntegralClosure Sₚ Rₚ L := IsIntegralClosure.of_isIntegrallyClosed _ _ _
haveI : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ) := by
  apply IsSeparable.of_equiv_equiv (FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv
    (FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv
  apply IsLocalization.ringHom_ext R⁰
  ext
  simp only [AlgEquiv.toRingEquiv_eq_coe, RingHom.coe_comp,
    RingHom.coe_coe, Function.comp_apply, ← IsScalarTower.algebraMap_apply]
  simp only [IsScalarTower.algebraMap_apply R Rₚ (FractionRing R), AlgEquiv.coe_ringEquiv,
    AlgEquiv.commutes, IsScalarTower.algebraMap_apply R S L,
    IsScalarTower.algebraMap_apply S Sₚ L]
  simp only [← IsScalarTower.algebraMap_apply]
  rw [IsScalarTower.algebraMap_apply R Rₚ (FractionRing Rₚ), ← IsScalarTower.algebraMap_apply Rₚ,
    ← IsScalarTower.algebraMap_apply]
haveI : Module.Free Rₚ Sₚ := Module.free_of_finite_type_torsion_free'
simp only [Ideal.map_mul, ← spanIntNorm_localization (R := R) (S := S)
  (Rₘ := Localization.AtPrime P) (Sₘ := Localization P') _ _ P.primeCompl_le_nonZeroDivisors]
rw [Ideal.map_pow, I.map_map, ← IsScalarTower.algebraMap_eq, IsScalarTower.algebraMap_eq R Rₚ Sₚ,
  ← I.map_map, ← (I.map _).span_singleton_generator, Ideal.map_span, Set.image_singleton,
  spanIntNorm_singleton, Ideal.span_singleton_pow]
congr 2
apply IsFractionRing.injective Rₚ K
rw [Algebra.algebraMap_intNorm (L := L), ← IsScalarTower.algebraMap_apply,
  IsScalarTower.algebraMap_apply Rₚ K L, Algebra.norm_algebraMap, map_pow]
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)
inst✝⁵ : IsDomain R
inst✝⁴ : IsDomain S
inst✝³ : IsDedekindDomain R
inst✝² : IsDedekindDomain S
inst✝¹ : Module.Finite R S
inst✝ : Module.Free R S
I : Ideal R
⊢ spanIntNorm R (map (algebraMap R S) I) = I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)
Tactic:
nontriviality 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)
inst✝⁶ : IsDomain R
inst✝⁵ : IsDomain S
inst✝⁴ : IsDedekindDomain R
inst✝³ : IsDedekindDomain S
inst✝² : Module.Finite R S
inst✝¹ : Module.Free R S
I : Ideal R
inst✝ : Nontrivial R
⊢ spanIntNorm R (map (algebraMap R S) I) = I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)

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)
inst✝⁶ : IsDomain R
inst✝⁵ : IsDomain S
inst✝⁴ : IsDedekindDomain R
inst✝³ : IsDedekindDomain S
inst✝² : Module.Finite R S
inst✝¹ : Module.Free R S
I : Ideal R
inst✝ : Nontrivial R
⊢ spanIntNorm R (map (algebraMap R S) I) = I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)
Tactic:
nontriviality 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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
⊢ spanIntNorm R (map (algebraMap R S) I) = I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
⊢ spanIntNorm R (map (algebraMap R S) I) = I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)
Tactic:
refine eq_of_localization_maximal ?_
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
⊢ ∀ (P : Ideal R) (x : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
      map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
⊢ ∀ (P : Ideal R) (x : P.IsMaximal),
    map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
      map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
intro P hPd
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
let P' := Algebra.algebraMapSubmonoid S P.primeCompl
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
let Rₚ := Localization.AtPrime P
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
let Sₚ := Localization P'
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
letI : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl 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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : IsScalarTower R Rₚ Sₚ :=
  IsScalarTower.of_algebraMap_eq (fun x =>
    (IsLocalization.map_eq (T := P') (Q := Localization P') P.primeCompl.le_comap_map x).symm)
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this : IsScalarTower R Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this : IsScalarTower R Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
have h : P' ≤ S⁰ :=
  map_le_nonZeroDivisors_of_injective _ (NoZeroSMulDivisors.algebraMap_injective _ _)
    P.primeCompl_le_nonZeroDivisors
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : IsDomain Sₚ := IsLocalization.isDomain_localization h
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this : IsDomain Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this : IsDomain Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : IsDedekindDomain Sₚ := IsLocalization.isDedekindDomain S h _
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝² : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝ : IsDomain Sₚ
this : IsDedekindDomain Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝² : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝ : IsDomain Sₚ
this : IsDedekindDomain Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : IsPrincipalIdealRing Rₚ := IsLocalization.AtPrime.PID_of_dedekind_domain P 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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝³ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝² : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹ : IsDomain Sₚ
this✝ : IsDedekindDomain Sₚ
this : IsPrincipalIdealRing Rₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝³ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝² : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹ : IsDomain Sₚ
this✝ : IsDedekindDomain Sₚ
this : IsPrincipalIdealRing Rₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI := isIntegrallyClosed_of_isLocalization P.primeCompl P.primeCompl_le_nonZeroDivisors 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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝² : IsDomain Sₚ
this✝¹ : IsDedekindDomain Sₚ
this✝ : IsPrincipalIdealRing Rₚ
this : IsIntegrallyClosed Rₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝² : IsDomain Sₚ
this✝¹ : IsDedekindDomain Sₚ
this✝ : IsPrincipalIdealRing Rₚ
this : IsIntegrallyClosed Rₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI := NoZeroSMulDivisors_of_isLocalization R S Rₚ Sₚ _ P.primeCompl_le_nonZeroDivisors
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁵ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁴ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝³ : IsDomain Sₚ
this✝² : IsDedekindDomain Sₚ
this✝¹ : IsPrincipalIdealRing Rₚ
this✝ : IsIntegrallyClosed Rₚ
this : NoZeroSMulDivisors Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁵ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁴ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝³ : IsDomain Sₚ
this✝² : IsDedekindDomain Sₚ
this✝¹ : IsPrincipalIdealRing Rₚ
this✝ : IsIntegrallyClosed Rₚ
this : NoZeroSMulDivisors Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI := Module.Finite_of_isLocalization R S Rₚ Sₚ P.primeCompl
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁴ : IsDomain Sₚ
this✝³ : IsDedekindDomain Sₚ
this✝² : IsPrincipalIdealRing Rₚ
this✝¹ : IsIntegrallyClosed Rₚ
this✝ : NoZeroSMulDivisors Rₚ Sₚ
this : Module.Finite Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁴ : IsDomain Sₚ
this✝³ : IsDedekindDomain Sₚ
this✝² : IsPrincipalIdealRing Rₚ
this✝¹ : IsIntegrallyClosed Rₚ
this✝ : NoZeroSMulDivisors Rₚ Sₚ
this : Module.Finite Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁴ : IsDomain Sₚ
this✝³ : IsDedekindDomain Sₚ
this✝² : IsPrincipalIdealRing Rₚ
this✝¹ : IsIntegrallyClosed Rₚ
this✝ : NoZeroSMulDivisors Rₚ Sₚ
this : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁴ : IsDomain Sₚ
this✝³ : IsDedekindDomain Sₚ
this✝² : IsPrincipalIdealRing Rₚ
this✝¹ : IsIntegrallyClosed Rₚ
this✝ : NoZeroSMulDivisors Rₚ Sₚ
this : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
let f : Rₚ →+* K := IsLocalization.map _ (T := R⁰) (RingHom.id R) P.primeCompl_le_nonZeroDivisors
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁴ : IsDomain Sₚ
this✝³ : IsDedekindDomain Sₚ
this✝² : IsPrincipalIdealRing Rₚ
this✝¹ : IsIntegrallyClosed Rₚ
this✝ : NoZeroSMulDivisors Rₚ Sₚ
this : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁴ : IsDomain Sₚ
this✝³ : IsDedekindDomain Sₚ
this✝² : IsPrincipalIdealRing Rₚ
this✝¹ : IsIntegrallyClosed Rₚ
this✝ : NoZeroSMulDivisors Rₚ Sₚ
this : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁷ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁶ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁵ : IsDomain Sₚ
this✝⁴ : IsDedekindDomain Sₚ
this✝³ : IsPrincipalIdealRing Rₚ
this✝² : IsIntegrallyClosed Rₚ
this✝¹ : NoZeroSMulDivisors Rₚ Sₚ
this✝ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this : Algebra Rₚ K := f.toAlgebra
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁷ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁶ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁵ : IsDomain Sₚ
this✝⁴ : IsDedekindDomain Sₚ
this✝³ : IsPrincipalIdealRing Rₚ
this✝² : IsIntegrallyClosed Rₚ
this✝¹ : NoZeroSMulDivisors Rₚ Sₚ
this✝ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this : Algebra Rₚ K := f.toAlgebra
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁶ : IsDomain Sₚ
this✝⁵ : IsDedekindDomain Sₚ
this✝⁴ : IsPrincipalIdealRing Rₚ
this✝³ : IsIntegrallyClosed Rₚ
this✝² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝ : Algebra Rₚ K := f.toAlgebra
this : IsScalarTower R Rₚ K
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁶ : IsDomain Sₚ
this✝⁵ : IsDedekindDomain Sₚ
this✝⁴ : IsPrincipalIdealRing Rₚ
this✝³ : IsIntegrallyClosed Rₚ
this✝² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝ : Algebra Rₚ K := f.toAlgebra
this : IsScalarTower R Rₚ K
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
letI := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl 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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁸ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁷ : IsDomain Sₚ
this✝⁶ : IsDedekindDomain Sₚ
this✝⁵ : IsPrincipalIdealRing Rₚ
this✝⁴ : IsIntegrallyClosed Rₚ
this✝³ : NoZeroSMulDivisors Rₚ Sₚ
this✝² : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹ : Algebra Rₚ K := f.toAlgebra
this✝ : IsScalarTower R Rₚ K
this : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁸ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁷ : IsDomain Sₚ
this✝⁶ : IsDedekindDomain Sₚ
this✝⁵ : IsPrincipalIdealRing Rₚ
this✝⁴ : IsIntegrallyClosed Rₚ
this✝³ : NoZeroSMulDivisors Rₚ Sₚ
this✝² : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹ : Algebra Rₚ K := f.toAlgebra
this✝ : IsScalarTower R Rₚ K
this : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁸ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁷ : IsDomain Sₚ
this✝⁶ : IsDedekindDomain Sₚ
this✝⁵ : IsPrincipalIdealRing Rₚ
this✝⁴ : IsIntegrallyClosed Rₚ
this✝³ : NoZeroSMulDivisors Rₚ Sₚ
this✝² : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹ : Algebra Rₚ K := f.toAlgebra
this✝ : IsScalarTower R Rₚ K
this : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁸ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁷ : IsDomain Sₚ
this✝⁶ : IsDedekindDomain Sₚ
this✝⁵ : IsPrincipalIdealRing Rₚ
this✝⁴ : IsIntegrallyClosed Rₚ
this✝³ : NoZeroSMulDivisors Rₚ Sₚ
this✝² : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹ : Algebra Rₚ K := f.toAlgebra
this✝ : IsScalarTower R Rₚ K
this : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
let g : Sₚ →+* L := IsLocalization.map _ (M := P') (T := S⁰) (RingHom.id S) h
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁸ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁷ : IsDomain Sₚ
this✝⁶ : IsDedekindDomain Sₚ
this✝⁵ : IsPrincipalIdealRing Rₚ
this✝⁴ : IsIntegrallyClosed Rₚ
this✝³ : NoZeroSMulDivisors Rₚ Sₚ
this✝² : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹ : Algebra Rₚ K := f.toAlgebra
this✝ : IsScalarTower R Rₚ K
this : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁸ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁷ : IsDomain Sₚ
this✝⁶ : IsDedekindDomain Sₚ
this✝⁵ : IsPrincipalIdealRing Rₚ
this✝⁴ : IsIntegrallyClosed Rₚ
this✝³ : NoZeroSMulDivisors Rₚ Sₚ
this✝² : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹ : Algebra Rₚ K := f.toAlgebra
this✝ : IsScalarTower R Rₚ K
this : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁰ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁹ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁸ : IsDomain Sₚ
this✝⁷ : IsDedekindDomain Sₚ
this✝⁶ : IsPrincipalIdealRing Rₚ
this✝⁵ : IsIntegrallyClosed Rₚ
this✝⁴ : NoZeroSMulDivisors Rₚ Sₚ
this✝³ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝² : Algebra Rₚ K := f.toAlgebra
this✝¹ : IsScalarTower R Rₚ K
this✝ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this : Algebra Sₚ L := g.toAlgebra
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁰ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁹ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁸ : IsDomain Sₚ
this✝⁷ : IsDedekindDomain Sₚ
this✝⁶ : IsPrincipalIdealRing Rₚ
this✝⁵ : IsIntegrallyClosed Rₚ
this✝⁴ : NoZeroSMulDivisors Rₚ Sₚ
this✝³ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝² : Algebra Rₚ K := f.toAlgebra
this✝¹ : IsScalarTower R Rₚ K
this✝ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this : Algebra Sₚ L := g.toAlgebra
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : IsScalarTower S Sₚ (FractionRing S) := IsScalarTower.of_algebraMap_eq'
  (by rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHom.comp_id])
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹¹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁰ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁹ : IsDomain Sₚ
this✝⁸ : IsDedekindDomain Sₚ
this✝⁷ : IsPrincipalIdealRing Rₚ
this✝⁶ : IsIntegrallyClosed Rₚ
this✝⁵ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁴ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝³ : Algebra Rₚ K := f.toAlgebra
this✝² : IsScalarTower R Rₚ K
this✝¹ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝ : Algebra Sₚ L := g.toAlgebra
this : IsScalarTower S Sₚ (FractionRing S)
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹¹ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁰ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁹ : IsDomain Sₚ
this✝⁸ : IsDedekindDomain Sₚ
this✝⁷ : IsPrincipalIdealRing Rₚ
this✝⁶ : IsIntegrallyClosed Rₚ
this✝⁵ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁴ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝³ : Algebra Rₚ K := f.toAlgebra
this✝² : IsScalarTower R Rₚ K
this✝¹ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝ : Algebra Sₚ L := g.toAlgebra
this : IsScalarTower S Sₚ (FractionRing S)
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
letI := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization
  P' Sₚ (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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹² : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹¹ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁰ : IsDomain Sₚ
this✝⁹ : IsDedekindDomain Sₚ
this✝⁸ : IsPrincipalIdealRing Rₚ
this✝⁷ : IsIntegrallyClosed Rₚ
this✝⁶ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁵ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁴ : Algebra Rₚ K := f.toAlgebra
this✝³ : IsScalarTower R Rₚ K
this✝² : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝¹ : Algebra Sₚ L := g.toAlgebra
this✝ : IsScalarTower S Sₚ (FractionRing S)
this : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹² : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹¹ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁰ : IsDomain Sₚ
this✝⁹ : IsDedekindDomain Sₚ
this✝⁸ : IsPrincipalIdealRing Rₚ
this✝⁷ : IsIntegrallyClosed Rₚ
this✝⁶ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁵ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁴ : Algebra Rₚ K := f.toAlgebra
this✝³ : IsScalarTower R Rₚ K
this✝² : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝¹ : Algebra Sₚ L := g.toAlgebra
this✝ : IsScalarTower S Sₚ (FractionRing S)
this : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹³ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹² : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹¹ : IsDomain Sₚ
this✝¹⁰ : IsDedekindDomain Sₚ
this✝⁹ : IsPrincipalIdealRing Rₚ
this✝⁸ : IsIntegrallyClosed Rₚ
this✝⁷ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁶ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁵ : Algebra Rₚ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₚ K
this✝³ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝² : Algebra Sₚ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₚ (FractionRing S)
this✝ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹³ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹² : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹¹ : IsDomain Sₚ
this✝¹⁰ : IsDedekindDomain Sₚ
this✝⁹ : IsPrincipalIdealRing Rₚ
this✝⁸ : IsIntegrallyClosed Rₚ
this✝⁷ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁶ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁵ : Algebra Rₚ K := f.toAlgebra
this✝⁴ : IsScalarTower R Rₚ K
this✝³ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝² : Algebra Sₚ L := g.toAlgebra
this✝¹ : IsScalarTower S Sₚ (FractionRing S)
this✝ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹² : IsDomain Sₚ
this✝¹¹ : IsDedekindDomain Sₚ
this✝¹⁰ : IsPrincipalIdealRing Rₚ
this✝⁹ : IsIntegrallyClosed Rₚ
this✝⁸ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁷ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁶ : Algebra Rₚ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₚ K
this✝⁴ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝³ : Algebra Sₚ L := g.toAlgebra
this✝² : IsScalarTower S Sₚ (FractionRing S)
this✝¹ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₚ K L
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹² : IsDomain Sₚ
this✝¹¹ : IsDedekindDomain Sₚ
this✝¹⁰ : IsPrincipalIdealRing Rₚ
this✝⁹ : IsIntegrallyClosed Rₚ
this✝⁸ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁷ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁶ : Algebra Rₚ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₚ K
this✝⁴ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝³ : Algebra Sₚ L := g.toAlgebra
this✝² : IsScalarTower S Sₚ (FractionRing S)
this✝¹ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this : IsScalarTower Rₚ K L
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : IsScalarTower Rₚ Sₚ L := by
  apply IsScalarTower.of_algebraMap_eq'
  apply IsLocalization.ringHom_ext P.primeCompl
  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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁵ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁴ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹³ : IsDomain Sₚ
this✝¹² : IsDedekindDomain Sₚ
this✝¹¹ : IsPrincipalIdealRing Rₚ
this✝¹⁰ : IsIntegrallyClosed Rₚ
this✝⁹ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁸ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁷ : Algebra Rₚ K := f.toAlgebra
this✝⁶ : IsScalarTower R Rₚ K
this✝⁵ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁴ : Algebra Sₚ L := g.toAlgebra
this✝³ : IsScalarTower S Sₚ (FractionRing S)
this✝² : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝¹ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝ : IsScalarTower Rₚ K L
this : IsScalarTower Rₚ Sₚ L
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁵ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁴ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹³ : IsDomain Sₚ
this✝¹² : IsDedekindDomain Sₚ
this✝¹¹ : IsPrincipalIdealRing Rₚ
this✝¹⁰ : IsIntegrallyClosed Rₚ
this✝⁹ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁸ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁷ : Algebra Rₚ K := f.toAlgebra
this✝⁶ : IsScalarTower R Rₚ K
this✝⁵ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁴ : Algebra Sₚ L := g.toAlgebra
this✝³ : IsScalarTower S Sₚ (FractionRing S)
this✝² : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝¹ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝ : IsScalarTower Rₚ K L
this : IsScalarTower Rₚ Sₚ L
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ) := by
  apply IsSeparable.of_equiv_equiv (FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv
    (FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv
  apply IsLocalization.ringHom_ext R⁰
  ext
  simp only [AlgEquiv.toRingEquiv_eq_coe, RingHom.coe_comp,
    RingHom.coe_coe, Function.comp_apply, ← IsScalarTower.algebraMap_apply]
  simp only [IsScalarTower.algebraMap_apply R Rₚ (FractionRing R), AlgEquiv.coe_ringEquiv,
    AlgEquiv.commutes, IsScalarTower.algebraMap_apply R S L,
    IsScalarTower.algebraMap_apply S Sₚ L]
  simp only [← IsScalarTower.algebraMap_apply]
  rw [IsScalarTower.algebraMap_apply R Rₚ (FractionRing Rₚ), ← IsScalarTower.algebraMap_apply Rₚ,
    ← IsScalarTower.algebraMap_apply]
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁷ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁶ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁵ : IsDomain Sₚ
this✝¹⁴ : IsDedekindDomain Sₚ
this✝¹³ : IsPrincipalIdealRing Rₚ
this✝¹² : IsIntegrallyClosed Rₚ
this✝¹¹ : NoZeroSMulDivisors Rₚ Sₚ
this✝¹⁰ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁹ : Algebra Rₚ K := f.toAlgebra
this✝⁸ : IsScalarTower R Rₚ K
this✝⁷ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁶ : Algebra Sₚ L := g.toAlgebra
this✝⁵ : IsScalarTower S Sₚ (FractionRing S)
this✝⁴ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝³ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₚ K L
this✝¹ : IsScalarTower Rₚ Sₚ L
this✝ : IsIntegralClosure Sₚ Rₚ L
this : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁷ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁶ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁵ : IsDomain Sₚ
this✝¹⁴ : IsDedekindDomain Sₚ
this✝¹³ : IsPrincipalIdealRing Rₚ
this✝¹² : IsIntegrallyClosed Rₚ
this✝¹¹ : NoZeroSMulDivisors Rₚ Sₚ
this✝¹⁰ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁹ : Algebra Rₚ K := f.toAlgebra
this✝⁸ : IsScalarTower R Rₚ K
this✝⁷ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁶ : Algebra Sₚ L := g.toAlgebra
this✝⁵ : IsScalarTower S Sₚ (FractionRing S)
this✝⁴ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝³ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝² : IsScalarTower Rₚ K L
this✝¹ : IsScalarTower Rₚ Sₚ L
this✝ : IsIntegralClosure Sₚ Rₚ L
this : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
haveI : Module.Free Rₚ Sₚ := Module.free_of_finite_type_torsion_free'
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ map (algebraMap R (Localization.AtPrime P)) (spanIntNorm R (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
simp only [Ideal.map_mul, ← spanIntNorm_localization (R := R) (S := S)
  (Rₘ := Localization.AtPrime P) (Sₘ := Localization P') _ _ P.primeCompl_le_nonZeroDivisors]
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ spanIntNorm (Localization.AtPrime P) (map (algebraMap S (Localization P')) (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ spanIntNorm (Localization.AtPrime P) (map (algebraMap S (Localization P')) (map (algebraMap R S) I)) =
    map (algebraMap R (Localization.AtPrime P)) (I ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
rw [Ideal.map_pow, I.map_map, ← IsScalarTower.algebraMap_eq, IsScalarTower.algebraMap_eq R Rₚ Sₚ,
  ← I.map_map, ← (I.map _).span_singleton_generator, Ideal.map_span, Set.image_singleton,
  spanIntNorm_singleton, Ideal.span_singleton_pow]
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ span
      {(Algebra.intNorm (Localization.AtPrime P) (Localization P'))
          ((algebraMap Rₚ Sₚ) (IsPrincipal.generator (map (algebraMap R Rₚ) I)))} =
    span {IsPrincipal.generator (map (algebraMap R Rₚ) I) ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)}

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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ span
      {(Algebra.intNorm (Localization.AtPrime P) (Localization P'))
          ((algebraMap Rₚ Sₚ) (IsPrincipal.generator (map (algebraMap R Rₚ) I)))} =
    span {IsPrincipal.generator (map (algebraMap R Rₚ) I) ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)}
Tactic:
congr 2
State after:
case e_s.e_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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ (Algebra.intNorm (Localization.AtPrime P) (Localization P'))
      ((algebraMap Rₚ Sₚ) (IsPrincipal.generator (map (algebraMap R Rₚ) I))) =
    IsPrincipal.generator (map (algebraMap R Rₚ) I) ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)

State before:
case e_s.e_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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ (Algebra.intNorm (Localization.AtPrime P) (Localization P'))
      ((algebraMap Rₚ Sₚ) (IsPrincipal.generator (map (algebraMap R Rₚ) I))) =
    IsPrincipal.generator (map (algebraMap R Rₚ) I) ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S)
Tactic:
apply IsFractionRing.injective Rₚ K
State after:
case e_s.e_a.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ (algebraMap Rₚ K)
      ((Algebra.intNorm (Localization.AtPrime P) (Localization P'))
        ((algebraMap Rₚ Sₚ) (IsPrincipal.generator (map (algebraMap R Rₚ) I)))) =
    (algebraMap Rₚ K)
      (IsPrincipal.generator (map (algebraMap R Rₚ) I) ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))

State before:
case e_s.e_a.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁸ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁷ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁶ : IsDomain Sₚ
this✝¹⁵ : IsDedekindDomain Sₚ
this✝¹⁴ : IsPrincipalIdealRing Rₚ
this✝¹³ : IsIntegrallyClosed Rₚ
this✝¹² : NoZeroSMulDivisors Rₚ Sₚ
this✝¹¹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝¹⁰ : Algebra Rₚ K := f.toAlgebra
this✝⁹ : IsScalarTower R Rₚ K
this✝⁸ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁷ : Algebra Sₚ L := g.toAlgebra
this✝⁶ : IsScalarTower S Sₚ (FractionRing S)
this✝⁵ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝⁴ : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝³ : IsScalarTower Rₚ K L
this✝² : IsScalarTower Rₚ Sₚ L
this✝¹ : IsIntegralClosure Sₚ Rₚ L
this✝ : IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
this : Module.Free Rₚ Sₚ
⊢ (algebraMap Rₚ K)
      ((Algebra.intNorm (Localization.AtPrime P) (Localization P'))
        ((algebraMap Rₚ Sₚ) (IsPrincipal.generator (map (algebraMap R Rₚ) I)))) =
    (algebraMap Rₚ K)
      (IsPrincipal.generator (map (algebraMap R Rₚ) I) ^ FiniteDimensional.finrank (FractionRing R) (FractionRing S))
Tactic:
rw [Algebra.algebraMap_intNorm (L := L), ← IsScalarTower.algebraMap_apply,
  IsScalarTower.algebraMap_apply Rₚ K L, Algebra.norm_algebraMap, map_pow]
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝⁷ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁶ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁵ : IsDomain Sₚ
this✝⁴ : IsDedekindDomain Sₚ
this✝³ : IsPrincipalIdealRing Rₚ
this✝² : IsIntegrallyClosed Rₚ
this✝¹ : NoZeroSMulDivisors Rₚ Sₚ
this✝ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁰ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝⁹ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝⁸ : IsDomain Sₚ
this✝⁷ : IsDedekindDomain Sₚ
this✝⁶ : IsPrincipalIdealRing Rₚ
this✝⁵ : IsIntegrallyClosed Rₚ
this✝⁴ : NoZeroSMulDivisors Rₚ Sₚ
this✝³ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝² : Algebra Rₚ K := f.toAlgebra
this✝¹ : IsScalarTower R Rₚ K
this✝ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this : Algebra Sₚ L := g.toAlgebra
⊢ algebraMap S (FractionRing S) = (algebraMap Sₚ (FractionRing S)).comp (algebraMap S Sₚ)
Tactic:
rw [RingHom.algebraMap_toAlgebra, IsLocalization.map_comp, RingHom.comp_id]
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹² : IsDomain Sₚ
this✝¹¹ : IsDedekindDomain Sₚ
this✝¹⁰ : IsPrincipalIdealRing Rₚ
this✝⁹ : IsIntegrallyClosed Rₚ
this✝⁸ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁷ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁶ : Algebra Rₚ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₚ K
this✝⁴ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝³ : Algebra Sₚ L := g.toAlgebra
this✝² : IsScalarTower S Sₚ (FractionRing S)
this✝¹ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹² : IsDomain Sₚ
this✝¹¹ : IsDedekindDomain Sₚ
this✝¹⁰ : IsPrincipalIdealRing Rₚ
this✝⁹ : IsIntegrallyClosed Rₚ
this✝⁸ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁷ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁶ : Algebra Rₚ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₚ K
this✝⁴ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝³ : Algebra Sₚ L := g.toAlgebra
this✝² : IsScalarTower S Sₚ (FractionRing S)
this✝¹ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹² : IsDomain Sₚ
this✝¹¹ : IsDedekindDomain Sₚ
this✝¹⁰ : IsPrincipalIdealRing Rₚ
this✝⁹ : IsIntegrallyClosed Rₚ
this✝⁸ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁷ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁶ : Algebra Rₚ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₚ K
this✝⁴ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝³ : Algebra Sₚ L := g.toAlgebra
this✝² : IsScalarTower S Sₚ (FractionRing S)
this✝¹ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
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 P.primeCompl
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹² : IsDomain Sₚ
this✝¹¹ : IsDedekindDomain Sₚ
this✝¹⁰ : IsPrincipalIdealRing Rₚ
this✝⁹ : IsIntegrallyClosed Rₚ
this✝⁸ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁷ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁶ : Algebra Rₚ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₚ K
this✝⁴ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝³ : Algebra Sₚ L := g.toAlgebra
this✝² : IsScalarTower S Sₚ (FractionRing S)
this✝¹ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁴ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹³ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹² : IsDomain Sₚ
this✝¹¹ : IsDedekindDomain Sₚ
this✝¹⁰ : IsPrincipalIdealRing Rₚ
this✝⁹ : IsIntegrallyClosed Rₚ
this✝⁸ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁷ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁶ : Algebra Rₚ K := f.toAlgebra
this✝⁵ : IsScalarTower R Rₚ K
this✝⁴ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝³ : Algebra Sₚ L := g.toAlgebra
this✝² : IsScalarTower S Sₚ (FractionRing S)
this✝¹ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
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:
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
⊢ IsSeparable (FractionRing Rₚ) (FractionRing Sₚ)
Tactic:
apply IsSeparable.of_equiv_equiv (FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv
  (FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv
State after:
case he
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ)).comp ↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv =
    (↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv).comp (algebraMap (FractionRing R) (FractionRing S))

State before:
case he
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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ)).comp ↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv =
    (↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv).comp (algebraMap (FractionRing R) (FractionRing S))
Tactic:
apply IsLocalization.ringHom_ext R⁰
State after:
case he.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
⊢ ((algebraMap (FractionRing Rₚ) (FractionRing Sₚ)).comp
          ↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv).comp
      (algebraMap R (FractionRing R)) =
    ((↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv).comp
          (algebraMap (FractionRing R) (FractionRing S))).comp
      (algebraMap R (FractionRing R))

State before:
case he.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
⊢ ((algebraMap (FractionRing Rₚ) (FractionRing Sₚ)).comp
          ↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv).comp
      (algebraMap R (FractionRing R)) =
    ((↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv).comp
          (algebraMap (FractionRing R) (FractionRing S))).comp
      (algebraMap R (FractionRing R))
Tactic:
ext
State after:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (((algebraMap (FractionRing Rₚ) (FractionRing Sₚ)).comp
            ↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv).comp
        (algebraMap R (FractionRing R)))
      x✝ =
    (((↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv).comp
            (algebraMap (FractionRing R) (FractionRing S))).comp
        (algebraMap R (FractionRing R)))
      x✝

State before:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (((algebraMap (FractionRing Rₚ) (FractionRing Sₚ)).comp
            ↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm.toRingEquiv).comp
        (algebraMap R (FractionRing R)))
      x✝ =
    (((↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm.toRingEquiv).comp
            (algebraMap (FractionRing R) (FractionRing S))).comp
        (algebraMap R (FractionRing R)))
      x✝
Tactic:
simp only [AlgEquiv.toRingEquiv_eq_coe, RingHom.coe_comp,
  RingHom.coe_coe, Function.comp_apply, ← IsScalarTower.algebraMap_apply]
State after:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ))
      (↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm ((algebraMap R (FractionRing R)) x✝)) =
    ↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm ((algebraMap R (FractionRing S)) x✝)

State before:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ))
      (↑(FractionRing.algEquiv Rₚ (FractionRing R)).symm ((algebraMap R (FractionRing R)) x✝)) =
    ↑(FractionRing.algEquiv Sₚ (FractionRing S)).symm ((algebraMap R (FractionRing S)) x✝)
Tactic:
simp only [IsScalarTower.algebraMap_apply R Rₚ (FractionRing R), AlgEquiv.coe_ringEquiv,
  AlgEquiv.commutes, IsScalarTower.algebraMap_apply R S L,
  IsScalarTower.algebraMap_apply S Sₚ L]
State after:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ)) ((algebraMap Rₚ (FractionRing Rₚ)) ((algebraMap R Rₚ) x✝)) =
    (algebraMap Sₚ (FractionRing Sₚ)) ((algebraMap S Sₚ) ((algebraMap R S) x✝))

State before:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ)) ((algebraMap Rₚ (FractionRing Rₚ)) ((algebraMap R Rₚ) x✝)) =
    (algebraMap Sₚ (FractionRing Sₚ)) ((algebraMap S Sₚ) ((algebraMap R S) x✝))
Tactic:
simp only [← IsScalarTower.algebraMap_apply]
State after:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ)) ((algebraMap R (FractionRing Rₚ)) x✝) =
    (algebraMap R (FractionRing Sₚ)) x✝

State before:
case he.h.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)
inst✝⁷ : IsDomain R
inst✝⁶ : IsDomain S
inst✝⁵ : IsDedekindDomain R
inst✝⁴ : IsDedekindDomain S
inst✝³ : Module.Finite R S
inst✝² : Module.Free R S
I : Ideal R
inst✝¹ : Nontrivial R
inst✝ : Nontrivial S
P : Ideal R
hPd : P.IsMaximal
P' : Submonoid S := Algebra.algebraMapSubmonoid S P.primeCompl
Rₚ : Type u_1 := Localization.AtPrime P
Sₚ : Type u_2 := Localization P'
this✝¹⁶ : Algebra Rₚ Sₚ := localizationAlgebra P.primeCompl S
this✝¹⁵ : IsScalarTower R Rₚ Sₚ
h : P' ≤ S⁰
this✝¹⁴ : IsDomain Sₚ
this✝¹³ : IsDedekindDomain Sₚ
this✝¹² : IsPrincipalIdealRing Rₚ
this✝¹¹ : IsIntegrallyClosed Rₚ
this✝¹⁰ : NoZeroSMulDivisors Rₚ Sₚ
this✝⁹ : Module.Finite Rₚ Sₚ
K : Type u_1 := FractionRing R
f : Rₚ →+* K := IsLocalization.map K (RingHom.id R) ⋯
this✝⁸ : Algebra Rₚ K := f.toAlgebra
this✝⁷ : IsScalarTower R Rₚ K
this✝⁶ : IsFractionRing Rₚ K := IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P.primeCompl Rₚ K
L : Type u_2 := FractionRing S
g : Sₚ →+* L := IsLocalization.map L (RingHom.id S) h
this✝⁵ : Algebra Sₚ L := g.toAlgebra
this✝⁴ : IsScalarTower S Sₚ (FractionRing S)
this✝³ : IsFractionRing Sₚ (FractionRing S) :=
  IsFractionRing.isFractionRing_of_isDomain_of_isLocalization P' Sₚ (FractionRing S)
this✝² : Algebra Rₚ L := ((algebraMap K L).comp f).toAlgebra
this✝¹ : IsScalarTower Rₚ K L
this✝ : IsScalarTower Rₚ Sₚ L
this : IsIntegralClosure Sₚ Rₚ L
x✝ : R
⊢ (algebraMap (FractionRing Rₚ) (FractionRing Sₚ)) ((algebraMap R (FractionRing Rₚ)) x✝) =
    (algebraMap R (FractionRing Sₚ)) x✝
Tactic:
rw [IsScalarTower.algebraMap_apply R Rₚ (FractionRing Rₚ), ← IsScalarTower.algebraMap_apply Rₚ,
  ← IsScalarTower.algebraMap_apply]
State after:
no goals