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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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') ∈ f.graph
hy : (y, y') ∈ f.graph
hxy : x = y
⊢ x' = y'
state_after: 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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').1 ∧ ↑f y = (x, x').2
hy : ∃ y_1, ↑y_1 = (y, y').1 ∧ ↑f y_1 = (y, y').2
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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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').1 ∧ ↑f y = (x, x').2
hy : ∃ y_1, ↑y_1 = (y, y').1 ∧ ↑f y_1 = (y, y').2
hxy : x = y
⊢ x' = y'
state_after: 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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').1 ∧ ↑f y_1 = (y, y').2
hxy : x = y
x'' : ↥f.domain
hx1 : ↑x'' = (x, x').1
hx2 : ↑f x'' = (x, x').2
⊢ 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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').1 ∧ ↑f y_1 = (y, y').2
hxy : x = y
x'' : ↥f.domain
hx1 : ↑x'' = (x, x').1
hx2 : ↑f x'' = (x, x').2
⊢ x' = y'
state_after: 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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'' : ↥f.domain
hx1 : ↑x'' = (x, x').1
hx2 : ↑f x'' = (x, x').2
y'' : ↥f.domain
hy1 : ↑y'' = (y, y').1
hy2 : ↑f y'' = (y, y').2
⊢ 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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'' : ↥f.domain
hx1 : ↑x'' = (x, x').1
hx2 : ↑f x'' = (x, x').2
y'' : ↥f.domain
hy1 : ↑y'' = (y, y').1
hy2 : ↑f y'' = (y, y').2
⊢ x' = y'
state_after: 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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'' : ↥f.domain
hx1 : ↑x'' = x
hx2 : ↑f x'' = x'
y'' : ↥f.domain
hy1 : ↑y'' = y
hy2 : ↑f y'' = y'
⊢ 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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'' : ↥f.domain
hx1 : ↑x'' = x
hx2 : ↑f x'' = x'
y'' : ↥f.domain
hy1 : ↑y'' = y
hy2 : ↑f y'' = y'
⊢ x' = y'
state_after: 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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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'' : ↥f.domain
hx1 : ↑x'' = x
hx2 : ↑f x'' = x'
y'' : ↥f.domain
hxy : x'' = y''
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_4
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type u_5
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'' : ↥f.domain
hx1 : ↑x'' = x
hx2 : ↑f x'' = x'
y'' : ↥f.domain
hxy : x'' = y''
hy1 : ↑y'' = y
hy2 : ↑f y'' = y'
⊢ x' = y'
state_after: no goals