Theorem: Algebra.norm_eq_of_equiv_equiv
File: Mathlib/RingTheory/Norm.lean

tactic: letI := (RingHom.comp (e₂ : B₁ →+* B₂) (algebraMap A₁ B₁)).toAlgebra' ?_
state_before: R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
⊢ (norm A₁) x = e₁.symm ((norm A₂) (e₂ x))
state_after: case refine_2
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
this : Algebra A₁ B₂ := ((↑e₂).comp (algebraMap A₁ B₁)).toAlgebra' ?refine_1
⊢ (norm A₁) x = e₁.symm ((norm A₂) (e₂ x))

case refine_1
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
⊢ ∀ (c : A₁) (x : B₂), ((↑e₂).comp (algebraMap A₁ B₁)) c * x = x * ((↑e₂).comp (algebraMap A₁ B₁)) c

tactic: intros c x
state_before: case refine_1
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
⊢ ∀ (c : A₁) (x : B₂), ((↑e₂).comp (algebraMap A₁ B₁)) c * x = x * ((↑e₂).comp (algebraMap A₁ B₁)) c
state_after: case refine_1
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x✝ : B₁
c : A₁
x : B₂
⊢ ((↑e₂).comp (algebraMap A₁ B₁)) c * x = x * ((↑e₂).comp (algebraMap A₁ B₁)) c

tactic: apply e₂.symm.injective
state_before: case refine_1
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x✝ : B₁
c : A₁
x : B₂
⊢ ((↑e₂).comp (algebraMap A₁ B₁)) c * x = x * ((↑e₂).comp (algebraMap A₁ B₁)) c
state_after: case refine_1.a
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x✝ : B₁
c : A₁
x : B₂
⊢ e₂.symm (((↑e₂).comp (algebraMap A₁ B₁)) c * x) = e₂.symm (x * ((↑e₂).comp (algebraMap A₁ B₁)) c)

tactic: simp only [RingHom.coe_comp, RingHom.coe_coe, Function.comp_apply, _root_.map_mul,
  RingEquiv.symm_apply_apply, commutes]
state_before: case refine_1.a
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x✝ : B₁
c : A₁
x : B₂
⊢ e₂.symm (((↑e₂).comp (algebraMap A₁ B₁)) c * x) = e₂.symm (x * ((↑e₂).comp (algebraMap A₁ B₁)) c)
state_after: no goals

tactic: let e' : B₁ ≃ₐ[A₁] B₂ := { e₂ with commutes' := fun _ ↦ rfl }
state_before: case refine_2
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
this : Algebra A₁ B₂ := ((↑e₂).comp (algebraMap A₁ B₁)).toAlgebra' ?refine_1
⊢ (norm A₁) x = e₁.symm ((norm A₂) (e₂ x))
state_after: case refine_2
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
this : Algebra A₁ B₂ := ((↑e₂).comp (algebraMap A₁ B₁)).toAlgebra' ?refine_1
e' : B₁ ≃ₐ[A₁] B₂ := { toEquiv := e₂.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
⊢ (norm A₁) x = e₁.symm ((norm A₂) (e₂ x))

tactic: rw [← Algebra.norm_eq_of_ringEquiv e₁ he, ← Algebra.norm_eq_of_algEquiv e',
  RingEquiv.symm_apply_apply]
state_before: case refine_2
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
this : Algebra A₁ B₂ := ((↑e₂).comp (algebraMap A₁ B₁)).toAlgebra' ?refine_1
e' : B₁ ≃ₐ[A₁] B₂ := { toEquiv := e₂.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
⊢ (norm A₁) x = e₁.symm ((norm A₂) (e₂ x))
state_after: case refine_2
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
this : Algebra A₁ B₂ := ((↑e₂).comp (algebraMap A₁ B₁)).toAlgebra' ?refine_1
e' : B₁ ≃ₐ[A₁] B₂ := { toEquiv := e₂.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
⊢ (norm A₁) (e' x) = (norm A₁) (e₂ x)

tactic: rfl
state_before: case refine_2
R : Type u_1
S : Type u_2
T : Type u_3
inst✝¹⁵ : CommRing R
inst✝¹⁴ : Ring S
inst✝¹³ : Algebra R S
K : Type u_4
L : Type u_5
F : Type u_6
inst✝¹² : Field K
inst✝¹¹ : Field L
inst✝¹⁰ : Field F
inst✝⁹ : Algebra K L
inst✝⁸ : Algebra K F
ι : Type w
E : Type u_7
inst✝⁷ : Field E
inst✝⁶ : Algebra K E
A₁ : Type u_8
B₁ : Type u_9
A₂ : Type u_10
B₂ : Type u_11
inst✝⁵ : CommRing A₁
inst✝⁴ : Ring B₁
inst✝³ : CommRing A₂
inst✝² : Ring B₂
inst✝¹ : Algebra A₁ B₁
inst✝ : Algebra A₂ B₂
e₁ : A₁ ≃+* A₂
e₂ : B₁ ≃+* B₂
he : (algebraMap A₂ B₂).comp ↑e₁ = (↑e₂).comp (algebraMap A₁ B₁)
x : B₁
this : Algebra A₁ B₂ := ((↑e₂).comp (algebraMap A₁ B₁)).toAlgebra' ?refine_1
e' : B₁ ≃ₐ[A₁] B₂ := { toEquiv := e₂.toEquiv, map_mul' := ⋯, map_add' := ⋯, commutes' := ⋯ }
⊢ (norm A₁) (e' x) = (norm A₁) (e₂ x)
state_after: no goals