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

tactic: constructor <;> intro h
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.569553
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.570069
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f : E →ₗ.[R] F
x : E
⊢ x ∈ f.domain ↔ ∃ y, (x, y) ∈ graph f

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

tactic: rw [mem_graph_iff] at h
state_before: case mpr.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.569553
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.570069
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x : E
y : F
h : (x, y) ∈ graph f
⊢ x ∈ f.domain

tactic: cases' h with x' h
state_before: case mpr.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.569553
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.570069
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x : E
y : F
h : ∃ y_1, ↑y_1 = (x, y).fst ∧ ↑f y_1 = (x, y).snd
⊢ x ∈ f.domain

tactic: simp only at h
state_before: case mpr.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.569553
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.570069
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x : E
y : F
x' : { x // x ∈ f.domain }
h : ↑x' = (x, y).fst ∧ ↑f x' = (x, y).snd
⊢ x ∈ f.domain

tactic: rw [← h.1]
state_before: case mpr.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.569553
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.570069
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x : E
y : F
x' : { x // x ∈ f.domain }
h : ↑x' = x ∧ ↑f x' = y
⊢ x ∈ f.domain

tactic: simp
state_before: case mpr.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.569553
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.570069
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y✝ : M
f : E →ₗ.[R] F
x : E
y : F
x' : { x // x ∈ f.domain }
h : ↑x' = x ∧ ↑f x' = y
⊢ ↑x' ∈ f.domain

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

tactic: exact f.mem_graph ⟨x, h⟩
state_before: case mp
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.569553
inst✝⁴ : AddCommGroup G
inst✝³ : Module R G
M : Type ?u.570069
inst✝² : Monoid M
inst✝¹ : DistribMulAction M F
inst✝ : SMulCommClass R M F
y : M
f : E →ₗ.[R] F
x : E
h : x ∈ f.domain
⊢ (x, ↑f { val := x, property := h }) ∈ graph f