This commit is contained in:
2026-03-12 02:40:33 -04:00
parent f5820eb211
commit 6c55a8400b
21 changed files with 1473 additions and 1 deletions

59
tests/abp/abp.pml Normal file
View File

@@ -0,0 +1,59 @@
mtype = { DATA0, DATA1, ACK0, ACK1 }
chan AtoB = [1] of { mtype }
chan BtoA = [1] of { mtype }
mtype ackA, ackB;
byte seqA = 0;
byte seqB = 0;
mtype packetA, packetB;
active proctype A()
{
do
::
if
:: seqA == 0 -> packetA = DATA0
:: else -> packetA = DATA1
fi;
AtoB!packetA;
do
:: BtoA?ackA ->
if
:: (seqA == 0 && ackA == ACK0) || (seqA == 1 && ackA == ACK1) ->
seqA = 1 - seqA;
break
:: else -> skip;
fi
::
AtoB!packetA
od
od
}
active proctype B()
{
do
:: AtoB?packetB ->
if
:: (seqB == 0 && packetB == DATA0) || (seqB == 1 && packetB == DATA1) ->
if
:: seqB == 0 -> ackB = ACK0
:: else -> ackB = ACK1
fi;
BtoA!ackB;
seqB = 1 - seqB;
:: else ->
if
:: seqB == 0 -> ackB = ACK1
:: else -> ackB = ACK0
fi;
BtoA!ackB;
fi
od
}
ltl liveness {
always ((packetA != packetB) implies eventually (packetA == packetB))
}