From 064fa2a048134dd767b266f6c87e3fc657ff2bb3 Mon Sep 17 00:00:00 2001
From: Nicolas Voirol <voirol.nicolas@gmail.com>
Date: Sat, 23 Apr 2016 02:33:20 +0200
Subject: [PATCH] Small fix to termination checker for NoGuarantee cases

---
 .../leon/termination/ProcessingPipeline.scala    | 16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/main/scala/leon/termination/ProcessingPipeline.scala b/src/main/scala/leon/termination/ProcessingPipeline.scala
index 30cc87f55..4c979cadc 100644
--- a/src/main/scala/leon/termination/ProcessingPipeline.scala
+++ b/src/main/scala/leon/termination/ProcessingPipeline.scala
@@ -86,15 +86,15 @@ abstract class ProcessingPipeline(context: LeonContext, initProgram: Program) ex
   private val unsolved     : MutableSet[Problem] = MutableSet.empty
   private val dependencies : MutableSet[Problem] = MutableSet.empty
 
-  def isProblem(fd: FunDef): Boolean =
+  def isProblem(fd: FunDef): Boolean = {
+    lazy val callees = program.callGraph.transitiveCallees(fd)
+    lazy val problemDefs = problems.flatMap(_._1.funDefs).toSet
     unsolved.exists(_.contains(fd)) ||
-    dependencies.exists(_.contains(fd)) || {
-      val problemDefs = problems.flatMap(_._1.funDefs).toSet
-      problemDefs(fd) || {
-        val callees = program.callGraph.transitiveCallees(fd)
-        (problemDefs intersect callees).nonEmpty
-      }
-    }
+    dependencies.exists(_.contains(fd)) || 
+    unsolved.exists(_.funDefs exists callees) ||
+    dependencies.exists(_.funDefs exists callees) ||
+    problemDefs(fd) || (problemDefs intersect callees).nonEmpty
+  }
 
   private def printQueue() {
     val sb = new StringBuilder()
-- 
GitLab