Theorem: LinearPMap.mem_graph_snd_inj
File: Mathlib/LinearAlgebra/LinearPMap.lean

tactic: rw [mem_graph_iff] at hx hy
state_before: R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.552748
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.553264
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x y : E
x' y' : F
hx : (x, x') ∈ graph f
hy : (y, y') ∈ graph f
hxy : x = y
⊢ x' = y'

tactic: rcases hx with ⟨x'', hx1, hx2⟩
state_before: R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.552748
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.553264
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x y : E
x' y' : F
hx : ∃ y, ↑y = (x, x').fst ∧ ↑f y = (x, x').snd
hy : ∃ y_1, ↑y_1 = (y, y').fst ∧ ↑f y_1 = (y, y').snd
hxy : x = y
⊢ x' = y'

tactic: rcases hy with ⟨y'', hy1, hy2⟩
state_before: case intro.intro
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.552748
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.553264
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x y : E
x' y' : F
hy : ∃ y_1, ↑y_1 = (y, y').fst ∧ ↑f y_1 = (y, y').snd
hxy : x = y
x'' : { x // x ∈ f.domain }
hx1 : ↑x'' = (x, x').fst
hx2 : ↑f x'' = (x, x').snd
⊢ x' = y'

tactic: simp only at hx1 hx2 hy1 hy2
state_before: case intro.intro.intro.intro
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.552748
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.553264
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x y : E
x' y' : F
hxy : x = y
x'' : { x // x ∈ f.domain }
hx1 : ↑x'' = (x, x').fst
hx2 : ↑f x'' = (x, x').snd
y'' : { x // x ∈ f.domain }
hy1 : ↑y'' = (y, y').fst
hy2 : ↑f y'' = (y, y').snd
⊢ x' = y'

tactic: rw [← hx1, ← hy1, SetLike.coe_eq_coe] at hxy
state_before: case intro.intro.intro.intro
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.552748
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.553264
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x y : E
x' y' : F
hxy : x = y
x'' : { x // x ∈ f.domain }
hx1 : ↑x'' = x
hx2 : ↑f x'' = x'
y'' : { x // x ∈ f.domain }
hy1 : ↑y'' = y
hy2 : ↑f y'' = y'
⊢ x' = y'

tactic: rw [← hx2, ← hy2, hxy]
state_before: case intro.intro.intro.intro
R : Type u_1
inst✝⁹ : Ring R
E : Type u_2
inst✝⁸ : AddCommGroup E
inst✝⁷ : Module R E
F : Type u_3
inst✝⁶ : AddCommGroup F
inst✝⁵ : Module R F
G : Type ?u.552748
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.553264
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x y : E
x' y' : F
x'' : { x // x ∈ f.domain }
hx1 : ↑x'' = x
hx2 : ↑f x'' = x'
y'' : { x // x ∈ f.domain }
hxy : x'' = y''
hy1 : ↑y'' = y
hy2 : ↑f y'' = y'
⊢ x' = y'