intro i
nfa : NFA
c : Char
pos : String.Pos
next : SparseSet nfa.nodes.size
saveSlots : Data.Vec (Array (Option String.Pos)) nfa.nodes.size
target : Fin nfa.nodes.size
matched' : Option (Array (Option String.Pos))
next' : SparseSet nfa.nodes.size
saveSlots' : Data.Vec (Array (Option String.Pos)) nfa.nodes.size
inv : ∀ (i j : Fin nfa.nodes.size), i ∈ next → ↑j ∈ nfa.εStep ↑i → j ∈ next
cs : Data.Classes
target' : ℕ
hn : nfa[↑target] = Node.sparse cs target'
hc : c ∉ cs
h : (none, next, saveSlots) = (matched', next', saveSlots')
⊢ ∀ (i : ℕ), i ∉ nfa.charStep (↑target) c
nfa : NFA
c : Char
pos : String.Pos
next : SparseSet nfa.nodes.size
saveSlots : Data.Vec (Array (Option String.Pos)) nfa.nodes.size
target : Fin nfa.nodes.size
matched' : Option (Array (Option String.Pos))
next' : SparseSet nfa.nodes.size
saveSlots' : Data.Vec (Array (Option String.Pos)) nfa.nodes.size
inv : ∀ (i j : Fin nfa.nodes.size), i ∈ next → ↑j ∈ nfa.εStep ↑i → j ∈ next
cs : Data.Classes
target' : ℕ
hn : nfa[↑target] = Node.sparse cs target'
hc : c ∉ cs
h : (none, next, saveSlots) = (matched', next', saveSlots')
i : ℕ
⊢ i ∉ nfa.charStep (↑target) c