Open petemud opened 1 month ago
This is not a bug. Rather it is intended behavior. Boogie provides ways to customize what happens when the inline limit for a procedure is reached. See the documentation here.
Why is proving true==false
ever an intended behavior? If it is intended under an option, at least this option shouldn't be the default
What default would you prefer?
You choose. The consistent and sound options if inline depth reaches 0 are:
requires
and ensures
)requires
as assert
or - only if there are no requires
- drop a call completelyrequires
put assert false
Putting assume false
ever is plainly inconsistent. As for dropping call when there are requires
- it is unsound, because this way you can prove more, not less
Under
/inline:assume
, which is defaultbecomes
The bug got introduced in 08e368784c1ae629d870db6b09edadbef306e1d6