def
Regex.Strategy.refineUpdate
{bufferSize : ℕ}
(update : List (ℕ × String.Pos))
(buffer : Buffer bufferSize)
:
Equations
- Regex.Strategy.refineUpdate update buffer = (Regex.Strategy.materializeUpdates bufferSize update = buffer)
Instances For
@[simp]
theorem
Regex.Strategy.refineUpdate.empty
{bufferSize : ℕ}
:
refineUpdate HistoryStrategy.empty (BufferStrategy bufferSize).empty
Equations
- Regex.Strategy.refineUpdateOpt none none = True
- Regex.Strategy.refineUpdateOpt (some update) (some buffer) = Regex.Strategy.refineUpdate update buffer
- Regex.Strategy.refineUpdateOpt x✝¹ x✝ = False
Instances For
theorem
Regex.Strategy.refineUpdateOpt.orElse
{bufferSize : ℕ}
{update₁ update₂ : Option (List (ℕ × String.Pos))}
{buffer₁ buffer₂ : Option (Buffer bufferSize)}
(h₁ : refineUpdateOpt update₁ buffer₁)
(h₂ : refineUpdateOpt update₂ buffer₂)
:
refineUpdateOpt (update₁ <|> update₂) (buffer₁ <|> buffer₂)
def
Regex.Strategy.refineUpdates
{nfa : NFA}
{bufferSize : ℕ}
(updates : Vector (List (ℕ × String.Pos)) nfa.nodes.size)
(buffers : Vector (Buffer bufferSize) nfa.nodes.size)
:
Equations
- Regex.Strategy.refineUpdates updates buffers = ∀ (i : Fin nfa.nodes.size), Regex.Strategy.refineUpdate updates[i] buffers[i]
Instances For
theorem
Regex.Strategy.refineUpdates.set_set
{nfa : NFA}
{bufferSize : ℕ}
{updates : Vector (List (ℕ × String.Pos)) nfa.nodes.size}
{buffers : Vector (Buffer bufferSize) nfa.nodes.size}
{i : Fin nfa.nodes.size}
{update : List (ℕ × String.Pos)}
{buffer : Buffer bufferSize}
(h₁ : refineUpdates updates buffers)
(h₂ : refineUpdate update buffer)
:
refineUpdates (updates.set (↑i) update ⋯) (buffers.set (↑i) buffer ⋯)