Skip to content

\false provable from recursive logic definition

ID0002338: This issue was created automatically from Mantis Issue 2338. Further discussion may take place here.


Id Project Category View Due Date Updated
ID0002338 Frama-C Plug-in > wp public 2017-12-18 2020-02-17
Reporter Jochen Assigned To correnson Resolution duplicate
Priority normal Severity minor Reproducibility always
Platform Sulfur-20171101 OS Ubuntu 17.04 OS Version -
Product Version - Target Version - Fixed in Version Frama-C 20-Calcium

Description :

Running "frama-c -wp foo.c -wp-prover alt-ergo -wp-prover eprover" on the attached file proves all goals, including a lemma "Check" which just says "\false", from nothing but a recursive definition of a logic int function. The latter is well-founded since its only recursive call uses a parameter value n==0 which immediately employs the base case.

The problem disappears (1) when "integer" is used as result type and as 3rd parameter type, (2) when "a[]" is omitted, (3) when lemma "Alpha" is renamed to a name lexicographically after "Check", or (4) when "cvc3" or "cvc4-15" is used instead of "eprover". The problem remains, however, when "z3" is used.

Attachments

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information