在 dafny 中更新不可变字符串的最佳方法

Best way to update an immutable string in dafny

我正在尝试验证一个将凯撒密码应用于字符串的程序。必须返回原始字符串

method caesar(s:string, index:int)
//apply caesar

更新字符串值的最佳方法是什么,类似于:

s[i] := 'x'

无法在 Dafny 中更新字符串。 Strings are representedseq<char>,并且序列在 Dafny 中是不可变的。不可变意味着序列是一个值,不能改变。

如果您需要 in place manipulation,您可以使用 array<char>

如果你可以return一个new sequence你可以

var s' := s[i := e];
return s';