Bug in Hifrog LRA encoding - resulting assertion violation for a safe bench
Benchmark: ex13-change-orig.c (attached)
How to run:
./hifrog --logic qflra ex13-change-orig.c
LRA reports the bench as unsafe, while prop reports it as safe. The result of dump-query is SAT in OpenSMT and Z3, so the bug is in the encoding.
#1 Updated by Sepideh Asadi 6 months ago
- Status changed from New to Resolved
This behaviour is Normal and expected in LRA, because LRA does not recognise int, all is Real number!
it is because of the following reason:
In C itself the correct behavior is a1=a2
but in LRA since in the encoding (cprover) we do optimization as
x > c --> x >= c+1
for e.g., in the following c program contains integer
assert(x>=1); in C itself, and Propositional logic it is safe
in LRA it is unsafe because of different nature of LRA that does not know integer, it considers it as Real: so x= 0.5 cex is reported!