| char ' + s→l(str0) ≠ [] ⊦ char ' + str0 = "", l→s((char ' + s→l(str0)).first + sublist(0, m, (char ' + s→l(str0)).rest)) = char ' + substring(str0, 0, m) |
⊦ char ' + str0 = "", l→s(sublist(0, m, s→l(str0))) = substring(str0, 0, m)
Used simplifier rules: e-01: ⊦ char ' + chars ≠ []; from specification list[charlist]%assoc: ⊦ (str1 + str2) + str3 = str1 + str2 + str3; from specification string-append%app: ⊦ str + str0 = str + str1 ↔ str0 = str1; from specification string-append%chartostring-01: ⊦ char + str = char ' + str; from specification string-append%l2s-rec: ⊦ l→s(char ' + chars) = char + l→s(chars); from specification string2list%c: ⊦ char + chars = char ' + chars; from specification list[charlist]%c-07: ⊦ (char ' + chars).rest = chars; from specification list[charlist]%a: ⊦ (chars + chars0) + chars1 = chars + chars0 + chars1; from specification list[charlist]%c-08: ⊦ (char ' + chars).first = char; from specification list[charlist]