diff options
-rw-r--r-- | Source/Provers/SMTLib/ProverInterface.cs | 2 | ||||
-rw-r--r-- | Source/Provers/SMTLib/Z3.cs | 6 | ||||
-rw-r--r-- | Source/VCGeneration/Check.cs | 7 | ||||
-rw-r--r-- | Source/VCGeneration/Context.cs | 7 | ||||
-rw-r--r-- | Source/VCGeneration/FixedpointVC.cs | 2 |
5 files changed, 21 insertions, 3 deletions
diff --git a/Source/Provers/SMTLib/ProverInterface.cs b/Source/Provers/SMTLib/ProverInterface.cs index c5c867d9..86779a54 100644 --- a/Source/Provers/SMTLib/ProverInterface.cs +++ b/Source/Provers/SMTLib/ProverInterface.cs @@ -560,7 +560,7 @@ namespace Microsoft.Boogie.SMTLib // Concatenate all the arguments
string modelString = resp[0].Name;
// modelString = modelString.Substring(7, modelString.Length - 8); // remove "(model " and final ")"
- var models = Model.ParseModels(new StringReader("Z3 error model: \n" + modelString), "");
+ var models = Model.ParseModels(new StringReader("Error model: \n" + modelString), "");
if (models == null || models.Count == 0)
{
HandleProverError("no model from prover: " + resp.ToString());
diff --git a/Source/Provers/SMTLib/Z3.cs b/Source/Provers/SMTLib/Z3.cs index 8dfa8371..ed8f0908 100644 --- a/Source/Provers/SMTLib/Z3.cs +++ b/Source/Provers/SMTLib/Z3.cs @@ -350,9 +350,13 @@ namespace Microsoft.Boogie.SMTLib options.AddWeakSmtOption("ARRAY_WEAK", "true");
options.AddWeakSmtOption("ARRAY_EXTENSIONAL", "false");
}
+
+ options.AddWeakSmtOption("MODEL_ON_TIMEOUT", "true");
+
}
- options.AddWeakSmtOption("MODEL_ON_TIMEOUT", "true");
+ // KLM: don't add Z3 options here. The options are different in different Z3 versions.
+ // Add options in the above condition for the appropriate version.
// legacy option handling
if (!CommandLineOptions.Clo.z3AtFlag)
diff --git a/Source/VCGeneration/Check.cs b/Source/VCGeneration/Check.cs index 549c700a..a77bfba5 100644 --- a/Source/VCGeneration/Check.cs +++ b/Source/VCGeneration/Check.cs @@ -192,6 +192,13 @@ namespace Microsoft.Boogie { }
}
+ public void RetargetWithoutReset(Program prog, ProverContext ctx)
+ {
+ ctx.Clear();
+ Setup(prog, ctx);
+ }
+
+
public void SetTimeout()
{
if (0 < timeout)
diff --git a/Source/VCGeneration/Context.cs b/Source/VCGeneration/Context.cs index 7931a042..83787dc5 100644 --- a/Source/VCGeneration/Context.cs +++ b/Source/VCGeneration/Context.cs @@ -35,6 +35,7 @@ namespace Microsoft.Boogie public abstract VCGenerationOptions VCGenOptions { get; }
public abstract object Clone();
public abstract void Reset();
+ public abstract void Clear();
}
[ContractClassFor(typeof(ProverContext))]
@@ -128,6 +129,12 @@ public abstract class ProverContextContracts:ProverContext{ axiomConjuncts = new List<VCExpr>();
}
+ public override void Clear()
+ {
+ distincts = new List<Variable>();
+ axiomConjuncts = new List<VCExpr>();
+ }
+
protected DeclFreeProverContext(DeclFreeProverContext ctxt) {
Contract.Requires(ctxt != null);
this.gen = ctxt.gen;
diff --git a/Source/VCGeneration/FixedpointVC.cs b/Source/VCGeneration/FixedpointVC.cs index 6fe3a103..addf69a2 100644 --- a/Source/VCGeneration/FixedpointVC.cs +++ b/Source/VCGeneration/FixedpointVC.cs @@ -112,7 +112,7 @@ namespace Microsoft.Boogie checker = new Checker(this, program, logFilePath, appendLogFile, CommandLineOptions.Clo.ProverKillTime, null);
else {
checker = old_checker;
- checker.Retarget(program,checker.TheoremProver.Context);
+ checker.RetargetWithoutReset(program,checker.TheoremProver.Context);
}
old_checker = checker;
boogieContext = checker.TheoremProver.Context;
|