Documentation

RegexCorrectness.Data.BoundedIterator

theorem Regex.Data.BoundedIterator.ext_pos {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h₁ : bit₁.toString = bit₂.toString) (h₂ : bit₁.pos = bit₂.pos) :
bit₁ = bit₂
theorem Regex.Data.BoundedIterator.ext_pos_iff {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} :
bit₁ = bit₂ bit₁.toString = bit₂.toString bit₁.pos = bit₂.pos
theorem Regex.Data.BoundedIterator.ext_index {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h₁ : bit₁.toString = bit₂.toString) (h₂ : bit₁.index = bit₂.index) :
bit₁ = bit₂
theorem Regex.Data.BoundedIterator.ext_index_iff {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} :
bit₁ = bit₂ bit₁.toString = bit₂.toString bit₁.index = bit₂.index
theorem Regex.Data.BoundedIterator.next_toString {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (h : bit.hasNext = true) :
(bit.next h).toString = bit.toString
theorem Regex.Data.BoundedIterator.byteIdx_lt_next_byteIdx {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (h : bit.hasNext = true) :
bit.pos.byteIdx < (bit.next h).pos.byteIdx
theorem Regex.Data.BoundedIterator.pos_lt_next_pos {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (h : bit.hasNext = true) :
bit.pos < (bit.next h).pos
theorem Regex.Data.BoundedIterator.pos_eq_of_not_hasNext {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (hnext : ¬bit.hasNext = true) :
def Regex.Data.BoundedIterator.Valid {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) :
Equations
Instances For
    theorem Regex.Data.BoundedIterator.next_valid {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (h : bit.hasNext = true) (v : bit.Valid) :
    (bit.next h).Valid
    @[simp]
    theorem Regex.Data.BoundedIterator.toEnd_toString {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) :
    theorem Regex.Data.BoundedIterator.toEnd_pos {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) :
    theorem Regex.Data.BoundedIterator.toEnd_valid {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) :
    theorem Regex.Data.BoundedIterator.pos_le_toEnd_pos {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) :
    bit.pos bit.toEnd.pos
    theorem Regex.Data.BoundedIterator.toEnd_not_hasNext {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) :
    @[simp]
    theorem Regex.Data.BoundedIterator.next_toEnd {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (h : bit.hasNext = true) :
    (bit.next h).toEnd = bit.toEnd
    theorem Regex.Data.BoundedIterator.nextn_valid {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} {n : } (v : bit.Valid) :
    (bit.nextn n).Valid
    theorem Regex.Data.BoundedIterator.next_nextn {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} {n : } (hnext : bit.hasNext = true) :
    (bit.next hnext).nextn n = bit.nextn (n + 1)
    theorem Regex.Data.BoundedIterator.byteIdx_le_nextn_byteIdx {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) (n : ) :
    theorem Regex.Data.BoundedIterator.nextn_toString {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} {n : } :
    (bit.nextn n).toString = bit.toString
    theorem Regex.Data.BoundedIterator.hasNext_of_nextn_hasNext {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} {n : } (hnext : (bit.nextn n).hasNext = true) :
    theorem Regex.Data.BoundedIterator.nextn_next_eq_next_nextn {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} {n : } (hnext : (bit.nextn n).hasNext = true) :
    (bit.nextn n).next hnext = (bit.next ).nextn n
    theorem Regex.Data.BoundedIterator.nextn_next {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} {n : } (hnext : (bit.nextn n).hasNext = true) :
    (bit.nextn n).next hnext = bit.nextn (n + 1)
    theorem Regex.Data.BoundedIterator.nextn_not_hasNext {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} {n : } (hnext : ¬bit.hasNext = true) :
    bit.nextn n = bit
    theorem Regex.Data.BoundedIterator.nextn_add {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) (n₁ n₂ : ) :
    bit.nextn (n₁ + n₂) = (bit.nextn n₁).nextn n₂
    def Regex.Data.BoundedIterator.ValidFor {startIdx maxIdx : } (l r : List Char) (bit : BoundedIterator startIdx maxIdx) :
    Equations
    Instances For
      theorem Regex.Data.BoundedIterator.ValidFor.hasNext {startIdx maxIdx : } {l r : List Char} {bit : BoundedIterator startIdx maxIdx} (vf : ValidFor l r bit) :
      theorem Regex.Data.BoundedIterator.ValidFor.next {startIdx maxIdx : } {l : List Char} {c : Char} {r : List Char} {bit : BoundedIterator startIdx maxIdx} (vf : ValidFor l (c :: r) bit) :
      ValidFor (c :: l) r (bit.next )
      theorem Regex.Data.BoundedIterator.ValidFor.next' {startIdx maxIdx : } {l r : List Char} {bit : BoundedIterator startIdx maxIdx} (h : bit.hasNext = true) (vf : ValidFor l r bit) :
      (c : Char), (r' : List Char), r = c :: r' ValidFor (c :: l) r' (bit.next h)
      theorem Regex.Data.BoundedIterator.ValidFor.curr {startIdx maxIdx : } {l : List Char} {c : Char} {r : List Char} {bit : BoundedIterator startIdx maxIdx} (vf : ValidFor l (c :: r) bit) :
      bit.curr = c
      theorem Regex.Data.BoundedIterator.ValidFor.toString {startIdx maxIdx : } {l r : List Char} {bit : BoundedIterator startIdx maxIdx} (vf : ValidFor l r bit) :
      bit.toString = { data := l.reverse ++ r }
      theorem Regex.Data.BoundedIterator.ValidFor.pos {startIdx maxIdx : } {l r : List Char} {bit : BoundedIterator startIdx maxIdx} (vf : ValidFor l r bit) :
      bit.pos = { byteIdx := String.utf8Len l }
      theorem Regex.Data.BoundedIterator.ValidFor.valid {startIdx maxIdx : } {l r : List Char} {bit : BoundedIterator startIdx maxIdx} (vf : ValidFor l r bit) :
      bit.Valid
      theorem Regex.Data.BoundedIterator.ValidFor.eq {startIdx maxIdx : } {l l' r r' : List Char} {bit : BoundedIterator startIdx maxIdx} (vf : ValidFor l r bit) (vf' : ValidFor l' r' bit) :
      l = l' r = r'
      theorem Regex.Data.BoundedIterator.ValidFor.eq_it {startIdx maxIdx : } {l r : List Char} {bit bit' : BoundedIterator startIdx maxIdx} (vf : ValidFor l r bit) (vf' : ValidFor l r bit') :
      bit = bit'
      theorem Regex.Data.BoundedIterator.Valid.validFor {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (v : bit.Valid) :
      theorem Regex.Data.BoundedIterator.Valid.validFor_of_hasNext {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (h : bit.hasNext = true) (v : bit.Valid) :
      (l : List Char), (r : List Char), ValidFor l (bit.curr h :: r) bit
      theorem Regex.Data.BoundedIterator.Valid.next {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (hnext : bit.hasNext = true) (v : bit.Valid) :
      (bit.next hnext).Valid
      theorem Regex.Data.BoundedIterator.toEnd_validFor {startIdx maxIdx : } (bit : BoundedIterator startIdx maxIdx) :
      theorem Regex.Data.BoundedIterator.eq_of_valid_of_next_eq {startIdx maxIdx : } {bit bit' : BoundedIterator startIdx maxIdx} (v : bit.Valid) (v' : bit'.Valid) (hnext : bit.hasNext = true) (hnext' : bit'.hasNext = true) (eq : bit.next hnext = bit'.next hnext') :
      bit = bit'
      inductive Regex.Data.BoundedIterator.Reaches {startIdx maxIdx : } :
      BoundedIterator startIdx maxIdxBoundedIterator startIdx maxIdxProp
      Instances For
        theorem Regex.Data.BoundedIterator.Reaches.trans {startIdx maxIdx : } {bit₁ bit₂ bit₃ : BoundedIterator startIdx maxIdx} (h₁ : bit₁.Reaches bit₂) (h₂ : bit₂.Reaches bit₃) :
        bit₁.Reaches bit₃
        theorem Regex.Data.BoundedIterator.Reaches.validL {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h : bit₁.Reaches bit₂) :
        bit₁.Valid
        theorem Regex.Data.BoundedIterator.Reaches.validR {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h : bit₁.Reaches bit₂) :
        bit₂.Valid
        theorem Regex.Data.BoundedIterator.Reaches.toString {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h : bit₁.Reaches bit₂) :
        bit₂.toString = bit₁.toString
        theorem Regex.Data.BoundedIterator.Reaches.le_pos {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h : bit₁.Reaches bit₂) :
        bit₁.pos bit₂.pos
        theorem Regex.Data.BoundedIterator.Reaches.next' {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (hnext₂ : bit₂.hasNext = true) (h : bit₁.Reaches bit₂) :
        bit₁.Reaches (bit₂.next hnext₂)
        theorem Regex.Data.BoundedIterator.Reaches.next'_iff' {startIdx maxIdx : } {bit₁ bit₂ bit₂' : BoundedIterator startIdx maxIdx} (v₂ : bit₂.Valid) (hnext₂ : bit₂.hasNext = true) (eq : bit₂.next hnext₂ = bit₂') :
        bit₁.Reaches bit₂' bit₁.Reaches bit₂ bit₁.Valid bit₁ = bit₂'
        @[simp]
        theorem Regex.Data.BoundedIterator.Reaches.next'_iff {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (v₂ : bit₂.Valid) (hnext₂ : bit₂.hasNext = true) :
        bit₁.Reaches (bit₂.next hnext₂) bit₁.Reaches bit₂ bit₁.Valid bit₁ = bit₂.next hnext₂
        theorem Regex.Data.BoundedIterator.Reaches.of_validFor {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} {l m r : List Char} (vf₁ : ValidFor l.reverse (m ++ r) bit₁) (vf₂ : ValidFor (m.reverse ++ l.reverse) r bit₂) :
        bit₁.Reaches bit₂
        theorem Regex.Data.BoundedIterator.Reaches.validFor {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h : bit₁.Reaches bit₂) :
        theorem Regex.Data.BoundedIterator.Reaches.iff_validFor {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} :
        bit₁.Reaches bit₂ (l : List Char), (m : List Char), (r : List Char), ValidFor l.reverse (m ++ r) bit₁ ValidFor (m.reverse ++ l.reverse) r bit₂
        theorem Regex.Data.BoundedIterator.Reaches.iff_valid_le_pos {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} :
        bit₁.Reaches bit₂ bit₁.Valid bit₂.Valid bit₁.toString = bit₂.toString bit₁.pos bit₂.pos
        theorem Regex.Data.BoundedIterator.reaches_toEnd {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (v : bit.Valid) :
        bit.Reaches bit.toEnd
        theorem Regex.Data.BoundedIterator.Reaches.reaches_toEnd_of_reaches {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} (h : bit₁.Reaches bit₂) :
        bit₂.Reaches bit₁.toEnd
        def Regex.Data.BoundedIterator.BetweenI {startIdx maxIdx : } (bit bs be : BoundedIterator startIdx maxIdx) :
        Equations
        Instances For
          def Regex.Data.BoundedIterator.BetweenE {startIdx maxIdx : } (bit bs be : BoundedIterator startIdx maxIdx) :
          Equations
          Instances For
            theorem Regex.Data.BoundedIterator.BetweenI.reachesSE {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} (h : bit.BetweenI bs be) :
            bs.Reaches be
            theorem Regex.Data.BoundedIterator.BetweenI.le_pos {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} (h : bit.BetweenI bs be) :
            bit.pos be.pos
            @[simp]
            theorem Regex.Data.BoundedIterator.BetweenI.next_iff {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} (v : be.Valid) (hnext : be.hasNext = true) :
            bit.BetweenI bs (be.next hnext) bit.BetweenI bs be bs.Reaches bit bit = be.next hnext
            theorem Regex.Data.BoundedIterator.BetweenI.iffE {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} :
            bit.BetweenI bs be bit.BetweenE bs be bs.Reaches bit bit = be
            theorem Regex.Data.BoundedIterator.BetweenE.validE {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} (h : bit.BetweenE bs be) :
            theorem Regex.Data.BoundedIterator.BetweenE.ne_end {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} (h : bit.BetweenE bs be) :
            bit be
            theorem Regex.Data.BoundedIterator.BetweenE.next_iffI {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} (v : be.Valid) (hnext : be.hasNext = true) :
            bit.BetweenE bs (be.next hnext) bit.BetweenI bs be
            @[simp]
            theorem Regex.Data.BoundedIterator.BetweenE.next_iff {startIdx maxIdx : } {bit bs be : BoundedIterator startIdx maxIdx} (v : be.Valid) (hnext : be.hasNext = true) :
            bit.BetweenE bs (be.next hnext) bit.BetweenE bs be bs.Reaches bit bit = be
            @[simp]
            theorem Regex.Data.BoundedIterator.BetweenE.not_self {startIdx maxIdx : } {bit₁ bit₂ : BoundedIterator startIdx maxIdx} :
            ¬bit₁.BetweenE bit₂ bit₂