Theorem: SimpleGraph.sum_incMatrix_apply_of_mem_edgeSet
File: Mathlib/Combinatorics/SimpleGraph/IncMatrix.lean

tactic: classical
  refine e.ind ?_
  intro a b h
  rw [mem_edgeSet] at h
  rw [← Nat.cast_two, ← card_pair h.ne]
  simp only [incMatrix_apply', sum_boole, mk'_mem_incidenceSet_iff, h, true_and_iff]
  congr 2
  ext e
  simp only [mem_filter, mem_univ, true_and_iff, mem_insert, mem_singleton]
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a b : α
e : Sym2 α
inst✝ : Fintype α
⊢ e ∈ G.edgeSet → ∑ a : α, incMatrix R G a e = 2
state_after: no goals

tactic: refine e.ind ?_
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a b : α
e : Sym2 α
inst✝ : Fintype α
⊢ e ∈ G.edgeSet → ∑ a : α, incMatrix R G a e = 2
state_after: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a b : α
e : Sym2 α
inst✝ : Fintype α
⊢ ∀ (x y : α), s(x, y) ∈ G.edgeSet → ∑ a : α, incMatrix R G a s(x, y) = 2

tactic: intro a b h
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a b : α
e : Sym2 α
inst✝ : Fintype α
⊢ ∀ (x y : α), s(x, y) ∈ G.edgeSet → ∑ a : α, incMatrix R G a s(x, y) = 2
state_after: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : s(a, b) ∈ G.edgeSet
⊢ ∑ a_1 : α, incMatrix R G a_1 s(a, b) = 2

tactic: rw [mem_edgeSet] at h
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : s(a, b) ∈ G.edgeSet
⊢ ∑ a_1 : α, incMatrix R G a_1 s(a, b) = 2
state_after: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ ∑ a_1 : α, incMatrix R G a_1 s(a, b) = 2

tactic: rw [← Nat.cast_two, ← card_pair h.ne]
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ ∑ a_1 : α, incMatrix R G a_1 s(a, b) = 2
state_after: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ ∑ a_1 : α, incMatrix R G a_1 s(a, b) = ↑{a, b}.card

tactic: simp only [incMatrix_apply', sum_boole, mk'_mem_incidenceSet_iff, h, true_and_iff]
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ ∑ a_1 : α, incMatrix R G a_1 s(a, b) = ↑{a, b}.card
state_after: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ ↑(filter (fun x => x = a ∨ x = b) univ).card = ↑{a, b}.card

tactic: congr 2
state_before: R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ ↑(filter (fun x => x = a ∨ x = b) univ).card = ↑{a, b}.card
state_after: case e_a.e_s
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ filter (fun x => x = a ∨ x = b) univ = {a, b}

tactic: ext e
state_before: case e_a.e_s
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
⊢ filter (fun x => x = a ∨ x = b) univ = {a, b}
state_after: case e_a.e_s.a
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e✝ : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
e : α
⊢ e ∈ filter (fun x => x = a ∨ x = b) univ ↔ e ∈ {a, b}

tactic: simp only [mem_filter, mem_univ, true_and_iff, mem_insert, mem_singleton]
state_before: case e_a.e_s.a
R : Type u_1
α : Type u_2
G : SimpleGraph α
inst✝² : Fintype (Sym2 α)
inst✝¹ : NonAssocSemiring R
a✝ b✝ : α
e✝ : Sym2 α
inst✝ : Fintype α
a b : α
h : G.Adj a b
e : α
⊢ e ∈ filter (fun x => x = a ∨ x = b) univ ↔ e ∈ {a, b}
state_after: no goals