This PR redefines `String` to be the type of byte arrays `b` for which `b.IsValidUtf8`. This moves the data model of strings much closer to the actual data representation at runtime. In the near future, we will - provide variants of `String.Pos` and `Substring` that only allow for valid positions - redefine all `String` functions to be much closer to their C++ implementations In the near-to-medium future we will then provide comprehensive verification of `String` based on these refactors.
18 lines
712 B
Text
18 lines
712 B
Text
setLit.lean:22:19-22:21: error: overloaded, errors
|
|
failed to synthesize
|
|
EmptyCollection String
|
|
|
|
Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command.
|
|
|
|
Fields missing: `bytes`, `isValidUtf8`
|
|
|
|
Hint: Add missing fields:
|
|
̲b̲y̲t̲e̲s̲ ̲:̲=̲ ̲_̲
|
|
̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲ ̲i̲s̲V̲a̲l̲i̲d̲U̲t̲f̲8̲ ̲:̲=̲ ̲_̲ ̲
|
|
setLit.lean:24:31-24:38: error: overloaded, errors
|
|
failed to synthesize
|
|
Singleton Nat String
|
|
|
|
Hint: Additional diagnostic information may be available using the `set_option diagnostics true` command.
|
|
|
|
24:33 `val` is not a field of structure `String`
|