Proof of concept sequential reverser
This commit is contained in:
parent
63f27e6a93
commit
d207d42f77
3 changed files with 63 additions and 0 deletions
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
Examples
|
||||
**/pan.*
|
||||
**/pan
|
||||
*.tmp
|
36
ReversalModel/reversal.pml
Normal file
36
ReversalModel/reversal.pml
Normal file
|
@ -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
|
||||
}
|
23
ReversalModel/verify.sh
Executable file
23
ReversalModel/verify.sh
Executable file
|
@ -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
|
Reference in a new issue