From 2103d041afc8e63767e7d198a520073927053cda Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Mon, 1 Jun 2015 17:48:07 +0200
Subject: [PATCH] Termination checks library funs without @library

---
 .../scala/leon/termination/TerminationPhase.scala    | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/main/scala/leon/termination/TerminationPhase.scala b/src/main/scala/leon/termination/TerminationPhase.scala
index 4ad4aac3f..12af96737 100644
--- a/src/main/scala/leon/termination/TerminationPhase.scala
+++ b/src/main/scala/leon/termination/TerminationPhase.scala
@@ -16,7 +16,17 @@ object TerminationPhase extends LeonPhase[Program,TerminationReport] {
 //    val tc = new SimpleTerminationChecker(ctx, program)
     val tc = new ComplexTerminationChecker(ctx, program)
 
-    val results = funDefsFromMain(program).toList.sortWith(_.getPos < _.getPos).map { funDef =>
+    def excludeByDefault(fd: FunDef): Boolean = fd.annotations contains "library"
+
+    val fdFilter = {
+      import OptionsHelpers._
+
+      filterInclusive(ctx.findOption(SharedOptions.optFunctions).map(fdMatcher), Some(excludeByDefault _))
+    }
+
+    val toVerify = program.definedFunctions.filter(fdFilter).sortWith((fd1, fd2) => fd1.getPos < fd2.getPos)
+
+    val results = toVerify.map { funDef =>
       funDef -> tc.terminates(funDef)
     }
     val endTime = System.currentTimeMillis
-- 
GitLab