Equations
- re.IsSearchRegex = ∃ (e : Regex.Data.Expr), re.nfa = Regex.NFA.compile (Regex.Data.Expr.group 0 e) ∧ (Regex.Data.Expr.group 0 e).Disjoint ∧ re.maxTag = re.nfa.maxTag
Instances For
Equations
- s.inner = Exists.choose s
Instances For
Equations
- s.expr = Regex.Data.Expr.group 0 s.inner
Instances For
theorem
Regex.IsSearchRegex.captureNextBuf_soundness'
{re : Regex}
{bufferSize : ℕ}
{it : String.Iterator}
{matched : Vector (Option String.Pos) bufferSize}
(h : re.captureNextBuf bufferSize it = some matched)
(s : re.IsSearchRegex)
(v : it.Valid)
:
∃ (it' : String.Iterator) (it'' : String.Iterator) (groups : Data.CaptureGroups),
it'.toString = it.toString ∧ it.pos ≤ it'.pos ∧ Data.Expr.Captures it' it'' groups s.expr ∧ Strategy.EquivMaterializedUpdate (Strategy.materializeRegexGroups groups) matched
theorem
Regex.IsSearchRegex.captureNextBuf_soundness
{re : Regex}
{bufferSize : ℕ}
{it : String.Iterator}
{matched : Vector (Option String.Pos) bufferSize}
(h : re.captureNextBuf bufferSize it = some matched)
(s : re.IsSearchRegex)
(v : it.Valid)
(le : 2 ≤ bufferSize)
:
∃ (it' : String.Iterator) (it'' : String.Iterator) (groups : Data.CaptureGroups),
it'.toString = it.toString ∧ it.pos ≤ it'.pos ∧ Data.Expr.Captures it' it'' groups s.expr ∧ Strategy.EquivMaterializedUpdate (Strategy.materializeRegexGroups groups) matched ∧ matched[0] = some it'.pos ∧ matched[1] = some it''.pos
theorem
Regex.IsSearchRegex.captureNextBuf_completeness
{re : Regex}
{bufferSize : ℕ}
{it : String.Iterator}
(h : re.captureNextBuf bufferSize it = none)
(s : re.IsSearchRegex)
(v : it.Valid)
:
¬∃ (it' : String.Iterator) (it'' : String.Iterator) (groups : Data.CaptureGroups),
it'.toString = it.toString ∧ it.pos ≤ it'.pos ∧ Data.Expr.Captures it' it'' groups s.expr
theorem
Regex.IsSearchRegex.searchNext_some
{re : Regex}
{it : String.Iterator}
{str : Substring}
(h : re.searchNext it = some str)
(s : re.IsSearchRegex)
(v : it.Valid)
: