theorem
String.Slice.skipPrefix?_eq_forwardPatternSkipPrefix?
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.startsWith_eq_forwardPatternStartsWith
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.dropPrefix?_eq_map_skipPrefix?
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.skipPrefix?_eq_some_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.skipPrefix?_eq_none_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.isSome_skipPrefix?
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.LawfulForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.startsWith_eq_false_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.startsWith_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.skipPrefix?_eq_none_iff
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.LawfulForwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.dropPrefix?_eq_none_iff
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.LawfulForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.eq_append_of_dropPrefix?_eq_some
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s res : Slice}
(h : s.dropPrefix? pat = some res)
:
theorem
String.Slice.Pos.skip?_eq_map_skipPrefix?
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.skip?_eq_some_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos res : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.skip?_eq_none_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.skip?_eq_matchAt?
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
@[simp]
theorem
String.Slice.skip?_startPos
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pos.skip?_cast
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.Pos.skip?_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.skipPrefix?_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.startsWith_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.dropPrefix?_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.Pattern.Model.Pos.skipWhile_eq
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[StrictPatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pos.skipWhile_cast
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.Pos.skipWhile_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.skipWhile_eq_self
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
(h : ¬MatchesAt pat pos)
:
theorem
String.Slice.Pattern.Model.Pos.skipWhile_eq_iff
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
(startPos endPos : s.Pos)
:
startPos.skipWhile pat = endPos ↔ IsLongestMatchAtChain pat startPos endPos ∧ (¬MatchesAt pat endPos ∨ IsLongestMatchAt pat endPos endPos)
theorem
String.Slice.Pattern.Model.Pos.isLongestMatchAtChain_skipWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
(pos : s.Pos)
:
IsLongestMatchAtChain pat pos (pos.skipWhile pat)
theorem
String.Slice.Pattern.Model.Pos.not_matchesAt_or_isLongestMatchAt_skipWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
(pos : s.Pos)
:
theorem
String.Slice.Pattern.Model.Pos.not_matchesAt_skipWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[StrictPatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
(pos : s.Pos)
:
theorem
String.Slice.Pattern.Model.Pos.skipWhile_eq_self_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[StrictPatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.skipWhile_eq_self_iff_or
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
@[simp]
theorem
String.Slice.Pos.le_skipWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.le_skipWhile_of_isLongestMatchAtChain
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
{startPos endPos : s.Pos}
(h : IsLongestMatchAtChain pat startPos endPos)
:
theorem
String.Slice.skipPrefixWhile_eq_skipWhile_startPos
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.cast_skipPrefixWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.Pattern.Model.skipPrefixWhile_eq_iff
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
(s : Slice)
(res : s.Pos)
:
s.skipPrefixWhile pat = res ↔ IsLongestMatchAtChain pat s.startPos res ∧ (¬MatchesAt pat res ∨ IsLongestMatchAt pat res res)
theorem
String.Slice.Pattern.Model.isLongestMatchAtChain_skipPrefixWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
(s : Slice)
:
IsLongestMatchAtChain pat s.startPos (s.skipPrefixWhile pat)
theorem
String.Slice.Pattern.Model.not_matchesAt_or_isLongestMatchAt_skipPrefixWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
(s : Slice)
:
¬MatchesAt pat (s.skipPrefixWhile pat) ∨ IsLongestMatchAt pat (s.skipPrefixWhile pat) (s.skipPrefixWhile pat)
theorem
String.Slice.Pattern.Model.not_matchesAt_skipPrefixWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[StrictPatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
(s : Slice)
:
¬MatchesAt pat (s.skipPrefixWhile pat)
theorem
String.Slice.skipPrefixWhile_eq_startPos
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
s.startsWith pat = false → s.skipPrefixWhile pat = s.startPos
@[simp]
theorem
String.Slice.skipPrefixWhile_eq_startPos_iff
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.skipPrefixWhile_eq_startPos_iff_or
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.dropWhile_eq_sliceFrom_skipPrefixWhile
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.dropWhile_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
@[simp]
theorem
String.Slice.startsWith_dropWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.dropWhile_eq_self
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
(h : s.startsWith pat = false)
:
@[simp]
theorem
String.Slice.dropWhile_eq_self_iff
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.dropWhile_eq_self_iff_or
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.takeWhile_eq_sliceTo_skipPrefixWhile
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.takeWhile_append_dropWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.LawfulForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.takeWhile_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.isEmpty_takeWhile_eq_true
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
(h : s.startsWith pat = false)
:
@[simp]
theorem
String.Slice.isEmpty_takeWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.all_eq_skipPrefixWhile_beq
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.all_eq_true_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[ForwardPattern pat]
[LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.all_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
@[simp]
theorem
String.Slice.all_takeWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.isEmpty_dropWhile
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.dropWhile_dropWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.takeWhile_takeWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.isEmpty_takeWhile_dropWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.isEmpty_dropWhile_takeWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.skipSuffix?_eq_backwardPatternSkipSuffix?
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.endsWith_eq_backwardPatternEndsWith
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.dropSuffix?_eq_map_skipSuffix?
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.skipSuffix?_eq_some_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.skipSuffix?_eq_none_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.isSome_skipSuffix?
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.LawfulBackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.endsWith_eq_false_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.endsWith_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.skipSuffix?_eq_none_iff
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.LawfulBackwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.dropSuffix?_eq_none_iff
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.LawfulBackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.eq_append_of_dropSuffix?_eq_some
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s res : Slice}
(h : s.dropSuffix? pat = some res)
:
theorem
String.Slice.Pos.revSkip?_eq_map_skipSuffix?
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.revSkip?_eq_some_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos res : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.revSkip?_eq_none_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.revSkip?_eq_revMatchAt?
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
@[simp]
theorem
String.Slice.revSkip?_endPos
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pos.revSkip?_cast
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.Pos.revSkip?_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.skipSuffix?_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.endsWith_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.dropSuffix?_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.Pattern.Model.Pos.revSkipWhile_eq
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[StrictPatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pos.revSkipWhile_cast
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.Pos.revSkipWhile_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.revSkipWhile_eq_self
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
(h : ¬RevMatchesAt pat pos)
:
theorem
String.Slice.Pattern.Model.Pos.revSkipWhile_eq_iff
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
(startPos endPos : s.Pos)
:
endPos.revSkipWhile pat = startPos ↔ IsLongestRevMatchAtChain pat startPos endPos ∧ (¬RevMatchesAt pat startPos ∨ IsLongestRevMatchAt pat startPos startPos)
theorem
String.Slice.Pattern.Model.Pos.isLongestRevMatchAtChain_revSkipWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
(pos : s.Pos)
:
IsLongestRevMatchAtChain pat (pos.revSkipWhile pat) pos
theorem
String.Slice.Pattern.Model.Pos.not_revMatchesAt_or_isLongestRevMatchAt_revSkipWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
(pos : s.Pos)
:
¬RevMatchesAt pat (pos.revSkipWhile pat) ∨ IsLongestRevMatchAt pat (pos.revSkipWhile pat) (pos.revSkipWhile pat)
theorem
String.Slice.Pattern.Model.Pos.not_revMatchesAt_revSkipWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[StrictPatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
(pos : s.Pos)
:
¬RevMatchesAt pat (pos.revSkipWhile pat)
theorem
String.Slice.Pattern.Model.Pos.revSkipWhile_eq_self_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[StrictPatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.revSkipWhile_eq_self_iff_or
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
@[simp]
theorem
String.Slice.Pos.revSkipWhile_le
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pattern.Model.Pos.revSkipWhile_le_of_isLongestRevMatchAtChain
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
{startPos endPos : s.Pos}
(h : IsLongestRevMatchAtChain pat startPos endPos)
:
theorem
String.Slice.skipSuffixWhile_eq_revSkipWhile_endPos
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.cast_skipSuffixWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.Pattern.Model.not_revMatchesAt_skipSuffixWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[StrictPatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
(s : Slice)
:
¬RevMatchesAt pat (s.skipSuffixWhile pat)
theorem
String.Slice.skipSuffixWhile_eq_endPos
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.skipSuffixWhile_eq_endPos_iff
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.skipSuffixWhile_eq_iff
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
(s : Slice)
(res : s.Pos)
:
s.skipSuffixWhile pat = res ↔ IsLongestRevMatchAtChain pat res s.endPos ∧ (¬RevMatchesAt pat res ∨ IsLongestRevMatchAt pat res res)
theorem
String.Slice.Pattern.Model.isLongestRevMatchAtChain_skipSuffixWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
(s : Slice)
:
IsLongestRevMatchAtChain pat (s.skipSuffixWhile pat) s.endPos
theorem
String.Slice.Pattern.Model.not_revMatchesAt_or_isLongestRevMatchAt_skipSuffixWhile
{ρ : Type}
(pat : ρ)
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
(s : Slice)
:
¬RevMatchesAt pat (s.skipSuffixWhile pat) ∨ IsLongestRevMatchAt pat (s.skipSuffixWhile pat) (s.skipSuffixWhile pat)
theorem
String.Slice.Pattern.Model.skipSuffixWhile_eq_endPos_iff_or
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
:
s.skipSuffixWhile pat = s.endPos ↔ ¬RevMatchesAt pat s.endPos ∨ IsLongestRevMatchAt pat s.endPos s.endPos
theorem
String.Slice.dropEndWhile_eq_sliceTo_skipSuffixWhile
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.dropEndWhile_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
@[simp]
theorem
String.Slice.endsWith_dropEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.dropEndWhile_eq_self
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
(h : s.endsWith pat = false)
:
@[simp]
theorem
String.Slice.dropEndWhile_eq_self_iff
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.dropEndWhile_eq_self_iff_or
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.takeEndWhile_eq_sliceFrom_skipSuffixWhile
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.dropEndWhile_append_takeEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.LawfulBackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.takeEndWhile_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
theorem
String.Slice.isEmpty_takeEndWhile_eq_true
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
(h : s.endsWith pat = false)
:
@[simp]
theorem
String.Slice.isEmpty_takeEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.Model.StrictPatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.revAll_eq_skipSuffixWhile_beq
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.Pattern.Model.revAll_eq_true_iff
{ρ : Type}
{pat : ρ}
[PatternModel pat]
[BackwardPattern pat]
[LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.revAll_congr
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s t : Slice}
(hst : s.copy = t.copy)
:
@[simp]
theorem
String.Slice.revAll_takeEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.isEmpty_takeEndWhile_iff_dropEndWhile_eq_self
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
theorem
String.Slice.isEmpty_dropEndWhile_iff_takeEndWhile_eq_self
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.takeEndWhile_eq_self_iff
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.isEmpty_dropEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.dropEndWhile_dropEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.takeEndWhile_takeEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.Slice.isEmpty_takeEndWhile_dropEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.Slice.isEmpty_dropEndWhile_takeEndWhile
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.skipPrefix?_eq_skipPrefix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
theorem
String.skipPrefix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
theorem
String.Slice.skipPrefix?_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.startsWith_eq_startsWith_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.startsWith_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.startsWith_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.dropPrefix?_eq_dropPrefix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.dropPrefix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.copy_dropPrefix?_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.Pos.skip?_eq_skip?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
{pos : s.Pos}
:
theorem
String.Pos.skip?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
{pos : s.Pos}
:
theorem
String.Slice.Pos.skip?_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Slice.Pos.skipWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
@[simp]
theorem
String.Pos.le_skipWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
{pos : s.Pos}
:
theorem
String.skipPrefixWhile_eq_skipPrefixWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
theorem
String.skipPrefixWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
theorem
String.Slice.skipPrefixWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
theorem
String.skipPrefixWhile_eq_startPos
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
s.startsWith pat = false → s.skipPrefixWhile pat = s.startPos
@[simp]
theorem
String.skipPrefixWhile_eq_startPos_iff
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
theorem
String.dropWhile_eq_dropWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.dropWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.dropWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.startsWith_dropWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
theorem
String.dropWhile_eq_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
(h : s.startsWith pat = false)
:
@[simp]
theorem
String.dropWhile_eq_toSlice_iff
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
theorem
String.takeWhile_eq_takeWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.takeWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.takeWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.ForwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.takeWhile_append_dropWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.LawfulForwardPattern pat]
{s : String}
:
theorem
String.isEmpty_takeWhile_eq_true
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
(h : s.startsWith pat = false)
:
@[simp]
theorem
String.isEmpty_takeWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
theorem
String.all_eq_all_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
@[simp]
theorem
String.Slice.all_copy
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.ForwardPattern pat]
[Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.all_takeWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
@[simp]
theorem
String.isEmpty_dropWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.ForwardPattern pat]
{s : String}
:
@[simp]
theorem
String.dropWhile_dropWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
theorem
String.takeWhile_takeWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.isEmpty_takeWhile_dropWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
theorem
String.isEmpty_dropWhile_takeWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.ForwardPattern pat]
[Slice.Pattern.Model.LawfulForwardPatternModel pat]
{s : String}
:
theorem
String.skipSuffix?_eq_skipSuffix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
theorem
String.skipSuffix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
theorem
String.Slice.skipSuffix?_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.endsWith_eq_endsWith_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.endsWith_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.endsWith_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.dropSuffix?_eq_dropSuffix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.dropSuffix?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.copy_dropSuffix?_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.revSkip?_eq_revSkip?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
{pos : s.Pos}
:
theorem
String.revSkip?_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
{pos : s.Pos}
:
theorem
String.Slice.Pos.revSkip?_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
theorem
String.Pos.revSkipWhile_eq_revSkipWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
{pos : s.Pos}
:
theorem
String.Pos.revSkipWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
{pos : s.Pos}
:
theorem
String.Slice.Pos.revSkipWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
{pos : s.Pos}
:
@[simp]
theorem
String.Pos.revSkipWhile_le
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
{pos : s.Pos}
:
theorem
String.skipSuffixWhile_eq_skipSuffixWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
theorem
String.skipSuffixWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
theorem
String.Slice.skipSuffixWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
theorem
String.skipSuffixWhile_eq_endPos
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
@[simp]
theorem
String.skipSuffixWhile_eq_endPos_iff
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
theorem
String.dropEndWhile_eq_dropEndWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.dropEndWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.dropEndWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.endsWith_dropEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
theorem
String.dropEndWhile_eq_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
(h : s.endsWith pat = false)
:
@[simp]
theorem
String.dropEndWhile_eq_toSlice_iff
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
theorem
String.takeEndWhile_eq_takeEndWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.takeEndWhile_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.takeEndWhile_copy
{ρ : Type}
{pat : ρ}
[Pattern.BackwardPattern pat]
[Pattern.Model.PatternModel pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.dropEndWhile_append_takeEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.LawfulBackwardPattern pat]
{s : String}
:
theorem
String.isEmpty_takeEndWhile_eq_true
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
(h : s.endsWith pat = false)
:
@[simp]
theorem
String.isEmpty_takeEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.Model.StrictPatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
theorem
String.revAll_eq_revAll_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.revAll_toSlice
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.Slice.revAll_copy
{ρ : Type}
{pat : ρ}
[Pattern.Model.PatternModel pat]
[Pattern.BackwardPattern pat]
[Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.revAll_takeEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
@[simp]
theorem
String.takeEndWhile_eq_toSlice_iff
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.isEmpty_dropEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.BackwardPattern pat]
{s : String}
:
@[simp]
theorem
String.dropEndWhile_dropEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
theorem
String.takeEndWhile_takeEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : Slice}
:
@[simp]
theorem
String.isEmpty_takeEndWhile_dropEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
:
theorem
String.isEmpty_dropEndWhile_takeEndWhile
{ρ : Type}
{pat : ρ}
[Slice.Pattern.Model.PatternModel pat]
[Slice.Pattern.BackwardPattern pat]
[Slice.Pattern.Model.LawfulBackwardPatternModel pat]
{s : String}
: