From 0ff0f3be652cf7aa70f05920782d7cc11916be45 Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <ekneuss@gmail.com>
Date: Fri, 4 Jan 2013 17:17:48 +0100
Subject: [PATCH] Define WeightedBranches as default cost model

Improve error output by specifying which one is the default.
---
 src/main/scala/leon/synthesis/CostModel.scala          | 2 ++
 src/main/scala/leon/synthesis/SynthesisPhase.scala     | 9 ++++++---
 src/main/scala/leon/synthesis/SynthesizerOptions.scala | 2 +-
 3 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/src/main/scala/leon/synthesis/CostModel.scala b/src/main/scala/leon/synthesis/CostModel.scala
index 04892e750..19a975ed2 100644
--- a/src/main/scala/leon/synthesis/CostModel.scala
+++ b/src/main/scala/leon/synthesis/CostModel.scala
@@ -25,6 +25,8 @@ abstract class CostModel(val name: String) {
 }
 
 object CostModel {
+  def default: CostModel = WeightedBranchesCostModel
+
   def all: Set[CostModel] = Set(
     NaiveCostModel,
     WeightedBranchesCostModel
diff --git a/src/main/scala/leon/synthesis/SynthesisPhase.scala b/src/main/scala/leon/synthesis/SynthesisPhase.scala
index 1cb409d6e..0d2701dbe 100644
--- a/src/main/scala/leon/synthesis/SynthesisPhase.scala
+++ b/src/main/scala/leon/synthesis/SynthesisPhase.scala
@@ -48,9 +48,12 @@ object SynthesisPhase extends LeonPhase[Program, Program] {
             options = options.copy(costModel = model)
           case None =>
 
-            val errorMsg = "Unknown cost model: " + cm + "\n" +
-                           "Defined cost models: \n" +
-                           (CostModel.all.map(_.name).mkString("  - ", "\n  - ", ""))
+            var errorMsg = "Unknown cost model: " + cm + "\n" +
+                           "Defined cost models: \n"
+
+            for (cm <- CostModel.all.toSeq.sortBy(_.name)) {
+              errorMsg += " - " + cm.name + (if(cm == CostModel.default) " (default)" else "") + "\n"
+            }
 
             ctx.reporter.fatalError(errorMsg)
         }
diff --git a/src/main/scala/leon/synthesis/SynthesizerOptions.scala b/src/main/scala/leon/synthesis/SynthesizerOptions.scala
index a460f03dc..177d21c49 100644
--- a/src/main/scala/leon/synthesis/SynthesizerOptions.scala
+++ b/src/main/scala/leon/synthesis/SynthesizerOptions.scala
@@ -7,5 +7,5 @@ case class SynthesizerOptions(
   searchWorkers: Int               = 1,
   firstOnly: Boolean               = false,
   timeoutMs: Option[Long]          = None,
-  costModel: CostModel             = NaiveCostModel
+  costModel: CostModel             = CostModel.default
 )
-- 
GitLab