如何在 Dafny 中定义这种正则语言?
How to define this regular language in Dafny?
《自动机理论与应用》一书中有道题是讲语言的
如何在 Dafny 中定义这样的语言?
这是将 L
的定义直接转录成 Dafny。
predicate ContainsOnlyAsAndBs(s: string)
{
forall c | c in s :: c == 'a' || c == 'b'
}
predicate L(w: string)
requires ContainsOnlyAsAndBs(w)
{
exists x | ContainsOnlyAsAndBs(x) && x != [] :: w == ['a'] + x + ['a']
}
请注意,在 Dafny 中,类型 string
被定义为 seq<char>
。所以我们可以使用通常的 built-in 方法来操作字符串上的序列。
《自动机理论与应用》一书中有道题是讲语言的
如何在 Dafny 中定义这样的语言?
这是将 L
的定义直接转录成 Dafny。
predicate ContainsOnlyAsAndBs(s: string)
{
forall c | c in s :: c == 'a' || c == 'b'
}
predicate L(w: string)
requires ContainsOnlyAsAndBs(w)
{
exists x | ContainsOnlyAsAndBs(x) && x != [] :: w == ['a'] + x + ['a']
}
请注意,在 Dafny 中,类型 string
被定义为 seq<char>
。所以我们可以使用通常的 built-in 方法来操作字符串上的序列。