Skip to content
Snippets Groups Projects
Commit 65e120d6 authored by Ali Sinan Köksal's avatar Ali Sinan Köksal
Browse files

modifications to examples and evaluation scripts

parent 2f1fb9eb
No related branches found
No related tags found
No related merge requests found
...@@ -44,7 +44,8 @@ object SortedList { ...@@ -44,7 +44,8 @@ object SortedList {
def main(args : Array[String]) : Unit = { def main(args : Array[String]) : Unit = {
val len = if (args.isEmpty) 3 else args(0).toInt val len = if (args.isEmpty) 3 else args(0).toInt
f2(len) f1(len)
// f2(len)
// f3(len) // f3(len)
// f4() // f4()
} }
......
...@@ -73,13 +73,26 @@ object ListOperations { ...@@ -73,13 +73,26 @@ object ListOperations {
def append(l1 : List, l2 : List) : List = (l1 match { def append(l1 : List, l2 : List) : List = (l1 match {
case Nil() => l2 case Nil() => l2
case Cons(x,xs) => Cons(x, append(xs, l2)) case Cons(x,xs) => Cons(x, append(xs, l2))
}) ensuring(content(_) == content(l1) ++ content(l2)) }) // ensuring(content(_) == content(l1) ++ content(l2))
def map(f : Int => Int, l : List) : List = l match { def map(f : Int => Int, l : List) : List = l match {
case Nil() => Nil() case Nil() => Nil()
case Cons(x, xs) => Cons(f(x), map(f, xs)) case Cons(x, xs) => Cons(f(x), map(f, xs))
} }
def definedForAll(m: Map[Int,Int], l: List): Boolean = l match {
case Nil() => true
case Cons(x, xs) => m.isDefinedAt(x) && definedForAll(m, xs)
}
def map2(m : Map[Int,Int], l : List) : List = {
//require(definedForAll(m, l))
l match {
case Nil() => Nil()
case Cons(x, xs) => Cons(m(x), map2(m, xs))
}
}
@induct @induct
def appendMapCommute(l1 : List, l2 : List, f : Int => Int) : Boolean = { def appendMapCommute(l1 : List, l2 : List, f : Int => Int) : Boolean = {
map(f, append(l1, l2)) == append(map(f, l1), map(f, l2)) map(f, append(l1, l2)) == append(map(f, l1), map(f, l2))
...@@ -88,7 +101,7 @@ object ListOperations { ...@@ -88,7 +101,7 @@ object ListOperations {
@induct @induct
def nilAppend(l : List) : Boolean = (append(l, Nil()) == l) holds def nilAppend(l : List) : Boolean = (append(l, Nil()) == l) holds
@induct // @induct
def appendAssoc(xs : List, ys : List, zs : List) : Boolean = def appendAssoc(xs : List, ys : List, zs : List) : Boolean =
(append(append(xs, ys), zs) == append(xs, append(ys, zs))) holds (append(append(xs, ys), zs) == append(xs, append(ys, zs))) holds
......
...@@ -4,57 +4,36 @@ cd ../../.. ...@@ -4,57 +4,36 @@ cd ../../..
ts=`date +%F-%R` ts=`date +%F-%R`
demoFolder="cp-demo" demoFolder="cp-demo"
cc="./cp-compile"
rc="./cp-run"
#classes=( "RedBlackTree" "SortedList" ) #classes=( "RedBlackTree" "SortedList" )
if [ "$#" -lt "3" ] if [ "$#" -lt "4" ]
then then
echo "Please provide a class name and bounds for problem size" echo "Please provide a file name, main class name and bounds for problem size"
exit 1 exit 1
fi fi
class=${1} filename=${1}
base=${2} mainclass=${2}
limit=${3} base=${3}
limit=${4}
evalFolder="eval/cp/data/${ts}-${class}" evalFolder="eval/cp/data/${ts}-${mainclass}"
mkdir -p ${evalFolder} mkdir -p ${evalFolder}
evalFileBase=${evalFolder}/${class}-${ts}-CAV evalFileBase=${evalFolder}/${mainclass}-${ts}
./cp CAV ${demoFolder}/${class}.scala || (echo "Could not compile..." && exit 1) ${cc} axioms scalaEval ${filename} || (echo "Could not compile..." && exit 1)
for (( i=${base}; i<=${limit}; i++ )) for (( i=${base}; i<=${limit}; i++ ))
do do
currentFile=${evalFileBase}-${i} currentFile=${evalFileBase}-${i}
./cp-runner ${class} $i | tee -a ${currentFile} ${rc} ${mainclass} $i | tee -a ${currentFile}
cd eval/cp/scripts cd eval/cp/scripts
./generate-graph ../../../${currentFile} ./generate-graph ../../../${currentFile}
cd ../../.. cd ../../..
done done
evalFileBase=${evalFolder}/${class}-${ts}-CAV-axioms mv eval/cp/graphs/${mainclass}-${ts}-* ${evalFolder}
./cp CAV axioms ${demoFolder}/${class}.scala || (echo "Could not compile..." && exit 1)
for (( i=${base}; i<=${limit}; i++ ))
do
currentFile=${evalFileBase}-${i}
./cp-runner ${class} $i | tee -a ${currentFile}
cd eval/cp/scripts
./generate-graph ../../../${currentFile}
cd ../../..
done
evalFileBase=${evalFolder}/${class}-${ts}-CAV-axioms-scalaEval
./cp CAV axioms scalaEval ${demoFolder}/${class}.scala || (echo "Could not compile..." && exit 1)
for (( i=${base}; i<=${limit}; i++ ))
do
currentFile=${evalFileBase}-${i}
./cp-runner ${class} $i | tee -a ${currentFile}
cd eval/cp/scripts
./generate-graph ../../../${currentFile}
cd ../../..
done
mv eval/cp/graphs/${class}-${ts}-* ${evalFolder}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment