Question

What is the difference between a lemma and a ghost method?

Answer

A lemma is a ghost method that does not have a modifies clause. Lemmas also do not typically return results. However, in most places where a lemma is used, it must be declared as a lemma. For example the lemma call that can be part of an expression must call a method that is declared to be a lemma, not a ghost method.

A lemma may also be called as a statement in the body of a method, but here a ghost method is allowed as well, so either can be used.