Theorem: SimpleGraph.set_walk_length_succ_eq
File: Mathlib/Combinatorics/SimpleGraph/Connectivity.lean

tactic: ext p
state_before: V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
⊢ {p | p.length = n.succ} = ⋃ w, ⋃ (h : G.Adj u w), Walk.cons h '' {p' | p'.length = n}
state_after: case h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
p : G.Walk u v
⊢ p ∈ {p | p.length = n.succ} ↔ p ∈ ⋃ w, ⋃ (h : G.Adj u w), Walk.cons h '' {p' | p'.length = n}

tactic: cases' p with _ _ w _ huw pwv
state_before: case h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
p : G.Walk u v
⊢ p ∈ {p | p.length = n.succ} ↔ p ∈ ⋃ w, ⋃ (h : G.Adj u w), Walk.cons h '' {p' | p'.length = n}
state_after: case h.nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u : V
n : ℕ
⊢ Walk.nil ∈ {p | p.length = n.succ} ↔ Walk.nil ∈ ⋃ w, ⋃ (h : G.Adj u w), Walk.cons h '' {p' | p'.length = n}

case h.cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ Walk.cons huw pwv ∈ {p | p.length = n.succ} ↔
    Walk.cons huw pwv ∈ ⋃ w, ⋃ (h : G.Adj u w), Walk.cons h '' {p' | p'.length = n}

tactic: simp [eq_comm]
state_before: case h.nil
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u : V
n : ℕ
⊢ Walk.nil ∈ {p | p.length = n.succ} ↔ Walk.nil ∈ ⋃ w, ⋃ (h : G.Adj u w), Walk.cons h '' {p' | p'.length = n}
state_after: no goals

tactic: simp only [Nat.succ_eq_add_one, Set.mem_setOf_eq, Walk.length_cons, add_left_inj,
  Set.mem_iUnion, Set.mem_image, exists_prop]
state_before: case h.cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ Walk.cons huw pwv ∈ {p | p.length = n.succ} ↔
    Walk.cons huw pwv ∈ ⋃ w, ⋃ (h : G.Adj u w), Walk.cons h '' {p' | p'.length = n}
state_after: case h.cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ pwv.length = n ↔ ∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = n ∧ Walk.cons ⋯ x = Walk.cons huw pwv

tactic: constructor
state_before: case h.cons
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ pwv.length = n ↔ ∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = n ∧ Walk.cons ⋯ x = Walk.cons huw pwv
state_after: case h.cons.mp
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ pwv.length = n → ∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = n ∧ Walk.cons ⋯ x = Walk.cons huw pwv

case h.cons.mpr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ (∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = n ∧ Walk.cons ⋯ x = Walk.cons huw pwv) → pwv.length = n

tactic: rintro rfl
state_before: case h.cons.mp
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ pwv.length = n → ∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = n ∧ Walk.cons ⋯ x = Walk.cons huw pwv
state_after: case h.cons.mp
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ ∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = pwv.length ∧ Walk.cons ⋯ x = Walk.cons huw pwv

tactic: exact ⟨w, huw, pwv, rfl, rfl⟩
state_before: case h.cons.mp
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ ∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = pwv.length ∧ Walk.cons ⋯ x = Walk.cons huw pwv
state_after: no goals

tactic: rintro ⟨w, huw, pwv, rfl, rfl, rfl⟩
state_before: case h.cons.mpr
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v : V
n : ℕ
w : V
huw : G.Adj u w
pwv : G.Walk w v
⊢ (∃ i, ∃ (h : G.Adj u i), ∃ x, x.length = n ∧ Walk.cons ⋯ x = Walk.cons huw pwv) → pwv.length = n
state_after: case h.cons.mpr.intro.intro.intro.intro.refl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
huw✝ : G.Adj u w
pwv : G.Walk w v
huw : G.Adj u w
⊢ pwv.length = pwv.length

tactic: rfl
state_before: case h.cons.mpr.intro.intro.intro.intro.refl
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
u v w : V
huw✝ : G.Adj u w
pwv : G.Walk w v
huw : G.Adj u w
⊢ pwv.length = pwv.length
state_after: no goals