Y este es el código que hice en promela basandome en la explicación de las diapositivas que dejaré debajo.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
int puerta; | |
int actual; | |
bool moviendo; | |
proctype Inicio(){ | |
atomic { | |
(actual != null) -> moviendo = true | |
} | |
} | |
proctype Baja(int puerta, bool moviendo){ | |
atomic { | |
(puerta < actual) -> puerta = puerta - 1, moviendo = true | |
} | |
} | |
proctype Detiene(int puerta, bool moviendo){ | |
atomic { | |
(puerta == actual) -> moviendo = false | |
} | |
} | |
proctype Sube(int puerta, bool moviendo){ | |
atomic { | |
(puerta > actual) -> puerta = puerta + 1, moviendo = true | |
} | |
} | |
proctype secuencia() { | |
do | |
:: (puerta != 0) -> | |
if | |
:: (puerta < actual) -> Baja(puerta, moviendo) | |
:: (puerta > actual) -> Sube(puerta, moviendo) | |
:: (puerta == actual) -> Detiene(puerta, moviendo) | |
fi | |
od | |
} | |
init { | |
do | |
:: (True) -> | |
run Inicio() | |
run secuencia() | |
od | |
} |
Fuente:
Diapositivas de promela.
El etiquetado de las transiciones faltó; de lo de promela hubiera estado con madre poder ejecutarlo. Van 7 + 7.
ResponderEliminar