Theorem: Finsupp.graph_injective
File: Mathlib/Data/Finsupp/Basic.lean

tactic: intro f g h
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
⊢ Injective graph
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
⊢ f = g

tactic: classical
  have hsup : f.support = g.support := by rw [← image_fst_graph, h, image_fst_graph]
  refine ext_iff'.2 ⟨hsup, fun x hx => apply_eq_of_mem_graph <| h.symm ▸ ?_⟩
  exact mk_mem_graph _ (hsup ▸ hx)
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
⊢ f = g
state_after: no goals

tactic: have hsup : f.support = g.support := by rw [← image_fst_graph, h, image_fst_graph]
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
⊢ f = g
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
hsup : f.support = g.support
⊢ f = g

tactic: refine ext_iff'.2 ⟨hsup, fun x hx => apply_eq_of_mem_graph <| h.symm ▸ ?_⟩
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
hsup : f.support = g.support
⊢ f = g
state_after: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
hsup : f.support = g.support
x : α
hx : x ∈ f.support
⊢ (x, g x) ∈ g.graph

tactic: exact mk_mem_graph _ (hsup ▸ hx)
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
hsup : f.support = g.support
x : α
hx : x ∈ f.support
⊢ (x, g x) ∈ g.graph
state_after: no goals

tactic: rw [← image_fst_graph, h, image_fst_graph]
state_before: α✝ : Type u_1
β : Type u_2
γ : Type u_3
ι : Type u_4
M✝ : Type u_5
M' : Type u_6
N : Type u_7
P : Type u_8
G : Type u_9
H : Type u_10
R : Type u_11
S : Type u_12
inst✝¹ : Zero M✝
α : Type u_13
M : Type u_14
inst✝ : Zero M
f g : α →₀ M
h : f.graph = g.graph
⊢ f.support = g.support
state_after: no goals