Holds if this statement is side-effect free (a conservative approximation; that is, it may be side-effect free even if this predicate doesn’t hold).
This predicate cannot be overridden; override mayBeImpure()
instead.
Note that this predicate only considers whether the statement has any side-effects, such as writing to a file. Even if it holds, the statement may be impure in the sense that its behavior is affected by external factors, such as the contents of global variables.
predicate isPure()