--evalground makes FairZ3 evaluate ground applications
Without the flag, functions applied to ground arguments are treated the same way as every other one: by unrolling their body. This is suboptimal, as we can instead pass to Z3 the equality f(a0, a1) = v, instead of letting it "discover" it by itself. Note that this hasn't been shown to bring any major performance improvement; ground applications hardly show up in verification, for instance. But think about it, you'll agree using evaluation there is "The right thing to do.™". Note that testing --evalground currently highlights some bugs.
Showing
- src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala 42 additions, 0 deletionssrc/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
- src/main/scala/leon/solvers/z3/FairZ3Solver.scala 12 additions, 8 deletionssrc/main/scala/leon/solvers/z3/FairZ3Solver.scala
- src/main/scala/leon/solvers/z3/FunctionTemplate.scala 28 additions, 6 deletionssrc/main/scala/leon/solvers/z3/FunctionTemplate.scala
- src/test/scala/leon/test/verification/PureScalaVerificationRegression.scala 1 addition, 1 deletion...n/test/verification/PureScalaVerificationRegression.scala
Please register or sign in to comment