Equations
- One or more equations did not get rendered due to their size.
Instances For
theorem
Regex.IsSearchRegex.of_fromExpr
{e : Data.Expr}
(h : (Data.Expr.group 0 e).Disjoint)
:
(fromExpr (Data.Expr.group 0 e)).IsSearchRegex
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'
{s : String}
{re : Regex}
{bufferSize : ℕ}
{pos : s.ValidPos}
{matched : Buffer s bufferSize}
(h : re.captureNextBuf bufferSize pos = some matched)
(s✝ : re.IsSearchRegex)
:
∃ (pos' : s.ValidPos) (pos'' : s.ValidPos) (groups : Data.CaptureGroups s),
pos ≤ pos' ∧ Data.Expr.Captures pos' pos'' groups s✝.expr ∧ Strategy.EquivMaterializedUpdate (Strategy.materializeRegexGroups groups) matched
theorem
Regex.IsSearchRegex.captureNextBuf_soundness
{s : String}
{re : Regex}
{bufferSize : ℕ}
{pos : s.ValidPos}
{matched : Buffer s bufferSize}
(h : re.captureNextBuf bufferSize pos = some matched)
(s✝ : re.IsSearchRegex)
(le : 2 ≤ bufferSize)
:
∃ (pos' : s.ValidPos) (pos'' : s.ValidPos) (groups : Data.CaptureGroups s),
pos ≤ pos' ∧ Data.Expr.Captures pos' pos'' groups s✝.expr ∧ Strategy.EquivMaterializedUpdate (Strategy.materializeRegexGroups groups) matched ∧ matched[0] = String.ValidPosPlusOne.validPos pos' ∧ matched[1] = String.ValidPosPlusOne.validPos pos''
theorem
Regex.IsSearchRegex.captureNextBuf_completeness'
{s : String}
{re : Regex}
{bufferSize : ℕ}
{pos : s.ValidPos}
(h : re.captureNextBuf bufferSize pos = none)
(isr : re.IsSearchRegex)
(pos' pos'' : s.ValidPos)
(groups : Data.CaptureGroups s)
(le : pos ≤ pos')
(c : Data.Expr.Captures pos' pos'' groups isr.expr)
:
theorem
Regex.IsSearchRegex.captureNextBuf_completeness
{s : String}
{re : Regex}
{bufferSize : ℕ}
{pos : s.ValidPos}
(h : re.captureNextBuf bufferSize pos = none)
(isr : re.IsSearchRegex)
:
¬∃ (pos' : s.ValidPos) (pos'' : s.ValidPos) (groups : Data.CaptureGroups s),
pos ≤ pos' ∧ Data.Expr.Captures pos' pos'' groups isr.expr
theorem
Regex.IsSearchRegex.searchNext_some
{s : String}
{re : Regex}
{pos : s.ValidPos}
{slice : String.Slice}
(h : re.searchNext pos = some slice)
(isr : re.IsSearchRegex)
:
∃ (pos' : s.ValidPos) (pos'' : s.ValidPos) (groups : Data.CaptureGroups s),
pos ≤ pos' ∧ Data.Expr.Captures pos' pos'' groups isr.expr ∧ slice.startInclusive = ⋯ ▸ pos' ∧ slice.endExclusive = ⋯ ▸ pos''