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

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

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

tactic: cases' hx with y hx
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.601958
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.602474
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f g : E →ₗ.[R] F
h : f ≤ g
x : E × F
hx : ∃ y, ↑y = x.fst ∧ ↑f y = x.snd
⊢ ∃ y, ↑y = x.fst ∧ ↑g y = x.snd

tactic: use ⟨y, h.1 y.2⟩
state_before: case 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.601958
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.602474
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : f ≤ g
x : E × F
y : { x // x ∈ f.domain }
hx : ↑y = x.fst ∧ ↑f y = x.snd
⊢ ∃ y, ↑y = x.fst ∧ ↑g y = x.snd

tactic: simp only [hx, Submodule.coe_mk, eq_self_iff_true, true_and_iff]
state_before: case 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.601958
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.602474
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : f ≤ g
x : E × F
y : { x // x ∈ f.domain }
hx : ↑y = x.fst ∧ ↑f y = x.snd
⊢ ↑{ val := ↑y, property := (_ : ↑y ∈ g.domain) } = x.fst ∧ ↑g { val := ↑y, property := (_ : ↑y ∈ g.domain) } = x.snd

tactic: convert hx.2 using 1
state_before: case 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.601958
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.602474
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : f ≤ g
x : E × F
y : { x // x ∈ f.domain }
hx : ↑y = x.fst ∧ ↑f y = x.snd
⊢ ↑g { val := x.fst, property := (_ : (fun x => x ∈ g.domain) x.fst) } = x.snd

tactic: refine' (h.2 _).symm
state_before: case h.e'_2
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.601958
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.602474
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : f ≤ g
x : E × F
y : { x // x ∈ f.domain }
hx : ↑y = x.fst ∧ ↑f y = x.snd
⊢ ↑g { val := x.fst, property := (_ : (fun x => x ∈ g.domain) x.fst) } = ↑f y

tactic: simp only [hx.1, Submodule.coe_mk]
state_before: case h.e'_2
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.601958
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.602474
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f g : E →ₗ.[R] F
h : f ≤ g
x : E × F
y : { x // x ∈ f.domain }
hx : ↑y = x.fst ∧ ↑f y = x.snd
⊢ ↑y = ↑{ val := x.fst, property := (_ : (fun x => x ∈ g.domain) x.fst) }