This error message is not clear and may come from a variety of sources. Here is one:
lemma L() {}
method test()
ensures L(); true
{
}
which produces
ERROR_PostconditionLemma.dfy(4,15): Error: this symbol not expected in Dafny
1 parse errors detected in ERROR_PostconditionLemma.dfy
The error message points to the token true
as the unexpected symbol.
true
is definitely a legitimate symbol in Dafny.
The problem is that the ;
in the ensures
clause is seen as the (optional) semicolon that can end
the clause. Thus the true
is interpreted as the (illegal) start to a new clause (or a {
to start the body).
The correct way to include a lemma with the postcondition is to use parentheses: `ensures (L(); true)