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

tactic: ext i j
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: 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 + (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: 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
⊢ (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: by_cases h : G.Adj 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
⊢ (((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: aesop
state_before: 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
state_after: no goals

tactic: rw [if_neg h]
state_before: 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
state_after: 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) + 0 + if i = j then 0 else if 0 = 0 then 1 else 0) = 1

tactic: by_cases heq : i = j
state_before: 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) + 0 + if i = j then 0 else if 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
heq : i = j
⊢ ((if i = j then 1 else 0) + 0 + if i = j then 0 else if 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
heq : ¬i = j
⊢ ((if i = j then 1 else 0) + 0 + if i = j then 0 else if 0 = 0 then 1 else 0) = 1

tactic: repeat rw [if_pos heq, add_zero]
state_before: 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
heq : i = j
⊢ ((if i = j then 1 else 0) + 0 + if i = j then 0 else if 0 = 0 then 1 else 0) = 1
state_after: no goals

tactic: rw [if_pos heq, add_zero]
state_before: 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
heq : i = j
⊢ (1 + if i = j then 0 else if 0 = 0 then 1 else 0) = 1
state_after: no goals

tactic: rw [if_neg heq, if_neg heq, zero_add, zero_add, if_pos (refl 0)]
state_before: 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
heq : ¬i = j
⊢ ((if i = j then 1 else 0) + 0 + if i = j then 0 else if 0 = 0 then 1 else 0) = 1
state_after: no goals