aboutsummaryrefslogtreecommitdiffstats
path: root/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
diff options
context:
space:
mode:
Diffstat (limited to 'Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java')
-rw-r--r--Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java15
1 files changed, 12 insertions, 3 deletions
diff --git a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
index 612e93a6..0799953f 100644
--- a/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
+++ b/Framework/hu.bme.mit.inf.dslreasoner.viatra2logic/src/hu/bme/mit/inf/dslreasoner/viatra2logic/NumericZ3ProblemSolver.java
@@ -1,6 +1,5 @@
1package hu.bme.mit.inf.dslreasoner.viatra2logic; 1package hu.bme.mit.inf.dslreasoner.viatra2logic;
2 2
3import java.io.File;
4import java.util.ArrayList; 3import java.util.ArrayList;
5import java.util.HashMap; 4import java.util.HashMap;
6import java.util.List; 5import java.util.List;
@@ -20,6 +19,7 @@ import com.microsoft.z3.Context;
20import com.microsoft.z3.Expr; 19import com.microsoft.z3.Expr;
21import com.microsoft.z3.IntExpr; 20import com.microsoft.z3.IntExpr;
22import com.microsoft.z3.Model; 21import com.microsoft.z3.Model;
22import com.microsoft.z3.Params;
23import com.microsoft.z3.RealExpr; 23import com.microsoft.z3.RealExpr;
24import com.microsoft.z3.Solver; 24import com.microsoft.z3.Solver;
25import com.microsoft.z3.Status; 25import com.microsoft.z3.Status;
@@ -36,7 +36,7 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{
36 private Solver s; 36 private Solver s;
37 private Map<Object, Expr> varMap; 37 private Map<Object, Expr> varMap;
38 38
39 public NumericZ3ProblemSolver() { 39 public NumericZ3ProblemSolver(int timeout) {
40 //FOR LINUX VM 40 //FOR LINUX VM
41 //Not Elegant, but this is working for now 41 //Not Elegant, but this is working for now
42// String root = "/home/models/VIATRA-Generator"; 42// String root = "/home/models/VIATRA-Generator";
@@ -50,6 +50,11 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{
50 ctx = new Context(cfg); 50 ctx = new Context(cfg);
51 ctx.setPrintMode(Z3_ast_print_mode.Z3_PRINT_SMTLIB_FULL); 51 ctx.setPrintMode(Z3_ast_print_mode.Z3_PRINT_SMTLIB_FULL);
52 s = ctx.mkSolver(); 52 s = ctx.mkSolver();
53 if (timeout != -1) {
54 Params p = ctx.mkParams();
55 p.add("timeout", timeout);
56 s.setParameters(p);
57 }
53 varMap = new HashMap<Object, Expr>(); 58 varMap = new HashMap<Object, Expr>();
54 } 59 }
55 60
@@ -82,7 +87,11 @@ public class NumericZ3ProblemSolver extends NumericProblemSolver{
82 s.add(problemInstance); 87 s.add(problemInstance);
83 endformingProblem = System.nanoTime()-startformingProblem; 88 endformingProblem = System.nanoTime()-startformingProblem;
84 long startSolvingProblem = System.nanoTime(); 89 long startSolvingProblem = System.nanoTime();
85 boolean result = (s.check() == Status.SATISFIABLE); 90// System.out.print("start - ");
91 Status soln = s.check();
92 boolean result = (soln == Status.SATISFIABLE);
93 if (soln == Status.UNKNOWN) System.err.println("TIMEOUT");
94// System.out.println("end");
86 endSolvingProblem = System.nanoTime()-startSolvingProblem; 95 endSolvingProblem = System.nanoTime()-startSolvingProblem;
87 this.ctx.close(); 96 this.ctx.close();
88 return result; 97 return result;