Skip to content

Commit

Permalink
Added legacy solver
Browse files Browse the repository at this point in the history
  • Loading branch information
leventeBajczi committed Mar 10, 2024
1 parent 1700ba8 commit 43b63f9
Show file tree
Hide file tree
Showing 84 changed files with 4,423 additions and 210 deletions.
4 changes: 3 additions & 1 deletion buildSrc/src/main/kotlin/Deps.kt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/

object Deps {

val guava = "com.google.guava:guava:${Versions.guava}"
Expand All @@ -24,7 +25,8 @@ object Deps {
val runtime = "org.antlr:antlr4-runtime:${Versions.antlr}"
}

val z3 = "lib/com.microsoft.z3.jar"
val z3 = "lib/current/com.microsoft.z3.jar"
val z3legacy = "lib/legacy/com.microsoft.z3.jar"

val jcommander = "com.beust:jcommander:${Versions.jcommander}"

Expand Down
Binary file added lib/current/com.microsoft.z3.jar
Binary file not shown.
1 change: 1 addition & 0 deletions lib/legacy/README
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
This is the old version of Z3, used for legacy / backwards-compatibility purposes.
File renamed without changes.
Binary file modified lib/libz3.so
100644 → 100755
Binary file not shown.
Binary file modified lib/libz3java.so
100644 → 100755
Binary file not shown.
Binary file added lib/libz3javalegacy.dll
Binary file not shown.
Binary file added lib/libz3javalegacy.dylib
Binary file not shown.
Binary file added lib/libz3javalegacy.so
Binary file not shown.
Binary file added lib/libz3legacy.dll
Binary file not shown.
Binary file added lib/libz3legacy.dylib
Binary file not shown.
Binary file added lib/libz3legacy.so
Binary file not shown.
1 change: 1 addition & 0 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ include(

"solver/solver",
"solver/solver-z3",
"solver/solver-z3-legacy",
"solver/solver-smtlib",
"solver/solver-smtlib-cli",
"solver/graph-solver",
Expand Down
2 changes: 1 addition & 1 deletion subprojects/cfa/cfa-analysis/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ dependencies {
implementation(project(":theta-common"))
implementation(project(":theta-core"))
implementation(project(":theta-solver"))
testImplementation(project(":theta-solver-z3"))
testImplementation(project(":theta-solver-z3-legacy"))
testImplementation(project(":theta-solver-smtlib"))
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
import hu.bme.mit.theta.cfa.dsl.CfaDslManager;
import hu.bme.mit.theta.common.visualization.writer.GraphvizWriter;
import hu.bme.mit.theta.solver.ItpSolver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

public final class CfaPredImpactCheckerTest {

Expand All @@ -46,8 +46,8 @@ public void test() throws FileNotFoundException, IOException {
final CFA cfa = CfaDslManager.createCfa(
new FileInputStream("src/test/resources/counter5_true.cfa"));

final Solver abstractionSolver = Z3SolverFactory.getInstance().createSolver();
final ItpSolver refinementSolver = Z3SolverFactory.getInstance().createItpSolver();
final Solver abstractionSolver = Z3LegacySolverFactory.getInstance().createSolver();
final ItpSolver refinementSolver = Z3LegacySolverFactory.getInstance().createItpSolver();

final PredImpactChecker checker = PredImpactChecker.create(
CfaLbeLts.of(cfa.getErrorLoc().get()), cfa.getInitLoc(),
Expand Down
2 changes: 1 addition & 1 deletion subprojects/cfa/cfa-cli/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ dependencies {
implementation(project(":theta-common"))
implementation(project(":theta-analysis"))
implementation(project(":theta-cfa-analysis"))
implementation(project(":theta-solver-z3"))
implementation(project(":theta-solver-z3-legacy"))
implementation(project(":theta-solver-smtlib"))
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@
import hu.bme.mit.theta.solver.SolverFactory;
import hu.bme.mit.theta.solver.SolverManager;
import hu.bme.mit.theta.solver.smtlib.SmtLibSolverManager;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;
import hu.bme.mit.theta.solver.z3.Z3SolverManager;

import java.io.File;
Expand Down Expand Up @@ -336,7 +336,7 @@ private void printError(final Throwable ex) {
private void writeCex(final Unsafe<?, ?> status) throws FileNotFoundException {
@SuppressWarnings("unchecked") final Trace<CfaState<?>, CfaAction> trace = (Trace<CfaState<?>, CfaAction>) status.getTrace();
final Trace<CfaState<ExplState>, CfaAction> concrTrace = CfaTraceConcretizer.concretize(
trace, Z3SolverFactory.getInstance());
trace, Z3LegacySolverFactory.getInstance());
final File file = new File(cexfile);
PrintWriter printWriter = null;
try {
Expand Down
2 changes: 1 addition & 1 deletion subprojects/common/analysis/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,6 @@ dependencies {
implementation(project(":theta-core"))
implementation(project(":theta-solver"))
implementation(project(":theta-graph-solver"))
testImplementation(project(":theta-solver-z3"))
testImplementation(project(":theta-solver-z3-legacy"))
implementation("com.corundumstudio.socketio:netty-socketio:2.0.6")
}
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import hu.bme.mit.theta.core.type.inttype.IntExprs
import hu.bme.mit.theta.core.type.inttype.IntExprs.Int
import hu.bme.mit.theta.core.utils.StmtUtils
import hu.bme.mit.theta.core.utils.indexings.VarIndexingFactory
import hu.bme.mit.theta.solver.z3.Z3SolverFactory
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory
import org.junit.Assert
import org.junit.Test

Expand Down Expand Up @@ -66,9 +66,9 @@ class BoundedTest {

@Test
fun testBoundedUnsafe() {
val solver = Z3SolverFactory.getInstance().createSolver()
val itpSolver = Z3SolverFactory.getInstance().createItpSolver()
val indSolver = Z3SolverFactory.getInstance().createSolver()
val solver = Z3LegacySolverFactory.getInstance().createSolver()
val itpSolver = Z3LegacySolverFactory.getInstance().createItpSolver()
val indSolver = Z3LegacySolverFactory.getInstance().createSolver()
val checker: BoundedChecker<*, *> = BoundedChecker(
monolithicExpr = unsafeMonolithicExpr!!,
bmcSolver = solver,
Expand All @@ -83,9 +83,9 @@ class BoundedTest {

@Test
fun testBoundedSafe() {
val solver = Z3SolverFactory.getInstance().createSolver()
val itpSolver = Z3SolverFactory.getInstance().createItpSolver()
val indSolver = Z3SolverFactory.getInstance().createSolver()
val solver = Z3LegacySolverFactory.getInstance().createSolver()
val itpSolver = Z3LegacySolverFactory.getInstance().createItpSolver()
val indSolver = Z3LegacySolverFactory.getInstance().createSolver()
val checker: BoundedChecker<*, *> = BoundedChecker(
monolithicExpr = safeMonolithicExpr!!,
bmcSolver = solver,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,13 +32,13 @@
import hu.bme.mit.theta.core.decl.VarDecl;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.solver.Solver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

public class ExplInitFuncTest {

private final VarDecl<IntType> x = Var("x", Int());
private final VarDecl<IntType> y = Var("y", Int());
private final Solver solver = Z3SolverFactory.getInstance().createSolver();
private final Solver solver = Z3LegacySolverFactory.getInstance().createSolver();

@Test
public void test1() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,13 +38,13 @@
import hu.bme.mit.theta.core.type.booltype.BoolType;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.solver.Solver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

@RunWith(Parameterized.class)
public class ExplStatePredicateTest {

private static final VarDecl<IntType> x = Var("x", Int());
private final Solver solver = Z3SolverFactory.getInstance().createSolver();
private final Solver solver = Z3LegacySolverFactory.getInstance().createSolver();

@Parameter(value = 0)
public Expr<BoolType> expr;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@
import hu.bme.mit.theta.core.type.booltype.BoolExprs;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.solver.Solver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

public class ExplStmtTransFuncTest {

private final Solver solver = Z3SolverFactory.getInstance().createSolver();
private final Solver solver = Z3LegacySolverFactory.getInstance().createSolver();
private final VarDecl<IntType> x = Var("x", Int());
private final VarDecl<IntType> y = Var("y", Int());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import hu.bme.mit.theta.core.model.ImmutableValuation;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.core.utils.indexings.VarIndexingFactory;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;
import org.junit.Assert;
import org.junit.Test;

Expand All @@ -44,7 +44,7 @@ public class ExplTransFuncTest {
private final ExplState state = ExplState.of(
ImmutableValuation.builder().put(x, Int(1)).build());

ExplTransFunc transFunc = ExplTransFunc.create(Z3SolverFactory.getInstance().createSolver());
ExplTransFunc transFunc = ExplTransFunc.create(Z3LegacySolverFactory.getInstance().createSolver());

@Test
public void testNormal() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@
import hu.bme.mit.theta.core.type.Expr;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.solver.Solver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

@RunWith(Parameterized.class)
public final class ExprOrdLeqTest {
Expand Down Expand Up @@ -72,7 +72,7 @@ public static Collection<Object[]> data() {

@Test
public void testIsTop() {
final Solver solver = Z3SolverFactory.getInstance().createSolver();
final Solver solver = Z3LegacySolverFactory.getInstance().createSolver();
final PartialOrd<ExprState> ord = ExprOrd.create(solver);
assertEquals(ord.isLeq(state1, state2), leq);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
import hu.bme.mit.theta.core.utils.indexings.VarIndexing;
import hu.bme.mit.theta.core.utils.indexings.VarIndexingFactory;
import hu.bme.mit.theta.solver.Solver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;
import org.junit.Assert;
import org.junit.Test;

Expand All @@ -38,7 +38,7 @@ public class ExprStatesTest {

private final VarDecl<IntType> vx = Var("x", Int());
private final ExplPrec prec = ExplPrec.of(Collections.singleton(vx));
private final Solver solver = Z3SolverFactory.getInstance().createSolver();
private final Solver solver = Z3LegacySolverFactory.getInstance().createSolver();

@Test
public void test1() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import hu.bme.mit.theta.core.utils.indexings.VarIndexingFactory;
import hu.bme.mit.theta.solver.ItpSolver;
import hu.bme.mit.theta.solver.UCSolver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;
import org.junit.Before;
import org.junit.Test;

Expand Down Expand Up @@ -56,8 +56,8 @@ public final class ExprTraceCheckersTest {

@Before
public void before() {
final ItpSolver itpSolver = Z3SolverFactory.getInstance().createItpSolver();
final UCSolver ucSolver = Z3SolverFactory.getInstance().createUCSolver();
final ItpSolver itpSolver = Z3LegacySolverFactory.getInstance().createItpSolver();
final UCSolver ucSolver = Z3LegacySolverFactory.getInstance().createUCSolver();
traceCheckers = new ArrayList<>();
traceCheckers.add(ExprTraceSeqItpChecker.create(True(), True(), itpSolver));
traceCheckers.add(ExprTraceFwBinItpChecker.create(True(), True(), itpSolver));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,13 @@
import hu.bme.mit.theta.core.decl.VarDecl;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.solver.Solver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

public class PredInitFuncTest {

private final VarDecl<IntType> x = Var("x", Int());
private final VarDecl<IntType> y = Var("y", Int());
private final Solver solver = Z3SolverFactory.getInstance().createSolver();
private final Solver solver = Z3LegacySolverFactory.getInstance().createSolver();
private final PredAbstractor predAbstractor = PredAbstractors.booleanSplitAbstractor(solver);

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,13 +26,13 @@
import hu.bme.mit.theta.core.decl.Decls;
import hu.bme.mit.theta.core.decl.VarDecl;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

public class PredOrdTest {

private final VarDecl<IntType> VX = Decls.Var("x", Int());

private final PredOrd ord = PredOrd.create(Z3SolverFactory.getInstance().createSolver());
private final PredOrd ord = PredOrd.create(Z3LegacySolverFactory.getInstance().createSolver());

PredState sb = PredState.of(False());
PredState s1 = PredState.of(Gt(VX.getRef(), Int(1)));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,13 @@
import hu.bme.mit.theta.core.stmt.Stmts;
import hu.bme.mit.theta.core.type.inttype.IntType;
import hu.bme.mit.theta.solver.Solver;
import hu.bme.mit.theta.solver.z3.Z3SolverFactory;
import hu.bme.mit.theta.solver.z3.Z3LegacySolverFactory;

public class PredTransFuncTest {

private final VarDecl<IntType> x = Var("x", Int());
private final VarDecl<IntType> y = Var("y", Int());
private final Solver solver = Z3SolverFactory.getInstance().createSolver();
private final Solver solver = Z3LegacySolverFactory.getInstance().createSolver();
private final PredTransFunc transFunc = PredTransFunc.create(
PredAbstractors.booleanSplitAbstractor(solver));

Expand Down
2 changes: 1 addition & 1 deletion subprojects/solver/graph-solver/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -22,5 +22,5 @@ dependencies {
implementation(project(":theta-common"))
implementation(project(":theta-core"))
implementation(project(":theta-solver"))
testImplementation(project(":theta-solver-z3"))
testImplementation(project(":theta-solver-z3-legacy"))
}
Loading

0 comments on commit 43b63f9

Please sign in to comment.