Instances For
Equations
Equations
Equations
- Regex.Data.Expr.GroupMap.empty = { groups := 0 }
Instances For
Equations
- Regex.Data.Expr.GroupMap.get tag self = self.groups tag
Instances For
def
Regex.Data.Expr.GroupMap.openGroup
{s : String}
(tag : ℕ)
(startAt : s.Pos)
(self : GroupMap s)
:
GroupMap s
Equations
- Regex.Data.Expr.GroupMap.openGroup tag startAt self = { groups := self.groups.update tag (Regex.Data.Expr.GroupInfo.started startAt) }
Instances For
def
Regex.Data.Expr.GroupMap.setClosed
{s : String}
(tag : ℕ)
(startAt endAt : s.Pos)
(self : GroupMap s)
:
GroupMap s
Equations
- Regex.Data.Expr.GroupMap.setClosed tag startAt endAt self = { groups := self.groups.update tag (Regex.Data.Expr.GroupInfo.closed startAt endAt) }
Instances For
def
Regex.Data.Expr.GroupMap.addCaptures
{s : String}
(self : GroupMap s)
:
CaptureGroups s → GroupMap s
Equations
- self.addCaptures Regex.Data.CaptureGroups.empty = self
- self.addCaptures (Regex.Data.CaptureGroups.group tag first last rest) = Regex.Data.Expr.GroupMap.setClosed tag first last (self.addCaptures rest)
- self.addCaptures (g₁.concat g₂) = (self.addCaptures g₁).addCaptures g₂
Instances For
@[simp]
theorem
Regex.Data.Expr.GroupMap.get_openGroup_self
{s : String}
(self : GroupMap s)
(tag : ℕ)
(startAt : s.Pos)
:
@[simp]
theorem
Regex.Data.Expr.GroupMap.get_setClosed_self
{s : String}
(self : GroupMap s)
(tag : ℕ)
(startAt endAt : s.Pos)
:
@[simp]
theorem
Regex.Data.Expr.GroupMap.get_closeGroup_self
{s : String}
(self : GroupMap s)
(tag : ℕ)
(endAt : s.Pos)
:
get tag (closeGroup tag endAt self) = match get tag self with
| GroupInfo.started startAt => GroupInfo.closed startAt endAt
| x => x
theorem
Regex.Data.Expr.GroupMap.get_addCaptures_eq_self_of_forall_not_mem
{s : String}
(self : GroupMap s)
{groups : CaptureGroups s}
{tag : ℕ}
(h : ∀ (first last : s.Pos), (tag, first, last) ∉ groups)
:
theorem
Regex.Data.Expr.GroupMap.closeGroup_addCaptures_openGroup_eq_addCaptures_group
{s : String}
(self : GroupMap s)
{groups : CaptureGroups s}
{tag : ℕ}
{startAt endAt : s.Pos}
(hmem : ∀ (first last : s.Pos), (tag, first, last) ∉ groups)
:
closeGroup tag endAt ((openGroup tag startAt self).addCaptures groups) = self.addCaptures (CaptureGroups.group tag startAt endAt groups)