Documentation

RegexCorrectness.Backtracker.Path

inductive Regex.Backtracker.Path (nfa : NFA) (wf : nfa.WellFormed) (it : String.Iterator) :
Instances For
    theorem Regex.Backtracker.Path.validL {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (path : Path nfa wf it it' i update) :
    theorem Regex.Backtracker.Path.validR {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (path : Path nfa wf it it' i update) :
    it'.Valid
    theorem Regex.Backtracker.Path.toString_eq {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (path : Path nfa wf it it' i update) :
    theorem Regex.Backtracker.Path.le_pos {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (path : Path nfa wf it it' i update) :
    it.pos it'.pos
    theorem Regex.Backtracker.Path.eq_or_nfaPath {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (path : Path nfa wf it it' i update) :
    it' = it i = nfa.start update = [] nfa.Path 0 nfa.start it (↑i) it' update
    theorem Regex.Backtracker.Path.nfaPath_of_ne {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (path : Path nfa wf it it' i update) (ne : i nfa.start) :
    nfa.Path 0 nfa.start it (↑i) it' update
    theorem Regex.Backtracker.Path.concat_nfaPath {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i j : } {it'' : String.Iterator} {update₁ update₂ update₃ : List ( × String.Pos)} (isLt : i < nfa.nodes.size) (path₁ : Path nfa wf it it' i, isLt update₁) (path₂ : nfa.Path 0 i it' j it'' update₂) (equpdate : update₃ = update₁ ++ update₂) :
    Path nfa wf it it'' j, update₃
    theorem Regex.Backtracker.Path.of_nfaPath {nfa : NFA} {wf : nfa.WellFormed} {it it' : String.Iterator} {i : } {update : List ( × String.Pos)} (path : nfa.Path 0 nfa.start it i it' update) :
    Path nfa wf it it' i, update
    def Regex.Backtracker.Path.bit' {nfa : NFA} {wf : nfa.WellFormed} {startIdx maxIdx : } {bit : Data.BoundedIterator startIdx maxIdx} {it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (path : Path nfa wf bit.it it' i update) :
    Data.BoundedIterator startIdx maxIdx
    Equations
    • path.bit' = { it := it', ge := , le := , eq := }
    Instances For
      theorem Regex.Backtracker.Path.reaches {nfa : NFA} {wf : nfa.WellFormed} {startIdx maxIdx : } {bit bit' : Data.BoundedIterator startIdx maxIdx} {it' : String.Iterator} {i : Fin nfa.nodes.size} {update : List ( × String.Pos)} (eqit' : bit'.it = it') (path : Path nfa wf bit.it it' i update) :
      bit.Reaches bit'