Theorem: Graph.reduction_homotopic_self (GroupComp/Graph/ReducedPaths.lean)

State before:
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G : Graph V E
v w : V
p : EdgePath G v w
⊢ [[reduction p]] = [[p]]
Tactic:
induction p with
| nil _ =>
  simp [reduction_nil]
| cons e p ih =>
  simp [reduction_cons, ←cons_homotopic_redCons]
  apply cons_equiv_of_equiv
  assumption
State after:
no goals

State before:
case nil
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G : Graph V E
v w v✝ : V
⊢ [[reduction (nil v✝)]] = [[nil v✝]]
Tactic:
simp [reduction_nil]
State after:
no goals

State before:
case cons
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G : Graph V E
v w v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p : EdgePath G w✝ u✝
ih : [[reduction p]] = [[p]]
⊢ [[reduction (cons e p)]] = [[cons e p]]
Tactic:
simp [reduction_cons, ←cons_homotopic_redCons]
State after:
case cons
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G : Graph V E
v w v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p : EdgePath G w✝ u✝
ih : [[reduction p]] = [[p]]
⊢ [[cons e (reduction p)]] = [[cons e p]]

State before:
case cons
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G : Graph V E
v w v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p : EdgePath G w✝ u✝
ih : [[reduction p]] = [[p]]
⊢ [[cons e (reduction p)]] = [[cons e p]]
Tactic:
apply cons_equiv_of_equiv
State after:
case cons.a
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G : Graph V E
v w v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p : EdgePath G w✝ u✝
ih : [[reduction p]] = [[p]]
⊢ [[reduction p]] = [[p]]

State before:
case cons.a
V : Type u
E : Type v
inst✝¹ : DecidableEq V
inst✝ : DecidableEq E
G : Graph V E
v w v✝ w✝ u✝ : V
e : EdgeBetween G v✝ w✝
p : EdgePath G w✝ u✝
ih : [[reduction p]] = [[p]]
⊢ [[reduction p]] = [[p]]
Tactic:
assumption
State after:
no goals