summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorGravatar mkawa <unknown>2009-09-23 21:12:17 +0000
committerGravatar mkawa <unknown>2009-09-23 21:12:17 +0000
commitaff91f102b21cddf725a730f32526c2f7b418d54 (patch)
tree3540a257ec984f43ad80b0d5f83cd0422ca98577 /Source
parent7d9a1e78eb07f592065a69db862d92014d5c1894 (diff)
Added /z3multipleErrors flag for generation of multiple counterexamples per assert (switches off z3's /@ flag).
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/CommandLineOptions.ssc7
-rw-r--r--Source/Provers/Z3/Prover.ssc8
2 files changed, 12 insertions, 3 deletions
diff --git a/Source/Core/CommandLineOptions.ssc b/Source/Core/CommandLineOptions.ssc
index 244dc640..952bad92 100644
--- a/Source/Core/CommandLineOptions.ssc
+++ b/Source/Core/CommandLineOptions.ssc
@@ -171,6 +171,7 @@ namespace Microsoft.Boogie
public int ProverKillTime = -1; // -1 means not specified
public int SmokeTimeout = 10; // default to 10s
public int ProverCCLimit = 5;
+ public bool z3AtFlag = true;
public bool RestartProverPerVC = false;
public double VcsMaxCost = 1.0;
@@ -1020,6 +1021,11 @@ namespace Microsoft.Boogie
ps.GetNumericArgument(ref ProverCCLimit);
break;
+ case "-z3multipleErrors":
+ case "/z3multipleErrors":
+ z3AtFlag = false;
+ break;
+
case "-z3mam":
case "/z3mam":
{
@@ -1944,6 +1950,7 @@ namespace Microsoft.Boogie
/z3opt:<arg> : specify additional Z3 options
/z3DebugTrace:<arg> : z3 command line options so that Z3 generates debug
tracing
+ /z3multipleErrors : report multiple counterexamples for each error
SMT-Lib specific options:
/smtOutput:<file> : Path and basename to which the prover output is
diff --git a/Source/Provers/Z3/Prover.ssc b/Source/Provers/Z3/Prover.ssc
index 13c71814..3fbb8a4a 100644
--- a/Source/Provers/Z3/Prover.ssc
+++ b/Source/Provers/Z3/Prover.ssc
@@ -89,10 +89,12 @@ namespace Microsoft.Boogie.Z3
} else {
z3args += " " + OptionChar() + "mam:" + CommandLineOptions.Clo.Z3mam;
}
-
+
+ if (CommandLineOptions.Clo.z3AtFlag) {
+ z3args += " " + OptionChar() + "@ ";
+ }
if (0 <= CommandLineOptions.Clo.ProverCCLimit) {
- z3args += " " + OptionChar() + "@ " +
- OptionChar() + "cex:" + CommandLineOptions.Clo.ProverCCLimit;
+ z3args += " " + OptionChar() + "cex:" + CommandLineOptions.Clo.ProverCCLimit;
}
if (0 <= opts.Timeout) {
z3args += " " + OptionChar() + "t:" + opts.Timeout;