Theorem: IsBaseChange.alg_hom_ext
File: Mathlib/RingTheory/IsTensorProduct.lean

tactic: ext x
state_before: R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
⊢ g₁ = g₂

tactic: refine h.inductionOn x ?_ ?_ ?_ ?_
state_before: case h
R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
x : N
⊢ ↑g₁ x = ↑g₂ x

tactic: rw [map_zero, map_zero]
state_before: case h.refine_1
R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
x : N
⊢ ↑g₁ 0 = ↑g₂ 0

tactic: assumption
state_before: case h.refine_2
R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
x : N
⊢ ∀ (m : M), ↑g₁ (↑f m) = ↑g₂ (↑f m)

tactic: intro s n e'
state_before: case h.refine_3
R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
x : N
⊢ ∀ (s : S) (n : N), ↑g₁ n = ↑g₂ n → ↑g₁ (s • n) = ↑g₂ (s • n)

tactic: rw [g₁.map_smul, g₂.map_smul, e']
state_before: case h.refine_3
R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
x : N
s : S
n : N
e' : ↑g₁ n = ↑g₂ n
⊢ ↑g₁ (s • n) = ↑g₂ (s • n)

tactic: intro x y e₁ e₂
state_before: case h.refine_4
R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
x : N
⊢ ∀ (n₁ n₂ : N), ↑g₁ n₁ = ↑g₂ n₁ → ↑g₁ n₂ = ↑g₂ n₂ → ↑g₁ (n₁ + n₂) = ↑g₂ (n₁ + n₂)

tactic: rw [map_add, map_add, e₁, e₂]
state_before: case h.refine_4
R : Type u_2
M : Type v₁
N : Type v₂
S : Type v₃
inst✝¹² : AddCommMonoid M
inst✝¹¹ : AddCommMonoid N
inst✝¹⁰ : CommRing R
inst✝⁹ : CommRing S
inst✝⁸ : Algebra R S
inst✝⁷ : Module R M
inst✝⁶ : Module R N
inst✝⁵ : Module S N
inst✝⁴ : IsScalarTower R S N
f : M →ₗ[R] N
h : IsBaseChange S f
P : Type ?u.233499
Q : Type u_1
inst✝³ : AddCommMonoid P
inst✝² : Module R P
inst✝¹ : AddCommMonoid Q
inst✝ : Module S Q
g₁ g₂ : N →ₗ[S] Q
e : ∀ (x : M), ↑g₁ (↑f x) = ↑g₂ (↑f x)
x✝ x y : N
e₁ : ↑g₁ x = ↑g₂ x
e₂ : ↑g₁ y = ↑g₂ y
⊢ ↑g₁ (x + y) = ↑g₂ (x + y)