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

tactic: constructor
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
⊢ f ≤ g

tactic: rintro ⟨x, hx⟩ ⟨y, hy⟩ hxy
state_before: case right
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
⊢ ∀ ⦃x : { x // x ∈ f.domain }⦄ ⦃y : { x // x ∈ g.domain }⦄, ↑x = ↑y → ↑f x = ↑g y

tactic: rw [image_iff]
state_before: case right.mk.mk
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx : x ∈ f.domain
y : E
hy : y ∈ g.domain
hxy : ↑{ val := x, property := hx } = ↑{ val := y, property := hy }
⊢ ↑f { val := x, property := hx } = ↑g { val := y, property := hy }

tactic: refine' h _
state_before: case right.mk.mk
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx : x ∈ f.domain
y : E
hy : y ∈ g.domain
hxy : ↑{ val := x, property := hx } = ↑{ val := y, property := hy }
⊢ (y, ↑f { val := x, property := hx }) ∈ graph g

tactic: simp only [Submodule.coe_mk] at hxy
state_before: case right.mk.mk
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx : x ∈ f.domain
y : E
hy : y ∈ g.domain
hxy : ↑{ val := x, property := hx } = ↑{ val := y, property := hy }
⊢ (y, ↑f { val := x, property := hx }) ∈ graph f

tactic: rw [hxy] at hx
state_before: case right.mk.mk
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx : x ∈ f.domain
y : E
hy : y ∈ g.domain
hxy : x = y
⊢ (y, ↑f { val := x, property := hx }) ∈ graph f

tactic: rw [← image_iff hx]
state_before: case right.mk.mk
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx✝ : x ∈ f.domain
y : E
hx : y ∈ f.domain
hy : y ∈ g.domain
hxy : x = y
⊢ (y, ↑f { val := x, property := hx✝ }) ∈ graph f

tactic: simp [hxy]
state_before: case right.mk.mk
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx✝ : x ∈ f.domain
y : E
hx : y ∈ f.domain
hy : y ∈ g.domain
hxy : x = y
⊢ ↑f { val := x, property := hx✝ } = ↑f { val := y, property := hx }

tactic: intro x hx
state_before: case left
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
⊢ f.domain ≤ g.domain

tactic: rw [mem_domain_iff] at hx⊢
state_before: case left
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx : x ∈ f.domain
⊢ x ∈ g.domain

tactic: cases' hx with y hx
state_before: case left
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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
hx : ∃ y, (x, y) ∈ graph f
⊢ ∃ y, (x, y) ∈ graph g

tactic: use y
state_before: case left.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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
y : F
hx : (x, y) ∈ graph f
⊢ ∃ y, (x, y) ∈ graph g

tactic: exact h hx
state_before: case left.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.595684
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.596200
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : graph f ≤ graph g
x : E
y : F
hx : (x, y) ∈ graph f
⊢ (x, y) ∈ graph g