J'essaye de résoudre avec la tâche de tourner le fermier, le loup, la chèvre et le chou.SPIN: interpréter la trace d'erreur
Alors, j'ai trouvé la folowing description Promela:
#define fin (all_right_side == true)
#define wg (g_and_w == false)
#define gc (g_and_c == false)
ltl ltl_0 { <> fin && [] (wg && gc) }
bool all_right_side, g_and_w, g_and_c;
active proctype river()
{
bit f = 0,
w = 0,
g = 0,
c = 0;
all_right_side = false;
g_and_w = false;
g_and_c = false;
printf("MSC: f %c w %c g %c c %c \n", f, w, g, c);
do
:: (f==1) && (f == w) && (f ==g) && (f == c) ->
all_right_side = true;
break;
:: else ->
if
:: (f == w) ->
f = 1 - f;
w = 1 - w;
:: (f == c) ->
f = 1 - f;
w = 1 - c;
:: (f == g) ->
f = 1 - f;
w = 1 - g;
:: (true) ->
f = 1 - f;
fi;
printf("M f %c w %c g %c c %c \n", f, w, g, c);
if
:: (f != g && g == c) ->
g_and_c = true;
:: (f != g && g == w) ->
g_and_w = true;
::else ->
skip
fi
od;
printf ("MSC: OK!\n")
}
je y ajouter un LTL-formule: ltl ltl_0 {<> fin & & [] (wg & & gc)} pour vérifier , que le loup ne mange pas une chèvre, et que la chèvre ne mange pas le chou. Je veux avoir un exemple, comment l'agriculteur peut transporter tous ses besoins (w-g-c) sans perte.
Quand je lance la vérification, j'obtient le résultat suivant: vecteur d'état 20 octets, la profondeur atteint 59, les erreurs: 1 64 états, stockées 23 états, identifié 87 transitions (= stockés + adapté) 0 étapes atomiques conflits de hachage: 0 (résolu)
Cela signifie que le programme a généré un exemple pour moi. Mais je ne peux pas l'interpréter. Le contenu du fichier * .pml.trial est: enter image description here
S'il vous plaît, aidez-moi à interpréter.