Documentation

Init.Data.String.Lemmas.Order

@[simp]
theorem String.Slice.Pos.next_le_iff_lt {s : Slice} {p q : s.Pos} {h : p s.endPos} :
p.next h q p < q
@[simp]
theorem String.Slice.Pos.lt_next_iff_le {s : Slice} {p q : s.Pos} {h : q s.endPos} :
p < q.next h p q
theorem String.Slice.Pos.next_eq_iff {s : Slice} {p q : s.Pos} {h : p s.endPos} :
p.next h = q p < q ∀ (q' : s.Pos), p < q'q q'
@[simp]
theorem String.Pos.next_le_iff_lt {s : String} {p q : s.Pos} {h : p s.endPos} :
p.next h q p < q
@[simp]
theorem String.Pos.lt_next_iff_le {s : String} {p q : s.Pos} {h : q s.endPos} :
p < q.next h p q
theorem String.Pos.next_eq_iff {s : String} {p q : s.Pos} {h : p s.endPos} :
p.next h = q p < q ∀ (q' : s.Pos), p < q'q q'
@[simp]
@[simp]
@[simp]
theorem String.Slice.Pos.endPos_le {s : Slice} (p : s.Pos) :
@[simp]
theorem String.Slice.Pos.lt_endPos_iff {s : Slice} (p : s.Pos) :
@[simp]
theorem String.Pos.endPos_le {s : String} (p : s.Pos) :
@[simp]
theorem String.Pos.lt_endPos_iff {s : String} (p : s.Pos) :
@[simp]
theorem String.Pos.le_startPos {s : String} (p : s.Pos) :
@[simp]
@[simp]
theorem String.Slice.Pos.ne_startPos_of_lt {s : Slice} {p q : s.Pos} :
p < qq s.startPos
@[simp]
theorem String.Pos.not_lt_startPos {s : String} {p : s.Pos} :
@[simp]
@[simp]
theorem String.Pos.not_endPos_lt {s : String} {p : s.Pos} :
theorem String.Pos.ne_endPos_of_lt {s : String} {p q : s.Pos} :
p < qp s.endPos
@[simp]
theorem String.Slice.Pos.le_next {s : Slice} {p : s.Pos} {h : p s.endPos} :
p p.next h
@[simp]
theorem String.Pos.le_next {s : String} {p : s.Pos} {h : p s.endPos} :
p p.next h
@[simp]
theorem String.Slice.Pos.ne_next {s : Slice} {p : s.Pos} {h : p s.endPos} :
p p.next h
@[simp]
theorem String.Pos.ne_next {s : String} {p : s.Pos} {h : p s.endPos} :
p p.next h
@[simp]
theorem String.Slice.Pos.next_ne {s : Slice} {p : s.Pos} {h : p s.endPos} :
p.next h p
@[simp]
theorem String.Pos.next_ne {s : String} {p : s.Pos} {h : p s.endPos} :
p.next h p
@[simp]
theorem String.Slice.Pos.next_ne_startPos {s : Slice} {p : s.Pos} {h : p s.endPos} :
@[simp]
@[simp]
theorem String.Slice.Pos.sliceTo_lt_sliceTo_iff {s : Slice} {p₀ q r : s.Pos} {h₁ : q p₀} {h₂ : r p₀} :
p₀.sliceTo q h₁ < p₀.sliceTo r h₂ q < r
@[simp]
theorem String.Slice.Pos.sliceTo_le_sliceTo_iff {s : Slice} {p₀ q r : s.Pos} {h₁ : q p₀} {h₂ : r p₀} :
p₀.sliceTo q h₁ p₀.sliceTo r h₂ q r
@[simp]
theorem String.Pos.sliceTo_lt_sliceTo_iff {s : String} {p₀ q r : s.Pos} {h₁ : q p₀} {h₂ : r p₀} :
p₀.sliceTo q h₁ < p₀.sliceTo r h₂ q < r
@[simp]
theorem String.Pos.sliceTo_le_sliceTo_iff {s : String} {p₀ q r : s.Pos} {h₁ : q p₀} {h₂ : r p₀} :
p₀.sliceTo q h₁ p₀.sliceTo r h₂ q r
@[simp]
theorem String.Slice.Pos.sliceFrom_lt_sliceFrom_iff {s : Slice} {p₀ q r : s.Pos} {h₁ : p₀ q} {h₂ : p₀ r} :
p₀.sliceFrom q h₁ < p₀.sliceFrom r h₂ q < r
@[simp]
theorem String.Slice.Pos.sliceFrom_le_sliceFrom_iff {s : Slice} {p₀ q r : s.Pos} {h₁ : p₀ q} {h₂ : p₀ r} :
p₀.sliceFrom q h₁ p₀.sliceFrom r h₂ q r
@[simp]
theorem String.Pos.sliceFrom_lt_sliceFrom_iff {s : String} {p₀ q r : s.Pos} {h₁ : p₀ q} {h₂ : p₀ r} :
p₀.sliceFrom q h₁ < p₀.sliceFrom r h₂ q < r
@[simp]
theorem String.Pos.sliceFrom_le_sliceFrom_iff {s : String} {p₀ q r : s.Pos} {h₁ : p₀ q} {h₂ : p₀ r} :
p₀.sliceFrom q h₁ p₀.sliceFrom r h₂ q r
theorem String.Slice.Pos.ofSliceFrom_lt_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
ofSliceFrom p < q (h : p₀ q), p < p₀.sliceFrom q h
theorem String.Slice.Pos.le_ofSliceFrom_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
q ofSliceFrom p ∀ (h : p₀ q), p₀.sliceFrom q h p
theorem String.Slice.Pos.ofSliceFrom_le_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
ofSliceFrom p q (h : p₀ q), p p₀.sliceFrom q h
theorem String.Slice.Pos.lt_ofSliceFrom_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
q < ofSliceFrom p ∀ (h : p₀ q), p₀.sliceFrom q h < p
theorem String.Pos.ofSliceFrom_lt_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
ofSliceFrom p < q (h : p₀ q), p < p₀.sliceFrom q h
theorem String.Pos.le_ofSliceFrom_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
q ofSliceFrom p ∀ (h : p₀ q), p₀.sliceFrom q h p
theorem String.Pos.ofSliceFrom_le_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
ofSliceFrom p q (h : p₀ q), p p₀.sliceFrom q h
theorem String.Pos.lt_ofSliceFrom_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} :
q < ofSliceFrom p ∀ (h : p₀ q), p₀.sliceFrom q h < p
theorem String.Slice.Pos.ofSliceFrom_next {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {h : p (s.sliceFrom p₀).endPos} :
theorem String.Slice.Pos.next_ofSliceFrom {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {h : ofSliceFrom p s.endPos} :
theorem String.Pos.ofSliceFrom_next {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {h : p (s.sliceFrom p₀).endPos} :
theorem String.Pos.next_ofSliceFrom {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {h : ofSliceFrom p s.endPos} :
theorem String.Slice.Pos.le_ofSliceTo_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
q ofSliceTo p (h : q p₀), p₀.sliceTo q h p
theorem String.Slice.Pos.ofSliceTo_lt_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
ofSliceTo p < q ∀ (h : q p₀), p < p₀.sliceTo q h
theorem String.Slice.Pos.lt_ofSliceTo_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
q < ofSliceTo p (h : q p₀), p₀.sliceTo q h < p
theorem String.Slice.Pos.ofSliceTo_le_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
ofSliceTo p q ∀ (h : q p₀), p p₀.sliceTo q h
theorem String.Pos.le_ofSliceTo_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
q ofSliceTo p (h : q p₀), p₀.sliceTo q h p
theorem String.Pos.ofSliceTo_lt_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
ofSliceTo p < q ∀ (h : q p₀), p < p₀.sliceTo q h
theorem String.Pos.lt_ofSliceTo_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
q < ofSliceTo p (h : q p₀), p₀.sliceTo q h < p
theorem String.Pos.ofSliceTo_le_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} :
ofSliceTo p q ∀ (h : q p₀), p p₀.sliceTo q h
theorem String.Slice.Pos.lt_sliceFrom_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
p < p₀.sliceFrom q h ofSliceFrom p < q
theorem String.Slice.Pos.sliceFrom_le_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
theorem String.Slice.Pos.le_sliceFrom_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
theorem String.Slice.Pos.sliceFrom_lt_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
p₀.sliceFrom q h < p q < ofSliceFrom p
theorem String.Pos.lt_sliceFrom_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
p < p₀.sliceFrom q h ofSliceFrom p < q
theorem String.Pos.sliceFrom_le_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
theorem String.Pos.le_sliceFrom_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
theorem String.Pos.sliceFrom_lt_iff {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} {q : s.Pos} {h : p₀ q} :
p₀.sliceFrom q h < p q < ofSliceFrom p
theorem String.Slice.Pos.sliceTo_le_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p₀.sliceTo q h p q ofSliceTo p
theorem String.Slice.Pos.lt_sliceTo_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p < p₀.sliceTo q h ofSliceTo p < q
theorem String.Slice.Pos.sliceTo_lt_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p₀.sliceTo q h < p q < ofSliceTo p
theorem String.Slice.Pos.le_sliceTo_iff {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p p₀.sliceTo q h ofSliceTo p q
theorem String.Pos.sliceTo_le_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p₀.sliceTo q h p q ofSliceTo p
theorem String.Pos.lt_sliceTo_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p < p₀.sliceTo q h ofSliceTo p < q
theorem String.Pos.sliceTo_lt_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p₀.sliceTo q h < p q < ofSliceTo p
theorem String.Pos.le_sliceTo_iff {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {q : s.Pos} {h : q p₀} :
p p₀.sliceTo q h ofSliceTo p q
theorem String.Slice.Pos.ofSliceTo_ne_endPos {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} (h : p (s.sliceTo p₀).endPos) :
theorem String.Slice.Pos.ofSliceFrom_ne_startPos {s : Slice} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} (h : p (s.sliceFrom p₀).startPos) :
theorem String.Pos.ofSliceTo_ne_endPos {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} (h : p (s.sliceTo p₀).endPos) :
theorem String.Pos.ofSliceFrom_ne_startPos {s : String} {p₀ : s.Pos} {p : (s.sliceFrom p₀).Pos} (h : p (s.sliceFrom p₀).startPos) :
theorem String.Slice.Pos.ofSliceTo_next {s : Slice} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {h : p (s.sliceTo p₀).endPos} :
ofSliceTo (p.next h) = (ofSliceTo p).next
theorem String.Pos.ofSliceTo_next {s : String} {p₀ : s.Pos} {p : (s.sliceTo p₀).Pos} {h : p (s.sliceTo p₀).endPos} :
ofSliceTo (p.next h) = (ofSliceTo p).next
@[simp]
theorem String.Slice.Pos.slice_lt_slice_iff {s : Slice} {p₀ p₁ q r : s.Pos} {h₁ : p₀ q} {h₁' : p₀ r} {h₂ : q p₁} {h₂' : r p₁} :
q.slice p₀ p₁ h₁ h₂ < r.slice p₀ p₁ h₁' h₂' q < r
@[simp]
theorem String.Slice.Pos.slice_le_slice_iff {s : Slice} {p₀ p₁ q r : s.Pos} {h₁ : p₀ q} {h₁' : p₀ r} {h₂ : q p₁} {h₂' : r p₁} :
q.slice p₀ p₁ h₁ h₂ r.slice p₀ p₁ h₁' h₂' q r
@[simp]
theorem String.Pos.slice_lt_slice_iff {s : String} {p₀ p₁ q r : s.Pos} {h₁ : p₀ q} {h₁' : p₀ r} {h₂ : q p₁} {h₂' : r p₁} :
q.slice p₀ p₁ h₁ h₂ < r.slice p₀ p₁ h₁' h₂' q < r
@[simp]
theorem String.Pos.slice_le_slice_iff {s : String} {p₀ p₁ q r : s.Pos} {h₁ : p₀ q} {h₁' : p₀ r} {h₂ : q p₁} {h₂' : r p₁} :
q.slice p₀ p₁ h₁ h₂ r.slice p₀ p₁ h₁' h₂' q r
theorem String.Slice.Pos.le_ofSlice_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
q ofSlice p (h₁ : q p₁), ∀ (h₀ : p₀ q), q.slice p₀ p₁ h₀ h₁ p
theorem String.Slice.Pos.ofSlice_lt_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
ofSlice p < q ∀ (h₁ : q p₁), (h₀ : p₀ q), p < q.slice p₀ p₁ h₀ h₁
theorem String.Slice.Pos.lt_ofSlice_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
q < ofSlice p (h₁ : q p₁), ∀ (h₀ : p₀ q), q.slice p₀ p₁ h₀ h₁ < p
theorem String.Slice.Pos.ofSlice_le_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
ofSlice p q ∀ (h₁ : q p₁), (h₀ : p₀ q), p q.slice p₀ p₁ h₀ h₁
theorem String.Pos.le_ofSlice_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
q ofSlice p (h₁ : q p₁), ∀ (h₀ : p₀ q), q.slice p₀ p₁ h₀ h₁ p
theorem String.Pos.ofSlice_lt_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
ofSlice p < q ∀ (h₁ : q p₁), (h₀ : p₀ q), p < q.slice p₀ p₁ h₀ h₁
theorem String.Pos.lt_ofSlice_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
q < ofSlice p (h₁ : q p₁), ∀ (h₀ : p₀ q), q.slice p₀ p₁ h₀ h₁ < p
theorem String.Pos.ofSlice_le_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} :
ofSlice p q ∀ (h₁ : q p₁), (h₀ : p₀ q), p q.slice p₀ p₁ h₀ h₁
theorem String.Slice.Pos.slice_le_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
q.slice p₀ p₁ h₀ h₁ p q ofSlice p
theorem String.Slice.Pos.lt_slice_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
p < q.slice p₀ p₁ h₀ h₁ ofSlice p < q
theorem String.Slice.Pos.slice_lt_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
q.slice p₀ p₁ h₀ h₁ < p q < ofSlice p
theorem String.Slice.Pos.le_slice_iff {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
p q.slice p₀ p₁ h₀ h₁ ofSlice p q
theorem String.Pos.slice_le_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
q.slice p₀ p₁ h₀ h₁ p q ofSlice p
theorem String.Pos.lt_slice_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
p < q.slice p₀ p₁ h₀ h₁ ofSlice p < q
theorem String.Pos.slice_lt_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
q.slice p₀ p₁ h₀ h₁ < p q < ofSlice p
theorem String.Pos.le_slice_iff {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {q : s.Pos} {h₀ : p₀ q} {h₁ : q p₁} :
p q.slice p₀ p₁ h₀ h₁ ofSlice p q
theorem String.Slice.Pos.ofSlice_ne_endPos {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} :
p (s.slice p₀ p₁ h).endPosofSlice p s.endPos
theorem String.Slice.Pos.ofSlice_ne_startPos {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} :
p (s.slice p₀ p₁ h).startPosofSlice p s.startPos
theorem String.Pos.ofSlice_ne_endPos {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} :
p (s.slice p₀ p₁ h).endPosofSlice p s.endPos
theorem String.Pos.ofSlice_ne_startPos {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} :
p (s.slice p₀ p₁ h).startPosofSlice p s.startPos
@[simp]
theorem String.Slice.Pos.getUTF8Byte_offset {s : Slice} {p : s.Pos} {h : p.offset < s.rawEndPos} :
s.getUTF8Byte p.offset h = p.byte
theorem String.Slice.Pos.get_eq_get_ofSliceTo {s : Slice} {p₀ : s.Pos} {pos : (s.sliceTo p₀).Pos} {h : pos (s.sliceTo p₀).endPos} :
pos.get h = (ofSliceTo pos).get
theorem String.Pos.get_eq_get_ofSliceTo {s : String} {p₀ : s.Pos} {pos : (s.sliceTo p₀).Pos} {h : pos (s.sliceTo p₀).endPos} :
pos.get h = (ofSliceTo pos).get
theorem String.Slice.Pos.get_eq_get_ofSlice {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {pos : (s.slice p₀ p₁ h).Pos} {h' : pos (s.slice p₀ p₁ h).endPos} :
pos.get h' = (ofSlice pos).get
theorem String.Pos.get_eq_get_ofSlice {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {pos : (s.slice p₀ p₁ h).Pos} {h' : pos (s.slice p₀ p₁ h).endPos} :
pos.get h' = (ofSlice pos).get
theorem String.Slice.Pos.ofSlice_next {s : Slice} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {h' : p (s.slice p₀ p₁ h).endPos} :
ofSlice (p.next h') = (ofSlice p).next
theorem String.Pos.ofSlice_next {s : String} {p₀ p₁ : s.Pos} {h : p₀ p₁} {p : (s.slice p₀ p₁ h).Pos} {h' : p (s.slice p₀ p₁ h).endPos} :
ofSlice (p.next h') = (ofSlice p).next