From 9f7dc493a95d7273109a3dfb4c7148c8723c03b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?R=C3=A9gis=20Blanc?= <regwblanc@gmail.com>
Date: Tue, 20 Nov 2012 23:14:02 +0000
Subject: [PATCH] spot a bug in simplifyArithmetic, add a test

---
 src/main/scala/leon/purescala/TreeOps.scala           | 1 -
 src/test/scala/leon/test/purescala/TreeOpsTests.scala | 3 +++
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/main/scala/leon/purescala/TreeOps.scala b/src/main/scala/leon/purescala/TreeOps.scala
index 08f4c0f06..f2158675f 100644
--- a/src/main/scala/leon/purescala/TreeOps.scala
+++ b/src/main/scala/leon/purescala/TreeOps.scala
@@ -1393,7 +1393,6 @@ object TreeOps {
       case Times(IntLiteral(i), UMinus(e)) => Times(IntLiteral(-i), e)
       case Times(UMinus(e), IntLiteral(i)) => Times(e, IntLiteral(-i))
       case Times(IntLiteral(i1), Division(e, IntLiteral(i2))) if i2 != 0 && i1 % i2 == 0 => Times(IntLiteral(i1/i2), e)
-      case Times(IntLiteral(i1), Plus(Division(e1, IntLiteral(i2)), e2)) if i2 != 0 && i1 % i2 == 0 => Times(IntLiteral(i1/i2), Plus(e1, e2))
 
       case Division(IntLiteral(i1), IntLiteral(i2)) if i2 != 0 => IntLiteral(i1 / i2)
       case Division(e, IntLiteral(1)) => e
diff --git a/src/test/scala/leon/test/purescala/TreeOpsTests.scala b/src/test/scala/leon/test/purescala/TreeOpsTests.scala
index 87ae844ec..763550e44 100644
--- a/src/test/scala/leon/test/purescala/TreeOpsTests.scala
+++ b/src/test/scala/leon/test/purescala/TreeOpsTests.scala
@@ -61,6 +61,9 @@ class TreeOpsTests extends FunSuite {
     checkSameExpr(e4, simplify(e4), Set(xId))
     val e5 = Plus(x, Minus(x, IntLiteral(2)))
     checkSameExpr(e5, simplify(e5), Set(xId))
+
+    val e6 = Times(IntLiteral(9), Plus(Division(x, IntLiteral(3)), Division(x, IntLiteral(6))))
+    checkSameExpr(e6, simplify(e6), Set(xId))
   }
 
 
-- 
GitLab