diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..bd1bad6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +Examples +**/pan.* +**/pan +*.tmp \ No newline at end of file diff --git a/ReversalModel/reversal.pml b/ReversalModel/reversal.pml new file mode 100644 index 0000000..efb3aa2 --- /dev/null +++ b/ReversalModel/reversal.pml @@ -0,0 +1,36 @@ +#define N 10 +#define LENGTH 3 +#define R 2 + + +init { + int to_reverse[LENGTH]; + + // array initialization + { + int i; + for (i in to_reverse) { + int value; + select(value: 0 .. R); + to_reverse[i] = value; + } + } + + int reversed[LENGTH]; + + // sequential reverser + { + int from = 0; + int to = LENGTH ; + + int k; + for (k: from..to) { + reversed[LENGTH - k - 1] = to_reverse[k]; + } + } +} + +ltl test { + eventually (false) implies true +// eventually (a > b) implies len(q) == 0 +} \ No newline at end of file diff --git a/ReversalModel/verify.sh b/ReversalModel/verify.sh new file mode 100755 index 0000000..811683a --- /dev/null +++ b/ReversalModel/verify.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [ $# -ne 1 ]; then + echo "LTL property name required" > /dev/stderr + exit 1 +else + userid="$1" +fi + +set -e + +spin -a reversal.pml +gcc-13 -Wno-format-overflow -o pan pan.c +./pan -a "$1" + +exitcode="$?" + +if [ "$exitcode" -ne 0 ]; then + echo "Terminated with status: $exitcode" > /dev/stderr + exit "$exitcode" +else + echo "Terminated successfully" +fi \ No newline at end of file