From 53a5faee13e7ea78d9a1914a6d524452e0a9c36c Mon Sep 17 00:00:00 2001 From: Etienne Kneuss <etienne.kneuss@epfl.ch> Date: Tue, 7 Oct 2014 13:08:06 +0200 Subject: [PATCH] Simplify flattened pre/post --- src/main/scala/leon/purescala/TreeOps.scala | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/main/scala/leon/purescala/TreeOps.scala b/src/main/scala/leon/purescala/TreeOps.scala index 1b0222094..eece54ca8 100644 --- a/src/main/scala/leon/purescala/TreeOps.scala +++ b/src/main/scala/leon/purescala/TreeOps.scala @@ -3,6 +3,8 @@ package leon package purescala +import utils.Simplifiers + import leon.solvers._ import scala.collection.concurrent.TrieMap @@ -1805,7 +1807,7 @@ object TreeOps { * if (..) { foo(b, a) } else { .. } * } **/ - def flattenFunctions(fdOuter: FunDef): FunDef = { + def flattenFunctions(fdOuter: FunDef, ctx: LeonContext, p: Program): FunDef = { fdOuter.body match { case Some(LetDef(fdInner, FunctionInvocation(tfdInner2, args))) if fdInner == tfdInner2.fd => val argsDef = fdOuter.params.map(_.id) @@ -1851,9 +1853,11 @@ object TreeOps { val newFd = fdOuter.duplicate + val simp = Simplifiers.bestEffort(ctx, p) _ + newFd.body = fdInner.body.map(b => simplePreTransform(pre)(b)) - newFd.precondition = mergePre(fdOuter.precondition, fdInner.precondition) - newFd.postcondition = mergePost(fdOuter.postcondition, fdInner.postcondition) + newFd.precondition = mergePre(fdOuter.precondition, fdInner.precondition).map(simp) + newFd.postcondition = mergePost(fdOuter.postcondition, fdInner.postcondition).map{ case (id, ex) => id -> simp(ex) } newFd } else { -- GitLab