-
Notifications
You must be signed in to change notification settings - Fork 34
Open
Description
The counterexample produced for the below code should not be a reachable state, since the step variable is incremented on every cycle in the next block. However, the counterexample has the value of step at 1 on consecutive cycles despite this.
Code
module main {
var x : integer;
var step : integer;
init {
x = 0;
step = 0;
}
next {
x' = 1;
step' = step + 1;
assert ((step == 1) ==> (x == 0)); // should fail
}
// invariant x_zero : (step == 1) ==> (x == 0);
control {
vobj = bmc_noLTL(3);
check;
print_results;
vobj.print_cex();
}
}
Output
$ uclid no_update.ucl
Successfully instantiated 1 module(s).
2 assertions passed.
1 assertions failed.
0 assertions indeterminate.
PASSED -> vobj [Step #1] assertion @ no_update.ucl, line 14
PASSED -> vobj [Step #3] assertion @ no_update.ucl, line 14
FAILED -> vobj [Step #2] assertion @ no_update.ucl, line 14
CEX for vobj [Step #2] assertion @ no_update.ucl, line 14
=================================
Step #0
step : 0
x : 0
=================================
=================================
Step #1
step : 1
x : 1
=================================
=================================
Step #2
step : 1
x : 1
=================================
Finished execution for module: main.
Metadata
Metadata
Assignees
Labels
No labels