From b5f4f1285128eaae135a7326dd6f3aebba0ca5cb Mon Sep 17 00:00:00 2001
From: Regis Blanc <regwblanc@gmail.com>
Date: Tue, 19 May 2015 16:09:05 +0200
Subject: [PATCH] simpler encoding of division

---
 .../leon/solvers/smtlib/SMTLIBSolver.scala    | 25 +++----------------
 1 file changed, 4 insertions(+), 21 deletions(-)

diff --git a/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala b/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala
index 560141602..6866cc1b5 100644
--- a/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala
+++ b/src/main/scala/leon/solvers/smtlib/SMTLIBSolver.scala
@@ -639,27 +639,10 @@ abstract class SMTLIBSolver(val context: LeonContext,
         val ar = toSMT(a)
         val br = toSMT(b)
 
-        val case1 = (
-          Core.And(Ints.LessThan(ar, Ints.NumeralLit(0)), Ints.LessThan(br, Ints.NumeralLit(0))),
-          Ints.Div(Ints.Neg(ar), Ints.Neg(br))
-        )
-        val case2 = (
-          Core.And(Ints.LessThan(ar, Ints.NumeralLit(0)), Ints.GreaterEquals(br, Ints.NumeralLit(0))),
-          Ints.Neg(Ints.Div(Ints.Neg(ar), br))
-        )
-        val case3 = (
-          Core.And(Ints.GreaterEquals(ar, Ints.NumeralLit(0)), Ints.LessThan(br, Ints.NumeralLit(0))),
-          Ints.Div(ar, br)
-        )
-        val case4 = (
-          Core.And(Ints.GreaterEquals(ar, Ints.NumeralLit(0)), Ints.GreaterEquals(br, Ints.NumeralLit(0))),
-          Ints.Div(ar, br)
-        )
-        
-        Core.ITE(case1._1, case1._2,
-          Core.ITE(case2._1, case2._2,
-            Core.ITE(case3._1, case3._2,
-              Core.ITE(case4._1, case4._2, Ints.NumeralLit(0)))))
+        Core.ITE(
+          Ints.GreaterEquals(ar, Ints.NumeralLit(0)),
+          Ints.Div(ar, br),
+          Ints.Neg(Ints.Div(Ints.Neg(ar), br)))
       }
       case Modulo(a,b) => {
         val q = toSMT(Division(a, b))
-- 
GitLab