From d7579cef1e544f03360b7e2d67bd38d61dd48801 Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Mon, 8 Aug 2016 14:16:18 +0200 Subject: [PATCH] Add user options to CVC4 --- src/main/scala/inox/solvers/Solver.scala | 1 - .../inox/solvers/smtlib/SMTLIBCVC4Solver.scala | 16 +++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/src/main/scala/inox/solvers/Solver.scala b/src/main/scala/inox/solvers/Solver.scala index 5b71c1854..c85ed8688 100644 --- a/src/main/scala/inox/solvers/Solver.scala +++ b/src/main/scala/inox/solvers/Solver.scala @@ -4,7 +4,6 @@ package inox package solvers import utils._ -import evaluators._ case class SolverOptions(options: Seq[InoxOption[Any]]) extends InoxOptions[SolverOptions] { def build(opts: Seq[InoxOption[Any]]): SolverOptions = SolverOptions(opts) diff --git a/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala b/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala index 16311ecbf..8bea481be 100644 --- a/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala +++ b/src/main/scala/inox/solvers/smtlib/SMTLIBCVC4Solver.scala @@ -4,10 +4,16 @@ package inox package solvers package smtlib +import inox.OptionParsers._ + class SMTLIBCVC4Solver(val program: Program, val options: SolverOptions) extends SMTLIBSolver with SMTLIBCVC4Target { + protected val userDefinedOps = { + options.findOptionOrDefault(optCVC4Options) + } + def interpreterOps(ctx: InoxContext) = { Seq( "-q", @@ -17,6 +23,14 @@ class SMTLIBCVC4Solver(val program: Program, val options: SolverOptions) "--rewrite-divk", "--print-success", "--lang", "smt2.5" - ) + ) ++ userDefinedOps.toSeq } } + +object optCVC4Options extends InoxOptionDef[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>" +} -- GitLab