inductive
Regex.Backtracker.Path
{s : String}
(nfa : NFA)
(wf : nfa.WellFormed)
(pos : s.ValidPos)
:
- init {s : String} {nfa : NFA} {wf : nfa.WellFormed} {pos : s.ValidPos} : Path nfa wf pos pos ⟨nfa.start, ⋯⟩ []
- more {s : String} {nfa : NFA} {wf : nfa.WellFormed} {pos : s.ValidPos} {i j : Fin nfa.nodes.size} {pos' pos'' : s.ValidPos} {update₁ : List (ℕ × s.ValidPos)} {update₂ : Option (ℕ × s.ValidPos)} {update₃ : List (ℕ × s.ValidPos)} (prev : Path nfa wf pos pos' i update₁) (step : nfa.Step 0 (↑i) pos' (↑j) pos'' update₂) (equpdate : update₃ = update₁ ++ List.ofOption update₂) : Path nfa wf pos pos'' j update₃
Instances For
theorem
Regex.Backtracker.Path.concat_nfaPath
{s : String}
{nfa : NFA}
{wf : nfa.WellFormed}
{pos pos' pos'' : s.ValidPos}
{update₁ update₂ update₃ : List (ℕ × s.ValidPos)}
{i j : ℕ}
(isLt : i < nfa.nodes.size)
(path₁ : Path nfa wf pos pos' ⟨i, isLt⟩ update₁)
(path₂ : nfa.Path 0 i pos' j pos'' update₂)
(equpdate : update₃ = update₁ ++ update₂)
:
def
Regex.Backtracker.Path.bvpos'
{s : String}
{nfa : NFA}
{wf : nfa.WellFormed}
{startPos : s.ValidPos}
{bvpos : Data.BVPos startPos}
{pos' : s.ValidPos}
{i : Fin nfa.nodes.size}
{update : List (ℕ × s.ValidPos)}
(path : Path nfa wf bvpos.current pos' i update)
:
Data.BVPos startPos