From 08af0783004e1ad4706e23ea3dbaa74f6fec6561 Mon Sep 17 00:00:00 2001
From: "Ogilvie, D.H. (Duncan)" <d.h.ogilvie2@students.uu.nl>
Date: Sat, 14 Oct 2017 15:52:44 +0200
Subject: [PATCH] small improvements

---
 src/LogicIR/Backend/Z3.hs                         |  2 +-
 src/LogicIR/Frontend/Java.hs                      |  4 ++--
 src/SimpleFormulaChecker.hs                       |  3 ++-
 src/javawlp_edsl/src/nl/uu/javawlp_edsl/Main.java | 14 ++++++++++++++
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/src/LogicIR/Backend/Z3.hs b/src/LogicIR/Backend/Z3.hs
index f40a117..93b5c9e 100644
--- a/src/LogicIR/Backend/Z3.hs
+++ b/src/LogicIR/Backend/Z3.hs
@@ -50,7 +50,7 @@ lExprToZ3AstAlgebra = (flConst, flVar, flNot, flBinop, flComp, flQuant, flArray,
                       a <- a'
                       mkSelect v a
     flNil = do intSort <- mkBvSort 32
-               zero <- mkBitvector 32 0
+               zero <- mkBitvector 32 0 -- (isNull, data, length) TODO
                mkConstArray intSort zero
     fnConst n = mkBitvector 32 (fromIntegral n)
     fnUnop o a' = do a <- a'
diff --git a/src/LogicIR/Frontend/Java.hs b/src/LogicIR/Frontend/Java.hs
index fcc1314..d2cbd8e 100644
--- a/src/LogicIR/Frontend/Java.hs
+++ b/src/LogicIR/Frontend/Java.hs
@@ -47,8 +47,8 @@ javaExpToLExprAlgebra = (fLit, fClassLit, fThis, fThisClass, fInstanceCreation,
                                     _
                                         -> error $ "Unimplemented fMethodInv: " ++ show inv
     fArrayAccess arrayIndex env decls = case arrayIndex of -- TODO: type checking
-                                             ArrayIndex (ExpName name) [ExpName index]
-                                                -> LArray (nameToVar name env decls) (LVar (nameToVar index env decls))
+                                             ArrayIndex (ExpName name) [expr]
+                                                -> LArray (nameToVar name env decls) (javaExpToLExpr expr env decls) -- (LVar (nameToVar index env decls))
                                              _
                                                 -> error $ "Multidimensional arrays are not supported: " ++ show (arrayIndex)
     fExpName name env decls = case name of -- TODO: type checking
diff --git a/src/SimpleFormulaChecker.hs b/src/SimpleFormulaChecker.hs
index 161b978..22d5505 100644
--- a/src/SimpleFormulaChecker.hs
+++ b/src/SimpleFormulaChecker.hs
@@ -171,4 +171,5 @@ compareSpec method1@(_, name1) method2@(_, name2) = do
 edslSrc = "javawlp_edsl/src/nl/uu/javawlp_edsl/Main.java"
 testEq = compareSpec (edslSrc, "swap_spec1") (edslSrc, "swap_spec1")
 testNeq = compareSpec (edslSrc, "swap_spec1") (edslSrc, "swap_spec2")
-blub = compareSpec (edslSrc, "getMax_spec1") (edslSrc, "getMax_spec2")
\ No newline at end of file
+blub = compareSpec (edslSrc, "getMax_spec1") (edslSrc, "getMax_spec2")
+blub2 = compareSpec (edslSrc, "test1") (edslSrc, "test2")
\ No newline at end of file
diff --git a/src/javawlp_edsl/src/nl/uu/javawlp_edsl/Main.java b/src/javawlp_edsl/src/nl/uu/javawlp_edsl/Main.java
index e9f2b96..9a61276 100644
--- a/src/javawlp_edsl/src/nl/uu/javawlp_edsl/Main.java
+++ b/src/javawlp_edsl/src/nl/uu/javawlp_edsl/Main.java
@@ -107,7 +107,21 @@ public class Main {
         post(a[i] == oldaj);
     }
 
+    public static void test1(int[] a)
+    {
+        pre(exists(a, i -> a[i+1] > a[i]));
+        post(true);
+    }
+
+    public static void test2(int[] a)
+    {
+        pre(false);
+        //pre(exists(a, i -> a[i+1] >= a[i]));
+        post(true);
+    }
+
     public static void swap_spec2(int[] a, int i, int j) {
+        pre(a != null && a[0] == 0);
         pre(a != null && a.length > 0 && i >= 0 && j > 0);
         // introducing vars to remember old values
         int oldai = a[i], oldaj = a[j];
-- 
GitLab