diff --git a/cp-demo/PaperExamples.scala b/cp-demo/PaperExamples.scala
index e829052a8eda39870c6a1c0b97c9da613c27f967..bde93b9f410d5817223576fc2b6fc702559a0c08 100644
--- a/cp-demo/PaperExamples.scala
+++ b/cp-demo/PaperExamples.scala
@@ -50,4 +50,57 @@ object PaperExamples extends App {
 
   p("inverse of(4,5,3,4): ", inverse(4,5,3,4))
   p("inverse of(4,5,3,0): ", inverse(4,5,3,0))
+
+  def satSolve(problem : Seq[Seq[Int]]) = {
+    problem.map(l => l.map(i => {
+      val id = scala.math.abs(i)
+      val isPos = i > 0
+      ((m : Map[Int,Boolean]) => m(id) == isPos).c
+    }).reduceLeft(_ || _)).reduceLeft(_ && _).find
+  }
+
+  println("satSolve(something sat)", satSolve(List(List(-1, 2, 3), List(1, -2, 4), List(-3, -4))))
+  println("satSolve(something unsat)", satSolve(List(List(1, 2), List(1, -2), List(-1, 2), List(-1, -2))))
+
+
+  @spec object SendMoreMoney {
+    sealed abstract class Letter
+    case class D() extends Letter
+    case class E() extends Letter
+    case class M() extends Letter
+    case class N() extends Letter
+    case class O() extends Letter
+    case class R() extends Letter
+    case class S() extends Letter
+    case class Y() extends Letter
+    val letters : List[Letter] = List(D(), E(), M(), N(), O(), R(), S(), Y())
+
+    def run : Unit = {
+      val m = ((m : Map[Letter,Int]) => true).lazySolve
+      for(l <- letters) {
+        assuming(m(l) >= 0 && m(l) <= 9) {
+          println("OK for " + l)
+        }
+
+      }
+      // simpler, crashes too:
+      //assuming(m(S()) >= 0 && m(S()) <= 9) {
+      //  println("OK for " + S())
+      //}
+
+      //println("A solution : " + m.value)
+
+      // functional-style, crashed because of if
+//      for(m <- ((m: Map[Letter,Int]) => 
+//        1000 * m(S()) + 100 * m(E()) + 10 * m(N()) + m(D()) +
+//        1000 * m(M()) + 100 * m(O()) + 10 * m(R()) + m(E()) ==
+//        10000 * m(M()) + 1000 * m(O()) + 100 * m(N()) + 10 * m(E()) + m(Y())).c.lazyFindAll if(
+//          m(S()) >= 0 && m(S()) <= 9)
+//        ){
+//        println(m)
+//      }
+    }
+  }
+
+  SendMoreMoney.run
 }