Skip to content
Snippets Groups Projects
Commit 2b09cd4c authored by Etienne Kneuss's avatar Etienne Kneuss
Browse files

Export userland flag to use unsat cores to drive the fairz3 unrolling

parent 7687b797
No related branches found
No related tags found
No related merge requests found
...@@ -29,26 +29,28 @@ class FairZ3Solver(context : LeonContext) ...@@ -29,26 +29,28 @@ class FairZ3Solver(context : LeonContext)
val description = "Fair Z3 Solver" val description = "Fair Z3 Solver"
override val definedOptions : Set[LeonOptionDef] = Set( override val definedOptions : Set[LeonOptionDef] = Set(
LeonFlagOptionDef("evalground", "--evalground", "Use evaluator on functions applied to ground arguments"), LeonFlagOptionDef("evalground", "--evalground", "Use evaluator on functions applied to ground arguments"),
LeonFlagOptionDef("checkmodels", "--checkmodels", "Double-check counter-examples with evaluator"), LeonFlagOptionDef("checkmodels", "--checkmodels", "Double-check counter-examples with evaluator"),
LeonFlagOptionDef("feelinglucky", "--feelinglucky", "Use evaluator to find counter-examples early"), LeonFlagOptionDef("feelinglucky", "--feelinglucky", "Use evaluator to find counter-examples early"),
LeonFlagOptionDef("codegen", "--codegen", "Use compiled evaluator instead of interpreter") LeonFlagOptionDef("codegen", "--codegen", "Use compiled evaluator instead of interpreter"),
LeonFlagOptionDef("fairz3:unrollcores", "--fairz3:unrollcores", "Use unsat-cores to drive unrolling while remaining fair")
) )
// What wouldn't we do to avoid defining vars? // What wouldn't we do to avoid defining vars?
val (feelingLucky, checkModels, useCodeGen, evalGroundApps, unrollUnsatCores, pruneUnsatCores) = locally { val (feelingLucky, checkModels, useCodeGen, evalGroundApps, unrollUnsatCores, pruneUnsatCores) = locally {
var lucky = true var lucky = false
var check = false var check = false
var codegen = false var codegen = false
var evalground = false var evalground = false
var unrollUnsatCores = true var unrollUnsatCores = false
var pruneUnsatCores = true var pruneUnsatCores = true
for(opt <- context.options) opt match { for(opt <- context.options) opt match {
case LeonFlagOption("checkmodels") => check = true case LeonFlagOption("checkmodels") => check = true
case LeonFlagOption("feelinglucky") => lucky = true case LeonFlagOption("feelinglucky") => lucky = true
case LeonFlagOption("codegen") => codegen = true case LeonFlagOption("codegen") => codegen = true
case LeonFlagOption("evalground") => evalground = true case LeonFlagOption("evalground") => evalground = true
case LeonFlagOption("fairz3:unrollcores") => unrollUnsatCores = true
case _ => case _ =>
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment