Theorem: SimpleGraph.adj_incidenceSet_inter
File: Mathlib/Combinatorics/SimpleGraph/Basic.lean

tactic: ext e'
state_before: ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
⊢ G.incidenceSet v ∩ G.incidenceSet (Sym2.Mem.other h) = {e}
state_after: case h
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
⊢ e' ∈ G.incidenceSet v ∩ G.incidenceSet (Sym2.Mem.other h) ↔ e' ∈ {e}

tactic: simp only [incidenceSet, Set.mem_sep_iff, Set.mem_inter_iff, Set.mem_singleton_iff]
state_before: case h
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
⊢ e' ∈ G.incidenceSet v ∩ G.incidenceSet (Sym2.Mem.other h) ↔ e' ∈ {e}
state_after: case h
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
⊢ (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e' ↔ e' = e

tactic: refine ⟨fun h' => ?_, ?_⟩
state_before: case h
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
⊢ (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e' ↔ e' = e
state_after: case h.refine_1
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
h' : (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'
⊢ e' = e

case h.refine_2
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
⊢ e' = e → (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'

tactic: rw [← Sym2.other_spec h]
state_before: case h.refine_1
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
h' : (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'
⊢ e' = e
state_after: case h.refine_1
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
h' : (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'
⊢ e' = s(v, Sym2.Mem.other h)

tactic: exact (Sym2.mem_and_mem_iff (edge_other_ne G he h).symm).mp ⟨h'.1.2, h'.2.2⟩
state_before: case h.refine_1
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
h' : (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'
⊢ e' = s(v, Sym2.Mem.other h)
state_after: no goals

tactic: rintro rfl
state_before: case h.refine_2
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e✝ : Sym2 V
v : V
e : Sym2 V
he : e ∈ G.edgeSet
h : v ∈ e
e' : Sym2 V
⊢ e' = e → (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'
state_after: case h.refine_2
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e : Sym2 V
v : V
e' : Sym2 V
he : e' ∈ G.edgeSet
h : v ∈ e'
⊢ (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'

tactic: exact ⟨⟨he, h⟩, he, Sym2.other_mem _⟩
state_before: case h.refine_2
ι : Sort u_1
V : Type u
G : SimpleGraph V
a b c u v✝ w : V
e : Sym2 V
v : V
e' : Sym2 V
he : e' ∈ G.edgeSet
h : v ∈ e'
⊢ (e' ∈ G.edgeSet ∧ v ∈ e') ∧ e' ∈ G.edgeSet ∧ Sym2.Mem.other h ∈ e'
state_after: no goals