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) :
theorem Regex.Data.BoundedIterator.valid_of_it_valid {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (v : bit.it.Valid) :
bit.Valid
theorem Regex.Data.BoundedIterator.valid_of_valid {startIdx maxIdx : } {bit : BoundedIterator startIdx maxIdx} (v : bit.Valid) :
bit.it.Valid
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₂