Theorem: Ideal.spanIntNorm_map
Proof 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
Proof 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)