have : nfa = result.val := by
  rw [←eq]
  rfl
r : Expr
nfa : NFA
cs : List Char
eq : compile r = nfa
path : nfa.pathToNext 0 1 (↑nfa.start) cs
result : { nfa' // done.nodes.size < nfa'.nodes.size } := done.pushRegex ⟨0, ⋯⟩ r
⊢ Expr.matches cs r
r : Expr
nfa : NFA
cs : List Char
eq : compile r = nfa
path : nfa.pathToNext 0 1 (↑nfa.start) cs
result : { nfa' // done.nodes.size < nfa'.nodes.size } := done.pushRegex ⟨0, ⋯⟩ r
this : nfa = ↑result
⊢ Expr.matches cs r