This PR verifies the `String.dropWhile` and `String.takeWhile` functions. It also includes a refactor of the `PatternModel` class so that the `not_matches_empty` condition is moved into a separate typeclass `StrictPatternModel`. This allows string patterns to implement `LawfulForwardPatternModel` unconditionally, which means that more of the general theory about patterns directly applies to string patterns without having to do a case distinction for empty strings. This PR also includes a study of the `PatternModel` machinery given to slices `s` and `t` such that `s.copy = t.copy`. From these results, we deduce statements like `s.copy.startsWith pat = s.startsWith pat` (which is far from obvious!). |
||
|---|---|---|
| .. | ||
| Data | ||
| Do | ||
| Internal | ||
| Net | ||
| Sat | ||
| Sync | ||
| Tactic | ||
| Time | ||
| Data.lean | ||
| Do.lean | ||
| Internal.lean | ||
| Net.lean | ||
| Sat.lean | ||
| Sync.lean | ||
| Tactic.lean | ||
| Time.lean | ||