From 3184042f41fb1baf57dc95d4d6d35e92df745e5a Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Mon, 8 Aug 2016 14:02:52 +0200 Subject: [PATCH] Concrete cvc4 and z3 solvers --- .../solvers/smtlib/SMTLIBCVC4Solver.scala | 44 +++---------------- .../inox/solvers/smtlib/SMTLIBZ3Solver.scala | 18 ++------ 2 files changed, 10 insertions(+), 52 deletions(-) diff --git a/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala b/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala index bf1050680..16311ecbf 100644 --- a/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala +++ b/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala @@ -1,52 +1,22 @@ /* Copyright 2009-2016 EPFL, Lausanne */ -package leon +package inox package solvers package smtlib -import OptionParsers._ +class SMTLIBCVC4Solver(val program: Program, val options: SolverOptions) + extends SMTLIBSolver + with SMTLIBCVC4Target { -import solvers.theories._ -import purescala.Definitions.Program - -class SMTLIBCVC4Solver(context: SolverContext, program: Program) - extends SMTLIBSolver(context, program, new BagEncoder(context.context, program) >> new ArrayEncoder(context.context, program)) - with SMTLIBCVC4Target - with cvc4.CVC4Solver { - - def targetName = "cvc4" - - def userDefinedOps(ctx: LeonContext) = { - ctx.findOptionOrDefault(SMTLIBCVC4Component.optCVC4Options) - } - - def interpreterOps(ctx: LeonContext) = { + def interpreterOps(ctx: InoxContext) = { Seq( "-q", "--produce-models", "--incremental", -// "--no-incremental", -// "--tear-down-incremental", -// "--dt-rewrite-error-sel", // Removing since it causes CVC4 to segfault on some inputs + // "--dt-rewrite-error-sel", // Removing since it causes CVC4 to segfault on some inputs "--rewrite-divk", "--print-success", "--lang", "smt2.5" - ) ++ userDefinedOps(ctx).toSeq + ) } } - -object SMTLIBCVC4Component extends LeonComponent { - val name = "CVC4 solver" - - val description = "Solver invoked with --solvers=smt-cvc4" - - val optCVC4Options = new LeonOptionDef[Set[String]] { - val name = "solver:cvc4" - val description = "Pass extra arguments to CVC4" - val default = Set[String]() - val parser = setParser(stringParser) - val usageRhs = "<cvc4-opt>" - } - - override val definedOptions : Set[LeonOptionDef[Any]] = Set(optCVC4Options) -} diff --git a/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala b/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala index e49b29721..223097df4 100644 --- a/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala +++ b/src/main/scala/inox/solvers/smtlib/SMTLIBZ3Solver.scala @@ -1,21 +1,9 @@ /* Copyright 2009-2016 EPFL, Lausanne */ -package leon +package inox package solvers package smtlib -import purescala.Definitions.Program -import purescala.Common.Identifier -import purescala.Expressions.Expr - -import _root_.smtlib.parser.Terms.{Identifier => _, _} -import _root_.smtlib.parser.Commands.{FunDef => SMTFunDef, _} -import _root_.smtlib.parser.CommandsResponses.GetModelResponseSuccess -import _root_.smtlib.theories.Core.{Equals => _, _} - -import theories._ - -class SMTLIBZ3Solver(sctx: SolverContext, program: Program) - extends SMTLIBSolver(sctx, program, new StringEncoder(sctx.context, program) >> new ArrayEncoder(sctx.context, program)) +class SMTLIBZ3Solver(val program: Program, val options: SolverOptions) + extends SMTLIBSolver with SMTLIBZ3Target - with z3.Z3Solver -- GitLab