From 4d4a3ff193ba6fbf527e99a83a9b5bc76710f3cd Mon Sep 17 00:00:00 2001
From: Regis Blanc <regwblanc@gmail.com>
Date: Mon, 11 Apr 2016 16:12:42 +0200
Subject: [PATCH] leon finds data racing counter-example

---
 src/main/scala/leon/xlang/IntroduceGlobalStatePhase.scala | 2 +-
 testcases/verification/xlang/DataRacing.scala             | 8 +++++---
 2 files changed, 6 insertions(+), 4 deletions(-)

diff --git a/src/main/scala/leon/xlang/IntroduceGlobalStatePhase.scala b/src/main/scala/leon/xlang/IntroduceGlobalStatePhase.scala
index bf91ff246..28e385a9a 100644
--- a/src/main/scala/leon/xlang/IntroduceGlobalStatePhase.scala
+++ b/src/main/scala/leon/xlang/IntroduceGlobalStatePhase.scala
@@ -54,7 +54,7 @@ object IntroduceGlobalStatePhase extends TransformationPhase {
   }
 
   private def extendFunDefWithState(fd: FunDef, stateCCD: CaseClassDef)(ctx: LeonContext): FunDef = {
-    val newParams = fd.params :+ ValDef(FreshIdentifier("state", stateCCD.typed))
+    val newParams = fd.params :+ ValDef(FreshIdentifier("globalState", stateCCD.typed))
     val newFunDef = new FunDef(fd.id.freshen, fd.tparams, newParams, fd.returnType)
     newFunDef.addFlags(fd.flags)
     newFunDef.setPos(fd)
diff --git a/testcases/verification/xlang/DataRacing.scala b/testcases/verification/xlang/DataRacing.scala
index 2d094a1d5..f57640061 100644
--- a/testcases/verification/xlang/DataRacing.scala
+++ b/testcases/verification/xlang/DataRacing.scala
@@ -34,12 +34,14 @@ object DataRacing {
     case (RunnableNil(), RunnableNil()) => ()
   }
 
-  def main(): Unit = {
+  //z3 finds counterexample in 0.5
+  //cvc4 needs 130 seconds
+  def main(): Int = {
     val state = SharedState(0)
     val t1 = RunnableCons((s: SharedState) => s.i = s.i + 1, RunnableNil())
     val t2 = RunnableCons((s: SharedState) => s.i = s.i * 2, RunnableNil())
     execute(t1, t2, state)
-    assert(state.i == 2)
-  }
+    state.i
+  } ensuring(_ == 2)
 
 }
-- 
GitLab