Theorem: SimpleGraph.one_add_adjMatrix_add_compl_adjMatrix_eq_allOnes
File: Mathlib/Combinatorics/SimpleGraph/AdjMatrix.lean

Proof steps:
state_before: V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
⊢ 1 + adjMatrix α G + (adjMatrix α G).compl = of fun x x => 1
state_after: case a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
⊢ (1 + adjMatrix α G + (adjMatrix α G).compl) i j = of (fun x x => 1) i j
tactic: ext i j
state_before: case a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
⊢ (1 + adjMatrix α G + (adjMatrix α G).compl) i j = of (fun x x => 1) i j
state_after: case a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
⊢ (1 + adjMatrix α G + fun i j => if i = j then 0 else if adjMatrix α G i j = 0 then 1 else 0) i j =
    of (fun x x => 1) i j
tactic: unfold Matrix.compl
state_before: case a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
⊢ (1 + adjMatrix α G + fun i j => if i = j then 0 else if adjMatrix α G i j = 0 then 1 else 0) i j =
    of (fun x x => 1) i j
state_after: case a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
⊢ (((if i = j then 1 else 0) + if G.Adj i j then 1 else 0) +
      if i = j then 0 else if (if G.Adj i j then 1 else 0) = 0 then 1 else 0) =
    1
tactic: rw [of_apply, add_apply, adjMatrix_apply, add_apply, adjMatrix_apply, one_apply]
state_before: case a
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
⊢ (((if i = j then 1 else 0) + if G.Adj i j then 1 else 0) +
      if i = j then 0 else if (if G.Adj i j then 1 else 0) = 0 then 1 else 0) =
    1
state_after: case pos
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
h : G.Adj i j
⊢ (((if i = j then 1 else 0) + if G.Adj i j then 1 else 0) +
      if i = j then 0 else if (if G.Adj i j then 1 else 0) = 0 then 1 else 0) =
    1

case neg
V : Type u_1
α : Type u_2
β : Type u_3
G : SimpleGraph V
inst✝⁴ : DecidableRel G.Adj
inst✝³ : Fintype V
inst✝² : DecidableEq V
inst✝¹ : DecidableEq α
inst✝ : NonAssocSemiring α
i j : V
h : ¬G.Adj i j
⊢ (((if i = j then 1 else 0) + if G.Adj i j then 1 else 0) +
      if i = j then 0 else if (if G.Adj i j then 1 else 0) = 0 then 1 else 0) =
    1
tactic: by_cases h : G.Adj i j