V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ (_ : reverse (reverse (concat p h)) = concat p h) ▸ concatRecAux Hnil Hconcat (reverse (concat p h)) =
    Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p))
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ concatRec Hnil Hconcat (concat p h) = Hconcat p h (concatRec Hnil Hconcat p)
simp only [concatRec]
case h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq ((_ : reverse (reverse (concat p h)) = concat p h) ▸ concatRecAux Hnil Hconcat (reverse (concat p h)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ (_ : reverse (reverse (concat p h)) = concat p h) ▸ concatRecAux Hnil Hconcat (reverse (concat p h)) =
    Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p))
apply eq_of_heq
case h.h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (concatRecAux Hnil Hconcat (reverse (concat p h)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
case h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq ((_ : reverse (reverse (concat p h)) = concat p h) ▸ concatRecAux Hnil Hconcat (reverse (concat p h)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
apply rec_heq_of_heq
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (concatRecAux Hnil Hconcat (reverse (concat p h))) (concatRecAux Hnil Hconcat (cons (_ : Adj G w v) (reverse p)))

V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (concatRecAux Hnil Hconcat (cons (_ : Adj G w v) (reverse p)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
case h.h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (concatRecAux Hnil Hconcat (reverse (concat p h)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
trans concatRecAux @Hnil @Hconcat (cons h.symm p.reverse)
case e_8.h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ reverse (concat p h) = cons (_ : Adj G w v) (reverse p)
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (concatRecAux Hnil Hconcat (reverse (concat p h))) (concatRecAux Hnil Hconcat (cons (_ : Adj G w v) (reverse p)))
congr
no goals
case e_8.h
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ reverse (concat p h) = cons (_ : Adj G w v) (reverse p)
simp
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (Hconcat (reverse (reverse p)) (_ : Adj G v w) (concatRecAux Hnil Hconcat (reverse p)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (concatRecAux Hnil Hconcat (cons (_ : Adj G w v) (reverse p)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
rw [concatRecAux, rec_heq_iff_heq]
no goals
V : Type u
V' : Type v
V'' : Type w
G : SimpleGraph V
G' : SimpleGraph V'
G'' : SimpleGraph V''
motive : (u v : V) → Walk G u v → Sort u_1
Hnil : {u : V} → motive u u nil
Hconcat : {u v w : V} → (p : Walk G u v) → (h : Adj G v w) → motive u v p → motive u w (concat p h)
u v w : V
p : Walk G u v
h : Adj G v w
⊢ HEq (Hconcat (reverse (reverse p)) (_ : Adj G v w) (concatRecAux Hnil Hconcat (reverse p)))
    (Hconcat p h ((_ : reverse (reverse p) = p) ▸ concatRecAux Hnil Hconcat (reverse p)))
congr <;> simp [heq_rec_iff_heq]