-
Is there a Boogie language semantic reason behind the choice of setting Z3's The reason I'm looking into this is that I'm trying to understand if in Boogie it's possible for quantifier triggers to "travel back in time". For example, consider the following program. To prove (1) the solver would need to instantiate the axiom matching the trigger on a statement that comes later in the CFG (2). This notion of time is lost when computing the WLP; both function foo(x: int): int;
function bar(x: int): int;
axiom (forall x: int :: { bar(x) } bar(x) > 0 && foo(x) == 42);
procedure test(x: int)
{
assert foo(x) == 42; // (1)
assert bar(x) > 0; // (2)
} The program above, verified with different settings (
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 2 replies
-
Boogie does not set boogie/Source/Provers/SMTLib/Z3.cs Lines 61 to 71 in 76b6a37 Dafny still sets the cocktail of options that Boogie used to set. I think all of them are performance tuning, no semantic reason. Coincidentally, I saw that 2 days ago in dafny-lang/dafny#3233 that Dafny changed to only set |
Beta Was this translation helpful? Give feedback.
Boogie does not set
smt.case_split
anymore since #197. The following code is where Boogie sets the minimum necessary Z3 options. Are you running a very old Boogie?boogie/Source/Provers/SMTLib/Z3.cs
Lines 61 to 71 in 76b6a37