From f430407992beae25baa7f321f2f17a4bb9c66d3d Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <colder@php.net>
Date: Sat, 20 Jul 2013 01:41:03 +0200
Subject: [PATCH] Add rule in --manual to close a branch

---
 .../scala/leon/synthesis/SynthesisPhase.scala    |  4 ++++
 .../scala/leon/synthesis/rules/AsChoose.scala    | 16 ++++++++++++++++
 2 files changed, 20 insertions(+)
 create mode 100644 src/main/scala/leon/synthesis/rules/AsChoose.scala

diff --git a/src/main/scala/leon/synthesis/SynthesisPhase.scala b/src/main/scala/leon/synthesis/SynthesisPhase.scala
index 9346b5530..fd210b24b 100644
--- a/src/main/scala/leon/synthesis/SynthesisPhase.scala
+++ b/src/main/scala/leon/synthesis/SynthesisPhase.scala
@@ -85,6 +85,10 @@ object SynthesisPhase extends LeonPhase[Program, Program] {
       case _ =>
     }
 
+    if (options.manualSearch) {
+      options = options.copy(rules = rules.AsChoose +: options.rules)
+    }
+
     options
   }
 
diff --git a/src/main/scala/leon/synthesis/rules/AsChoose.scala b/src/main/scala/leon/synthesis/rules/AsChoose.scala
new file mode 100644
index 000000000..e7b1986bd
--- /dev/null
+++ b/src/main/scala/leon/synthesis/rules/AsChoose.scala
@@ -0,0 +1,16 @@
+/* Copyright 2009-2013 EPFL, Lausanne */
+
+package leon
+package synthesis
+package rules
+
+case object AsChoose extends Rule("As Choose") {
+  def instantiateOn(sctx: SynthesisContext, p: Problem): Traversable[RuleInstantiation] = {
+      Some(new RuleInstantiation(p, this, SolutionBuilder.none, this.name) {
+        def apply(sctx: SynthesisContext) = {
+          RuleSuccess(Solution.choose(p))
+        }
+      })
+  }
+}
+
-- 
GitLab