Theorem: Algebra.algebra_ext
File: Mathlib/Algebra/Algebra/Defs.lean

Proof steps:
state_before: R✝ : Type u
S : Type v
A✝ : Type w
B : Type u_1
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_2
inst✝¹ : CommSemiring R
A : Type u_3
inst✝ : Semiring A
P Q : Algebra R A
h : ∀ (r : R), (algebraMap R A) r = (algebraMap R A) r
⊢ P = Q
state_after: R✝ : Type u
S : Type v
A✝ : Type w
B : Type u_1
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_2
inst✝¹ : CommSemiring R
A : Type u_3
inst✝ : Semiring A
P Q : Algebra R A
h : toRingHom = toRingHom
⊢ P = Q
tactic: replace h : P.toRingHom = Q.toRingHom := DFunLike.ext _ _ h
state_before: R✝ : Type u
S : Type v
A✝ : Type w
B : Type u_1
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_2
inst✝¹ : CommSemiring R
A : Type u_3
inst✝ : Semiring A
P Q : Algebra R A
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ P = Q
state_after: case mk.mk
R✝ : Type u
S : Type v
A✝ : Type w
B : Type u_1
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_2
inst✝¹ : CommSemiring R
A : Type u_3
inst✝ : Semiring A
Q : Algebra R A
toRingHom✝ : R →+* A
commutes'✝ : ∀ (r : R) (x : A), toRingHom✝ r * x = x * toRingHom✝ r
P : R → A → A
smul_def'✝ : ∀ (r : R) (x : A), r • x = toRingHom✝ r * x
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ mk toRingHom✝ commutes'✝ smul_def'✝ = Q
tactic: rcases P with @⟨⟨P⟩⟩
state_before: case mk.mk
R✝ : Type u
S : Type v
A✝ : Type w
B : Type u_1
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_2
inst✝¹ : CommSemiring R
A : Type u_3
inst✝ : Semiring A
Q : Algebra R A
toRingHom✝ : R →+* A
commutes'✝ : ∀ (r : R) (x : A), toRingHom✝ r * x = x * toRingHom✝ r
P : R → A → A
smul_def'✝ : ∀ (r : R) (x : A), r • x = toRingHom✝ r * x
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ mk toRingHom✝ commutes'✝ smul_def'✝ = Q
state_after: case mk.mk.mk.mk
R✝ : Type u
S : Type v
A✝ : Type w
B : Type u_1
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_2
inst✝¹ : CommSemiring R
A : Type u_3
inst✝ : Semiring A
toRingHom✝¹ : R →+* A
commutes'✝¹ : ∀ (r : R) (x : A), toRingHom✝¹ r * x = x * toRingHom✝¹ r
P : R → A → A
smul_def'✝¹ : ∀ (r : R) (x : A), r • x = toRingHom✝¹ r * x
toRingHom✝ : R →+* A
commutes'✝ : ∀ (r : R) (x : A), toRingHom✝ r * x = x * toRingHom✝ r
Q : R → A → A
smul_def'✝ : ∀ (r : R) (x : A), r • x = toRingHom✝ r * x
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ mk toRingHom✝¹ commutes'✝¹ smul_def'✝¹ = mk toRingHom✝ commutes'✝ smul_def'✝
tactic: rcases Q with @⟨⟨Q⟩⟩
state_before: case mk.mk.mk.mk
R✝ : Type u
S : Type v
A✝ : Type w
B : Type u_1
inst✝⁷ : CommSemiring R✝
inst✝⁶ : CommSemiring S
inst✝⁵ : Semiring A✝
inst✝⁴ : Algebra R✝ A✝
inst✝³ : Semiring B
inst✝² : Algebra R✝ B
R : Type u_2
inst✝¹ : CommSemiring R
A : Type u_3
inst✝ : Semiring A
toRingHom✝¹ : R →+* A
commutes'✝¹ : ∀ (r : R) (x : A), toRingHom✝¹ r * x = x * toRingHom✝¹ r
P : R → A → A
smul_def'✝¹ : ∀ (r : R) (x : A), r • x = toRingHom✝¹ r * x
toRingHom✝ : R →+* A
commutes'✝ : ∀ (r : R) (x : A), toRingHom✝ r * x = x * toRingHom✝ r
Q : R → A → A
smul_def'✝ : ∀ (r : R) (x : A), r • x = toRingHom✝ r * x
h : toRingHom = toRingHom
h' : (fun x x_1 => x • x_1) = fun x x_1 => x • x_1
⊢ mk toRingHom✝¹ commutes'✝¹ smul_def'✝¹ = mk toRingHom✝ commutes'✝ smul_def'✝
state_after: no goals
tactic: congr