Theorem: Graph.EdgePath.toList_reverse (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 : V
p : EdgePath G v w
⊢ List.reverse (toList p) = List.map G.bar (toList (reverse p))
Tactic:
induction p with
| nil _ => 
  simp [nil_toList]
| cons e p' ih =>
  simp [cons_toList, reverse_cons, concat_toList]
  simp [ih, EdgeBetween.bar]
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 v✝ : V
⊢ List.reverse (toList (nil v✝)) = List.map G.bar (toList (reverse (nil v✝)))
Tactic:
simp [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 v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p' : EdgePath G w✝ u✝
ih : List.reverse (toList p') = List.map G.bar (toList (reverse p'))
⊢ List.reverse (toList (cons e p')) = List.map G.bar (toList (reverse (cons e p')))
Tactic:
simp [cons_toList, reverse_cons, concat_toList]
State after:
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 v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p' : EdgePath G w✝ u✝
ih : List.reverse (toList p') = List.map G.bar (toList (reverse p'))
⊢ List.reverse (toList p') = List.map G.bar (toList (reverse p'))

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 v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p' : EdgePath G w✝ u✝
ih : List.reverse (toList p') = List.map G.bar (toList (reverse p'))
⊢ List.reverse (toList p') = List.map G.bar (toList (reverse p'))
Tactic:
simp [ih, EdgeBetween.bar]
State after:
no goals