Theorem: Algebra.algebraMap_intNorm_of_isGalois
File: Mathlib/RingTheory/IntegralClosure/IntegralRestrict.lean

Proof steps:
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
⊢ (algebraMap A B) ((intNorm A B) x) = ∏ σ : B ≃ₐ[A] B, σ x
state_after: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this : IsIntegralClosure B A (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) = ∏ σ : B ≃ₐ[A] B, σ x
tactic: haveI : IsIntegralClosure B A (FractionRing B) :=
    IsIntegralClosure.of_isIntegrallyClosed _ _ _
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this : IsIntegralClosure B A (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) = ∏ σ : B ≃ₐ[A] B, σ x
state_after: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝ : IsIntegralClosure B A (FractionRing B)
this : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) = ∏ σ : B ≃ₐ[A] B, σ x
tactic: haveI : IsLocalization (Algebra.algebraMapSubmonoid B A⁰) (FractionRing B) :=
    IsIntegralClosure.isLocalization _ (FractionRing A) _ _
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝ : IsIntegralClosure B A (FractionRing B)
this : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) = ∏ σ : B ≃ₐ[A] B, σ x
state_after: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝¹ : IsIntegralClosure B A (FractionRing B)
this✝ : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
this : FiniteDimensional (FractionRing A) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) = ∏ σ : B ≃ₐ[A] B, σ x
tactic: haveI : FiniteDimensional (FractionRing A) (FractionRing B) :=
    Module.Finite_of_isLocalization A B _ _ A⁰
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝¹ : IsIntegralClosure B A (FractionRing B)
this✝ : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
this : FiniteDimensional (FractionRing A) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) = ∏ σ : B ≃ₐ[A] B, σ x
state_after: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝¹ : IsIntegralClosure B A (FractionRing B)
this✝ : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
this : FiniteDimensional (FractionRing A) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) =
    ∏ i : FractionRing B ≃ₐ[FractionRing A] FractionRing B,
      ((galRestrict A (FractionRing A) (FractionRing B) B).toEquiv i) x
tactic: rw [← (galRestrict A (FractionRing A) (FractionRing B) B).toEquiv.prod_comp]
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝¹ : IsIntegralClosure B A (FractionRing B)
this✝ : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
this : FiniteDimensional (FractionRing A) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) =
    ∏ i : FractionRing B ≃ₐ[FractionRing A] FractionRing B,
      ((galRestrict A (FractionRing A) (FractionRing B) B).toEquiv i) x
state_after: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝¹ : IsIntegralClosure B A (FractionRing B)
this✝ : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
this : FiniteDimensional (FractionRing A) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) =
    ∏ x_1 : FractionRing B ≃ₐ[FractionRing A] FractionRing B,
      ((galRestrict A (FractionRing A) (FractionRing B) B) x_1) x
tactic: simp only [MulEquiv.toEquiv_eq_coe, EquivLike.coe_coe]
state_before: A : Type u_1
K : Type u_2
L : Type u_3
B : Type u_4
inst✝³⁰ : CommRing A
inst✝²⁹ : CommRing B
inst✝²⁸ : Algebra A B
inst✝²⁷ : Field K
inst✝²⁶ : Field L
inst✝²⁵ : Algebra A K
inst✝²⁴ : IsFractionRing A K
inst✝²³ : Algebra B L
inst✝²² : Algebra K L
inst✝²¹ : Algebra A L
inst✝²⁰ : IsScalarTower A B L
inst✝¹⁹ : IsScalarTower A K L
inst✝¹⁸ : IsIntegralClosure B A L
inst✝¹⁷ : FiniteDimensional K L
Aₘ : Type ?u.752508
Bₘ : Type ?u.752511
inst✝¹⁶ : CommRing Aₘ
inst✝¹⁵ : CommRing Bₘ
inst✝¹⁴ : Algebra Aₘ Bₘ
inst✝¹³ : Algebra A Aₘ
inst✝¹² : Algebra B Bₘ
inst✝¹¹ : Algebra A Bₘ
inst✝¹⁰ : IsScalarTower A Aₘ Bₘ
inst✝⁹ : IsScalarTower A B Bₘ
M : Submonoid A
inst✝⁸ : IsLocalization M Aₘ
inst✝⁷ : IsLocalization (algebraMapSubmonoid B M) Bₘ
inst✝⁶ : IsDomain A
inst✝⁵ : IsIntegrallyClosed A
inst✝⁴ : IsDomain B
inst✝³ : IsIntegrallyClosed B
inst✝² : Module.Finite A B
inst✝¹ : NoZeroSMulDivisors A B
inst✝ : IsGalois (FractionRing A) (FractionRing B)
x : B
this✝¹ : IsIntegralClosure B A (FractionRing B)
this✝ : IsLocalization (algebraMapSubmonoid B A⁰) (FractionRing B)
this : FiniteDimensional (FractionRing A) (FractionRing B)
⊢ (algebraMap A B) ((intNorm A B) x) =
    ∏ x_1 : FractionRing B ≃ₐ[FractionRing A] FractionRing B,
      ((galRestrict A (FractionRing A) (FractionRing B) B) x_1) x
state_after: no goals
tactic: convert (prod_galRestrict_eq_norm A (FractionRing A) (FractionRing B) B x).symm