Theorem: Algebra.traceMatrix_localizationLocalization
File: Mathlib/RingTheory/Localization/NormTrace.lean

Proof steps:
state_before: R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
⊢ traceMatrix Rₘ ⇑(Basis.localizationLocalization Rₘ M Sₘ b) = (algebraMap R Rₘ).mapMatrix (traceMatrix R ⇑b)
state_after: R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this : Module.Finite R S
⊢ traceMatrix Rₘ ⇑(Basis.localizationLocalization Rₘ M Sₘ b) = (algebraMap R Rₘ).mapMatrix (traceMatrix R ⇑b)
tactic: have : Module.Finite R S := Module.Finite.of_basis b
state_before: R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this : Module.Finite R S
⊢ traceMatrix Rₘ ⇑(Basis.localizationLocalization Rₘ M Sₘ b) = (algebraMap R Rₘ).mapMatrix (traceMatrix R ⇑b)
state_after: R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this✝ : Module.Finite R S
this : Module.Free R S
⊢ traceMatrix Rₘ ⇑(Basis.localizationLocalization Rₘ M Sₘ b) = (algebraMap R Rₘ).mapMatrix (traceMatrix R ⇑b)
tactic: have : Module.Free R S := Module.Free.of_basis b
state_before: R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this✝ : Module.Finite R S
this : Module.Free R S
⊢ traceMatrix Rₘ ⇑(Basis.localizationLocalization Rₘ M Sₘ b) = (algebraMap R Rₘ).mapMatrix (traceMatrix R ⇑b)
state_after: case a
R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this✝ : Module.Finite R S
this : Module.Free R S
i j : ι
⊢ traceMatrix Rₘ (⇑(Basis.localizationLocalization Rₘ M Sₘ b)) i j = (algebraMap R Rₘ).mapMatrix (traceMatrix R ⇑b) i j
tactic: ext i j : 2
state_before: case a
R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this✝ : Module.Finite R S
this : Module.Free R S
i j : ι
⊢ traceMatrix Rₘ (⇑(Basis.localizationLocalization Rₘ M Sₘ b)) i j = (algebraMap R Rₘ).mapMatrix (traceMatrix R ⇑b) i j
state_after: case a
R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this✝ : Module.Finite R S
this : Module.Free R S
i j : ι
⊢ (trace Rₘ Sₘ) ((algebraMap S Sₘ) (b i * b j)) = (algebraMap R Rₘ) ((trace R S) (b i * b j))
tactic: simp_rw [RingHom.mapMatrix_apply, Matrix.map_apply, traceMatrix_apply, traceForm_apply,
    Basis.localizationLocalization_apply, ← map_mul]
state_before: case a
R : Type u_1
S : Type u_2
inst✝²¹ : CommRing R
inst✝²⁰ : CommRing S
inst✝¹⁹ : Algebra R S
Rₘ : Type u_3
Sₘ✝ : Type u_4
inst✝¹⁸ : CommRing Rₘ
inst✝¹⁷ : Algebra R Rₘ
inst✝¹⁶ : CommRing Sₘ✝
inst✝¹⁵ : Algebra S Sₘ✝
M : Submonoid R
inst✝¹⁴ : IsLocalization M Rₘ
inst✝¹³ : IsLocalization (algebraMapSubmonoid S M) Sₘ✝
inst✝¹² : Algebra Rₘ Sₘ✝
inst✝¹¹ : Algebra R Sₘ✝
inst✝¹⁰ : IsScalarTower R Rₘ Sₘ✝
inst✝⁹ : IsScalarTower R S Sₘ✝
Sₘ : Type u_5
inst✝⁸ : CommRing Sₘ
inst✝⁷ : Algebra S Sₘ
inst✝⁶ : Algebra Rₘ Sₘ
inst✝⁵ : Algebra R Sₘ
inst✝⁴ : IsScalarTower R Rₘ Sₘ
inst✝³ : IsScalarTower R S Sₘ
inst✝² : IsLocalization (algebraMapSubmonoid S M) Sₘ
ι : Type u_6
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
b : Basis ι R S
this✝ : Module.Finite R S
this : Module.Free R S
i j : ι
⊢ (trace Rₘ Sₘ) ((algebraMap S Sₘ) (b i * b j)) = (algebraMap R Rₘ) ((trace R S) (b i * b j))
state_after: no goals
tactic: exact Algebra.trace_localization R M _