Documentation

RegexCorrectness.Backtracker.Refinement

def Regex.Backtracker.StackEntry.materialize {s : String} {nfa : NFA} {startPos : s.ValidPos} {bufferSize : } (entryH : StackEntry (HistoryStrategy s) nfa startPos) :
StackEntry (BufferStrategy s bufferSize) nfa startPos
Equations
Instances For
    def Regex.Backtracker.materializeStack {s : String} {nfa : NFA} {startPos : s.ValidPos} {bufferSize : } (stackH : List (StackEntry (HistoryStrategy s) nfa startPos)) :
    List (StackEntry (BufferStrategy s bufferSize) nfa startPos)
    Equations
    Instances For
      @[simp]
      theorem Regex.Backtracker.materializeStack.nil {s : String} {nfa : NFA} {startPos : s.ValidPos} {bufferSize : } :
      @[simp]
      theorem Regex.Backtracker.materializeStack.cons {s : String} {nfa : NFA} {startPos : s.ValidPos} {bufferSize : } {entryH : StackEntry (HistoryStrategy s) nfa startPos} {stackH : List (StackEntry (HistoryStrategy s) nfa startPos)} :
      materializeStack (entryH :: stackH) = entryH.materialize :: materializeStack stackH
      def Regex.Backtracker.materializeResultAux {s : String} {nfa : NFA} {startPos : s.ValidPos} {bufferSize : } (resultH : Option (List ( × s.ValidPos)) × Data.BitMatrix nfa.nodes.size (startPos.remainingBytes + 1)) :
      Option (Buffer s bufferSize) × Data.BitMatrix nfa.nodes.size (startPos.remainingBytes + 1)
      Equations
      Instances For
        def Regex.Backtracker.materializeResult {s : String} {bufferSize : } (resultH : Option (List ( × s.ValidPos))) :
        Option (Buffer s bufferSize)
        Equations
        Instances For
          theorem Regex.Backtracker.captureNextAux.pushNext.refines {s : String} {nfa : NFA} {wf : nfa.WellFormed} {startPos : s.ValidPos} {bufferSize : } {stackH : List (StackEntry (HistoryStrategy s) nfa startPos)} {stackB : List (StackEntry (BufferStrategy s bufferSize) nfa startPos)} {updateH : (HistoryStrategy s).Update} {updateB : (BufferStrategy s bufferSize).Update} {state : Fin nfa.nodes.size} {pos : Data.BVPos startPos} (refEntry : { update := updateH, state := state, pos := pos }.materialize = { update := updateB, state := state, pos := pos }) (refStack : materializeStack stackH = stackB) :
          materializeStack (pushNext (HistoryStrategy s) nfa wf startPos stackH updateH state pos) = pushNext (BufferStrategy s bufferSize) nfa wf startPos stackB updateB state pos
          theorem Regex.Backtracker.captureNextAux.refines {s : String} (nfa : NFA) (wf : nfa.WellFormed) (startPos : s.ValidPos) (bufferSize : ) (visited : Data.BitMatrix nfa.nodes.size (startPos.remainingBytes + 1)) {stackH : List (StackEntry (HistoryStrategy s) nfa startPos)} {stackB : List (StackEntry (BufferStrategy s bufferSize) nfa startPos)} (refStack : materializeStack stackH = stackB) :
          materializeResultAux (captureNextAux (HistoryStrategy s) nfa wf startPos visited stackH) = captureNextAux (BufferStrategy s bufferSize) nfa wf startPos visited stackB
          theorem Regex.Backtracker.captureNext.go.refines {s : String} (nfa : NFA) (wf : nfa.WellFormed) (startPos : s.ValidPos) (bufferSize : ) (bvpos : Data.BVPos startPos) (visited : Data.BitMatrix nfa.nodes.size (startPos.remainingBytes + 1)) :
          materializeResult (go (HistoryStrategy s) nfa wf startPos bvpos visited) = go (BufferStrategy s bufferSize) nfa wf startPos bvpos visited
          theorem Regex.Backtracker.captureNext.refines {s : String} (nfa : NFA) (wf : nfa.WellFormed) (bufferSize : ) (pos : s.ValidPos) :
          materializeResult (captureNext (HistoryStrategy s) nfa wf pos) = captureNext (BufferStrategy s bufferSize) nfa wf pos