Theorem: Graph.EdgePath.concat_toList (GroupComp/Graph.lean)

State before:
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G✝ : Graph V E
u✝ v✝ w✝ : V
e✝ : EdgeBetween G✝ v✝ w✝
G : Graph V E
v w u : V
p : EdgePath G v w
e : EdgeBetween G w u
⊢ toList (concat p e) = List.concat (toList p) e.edge
Tactic:
induction p with
| nil v => 
  simp [nil_toList]
  rw [concat, cons_toList, nil_toList]
| cons e p' ih =>
  simp [cons_toList, ih]
State after:
no goals

State before:
case nil
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G✝ : Graph V E
u✝ v✝¹ w✝ : V
e✝ : EdgeBetween G✝ v✝¹ w✝
G : Graph V E
v✝ w u v : V
e : EdgeBetween G v u
⊢ toList (concat (nil v) e) = List.concat (toList (nil v)) e.edge
Tactic:
simp [nil_toList]
State after:
case nil
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G✝ : Graph V E
u✝ v✝¹ w✝ : V
e✝ : EdgeBetween G✝ v✝¹ w✝
G : Graph V E
v✝ w u v : V
e : EdgeBetween G v u
⊢ toList (concat (nil v) e) = [e.edge]

State before:
case nil
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G✝ : Graph V E
u✝ v✝¹ w✝ : V
e✝ : EdgeBetween G✝ v✝¹ w✝
G : Graph V E
v✝ w u v : V
e : EdgeBetween G v u
⊢ toList (concat (nil v) e) = [e.edge]
Tactic:
rw [concat, cons_toList, nil_toList]
State after:
no goals

State before:
case cons
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G✝ : Graph V E
u✝¹ v✝¹ w✝¹ : V
e✝¹ : EdgeBetween G✝ v✝¹ w✝¹
G : Graph V E
v w u v✝ w✝ u✝ : V
e✝ : EdgeBetween G v✝ w✝
p' : EdgePath G w✝ u✝
ih : ∀ (e : EdgeBetween G u✝ u), toList (concat p' e) = List.concat (toList p') e.edge
e : EdgeBetween G u✝ u
⊢ toList (concat (cons e✝ p') e) = List.concat (toList (cons e✝ p')) e.edge
Tactic:
simp [cons_toList, ih]
State after:
no goals