Francisco J. Mart´ın Mateos - Dpto. Ciencias de la ... · inicial de forma aleatoria de entre...
Transcript of Francisco J. Mart´ın Mateos - Dpto. Ciencias de la ... · inicial de forma aleatoria de entre...
NuSMV: Interaccion con el sistema
Francisco J. Martın Mateos
Dpto. Ciencias de la Computacion e Inteligencia ArtificialUniversidad de Sevilla
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Sistema que atiende peticiones
Consideremos el modelo representado por el siguiente grafo
peticionocupado
peticionocupado
peticion
peticionlibre
libre
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Sistema que atiende peticiones
Ejemplo simple ejemplo.smv
MODULE mainVAR
peticion : boolean;situacion : {libre, ocupado};
ASSIGNinit(situacion) := libre;next(situacion) := case
peticion : ocupado;TRUE : libre;
esac;
El modulo principal del modelo es el identificado como main
(Seccion MODULE)
La descripcion de los estados se realiza mediante un conjuntofinito de variables de dominio finito (Seccion VAR)
La descripcion de las transiciones se realiza indicando comocambian cada variable para pasar de un estado al siguiente(Seccion ASSIGN)
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
Simulacion...> NuSMV -int ejemplo.smv
*** This is NuSMV 2.4.3 zchaff...
NuSMV > goNuSMV >
La opcion -int pone en marcha el sistema NuSMV en modointeractivo cargando la especificacion almacenada en el ficheroejemplo.smv
El comando go carga la descripcion del modelo en el sistemaNuSMV
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
SimulacionNuSMV > pick_state -rNuSMV > print_current_state -vCurrent state is 1.1peticion = 1situacion = libreNuSMV > pick_state -iNuSMV > pick_state -i -v
*************** AVAILABLE STATES *************
================= State =================0) -------------------------
peticion = 1situacion = libre
================= State =================1) -------------------------
peticion = 0
Choose a state from the above (0-1): 0
Chosen state is: 0Current state is 2.1peticion = 1situacion = libre
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
El comando pick_state sirve para seleccionar el estado inicialdel modelo
La opcion -i permite seleccionar un estado inicial de entretodos los disponiblesLa opcion -r deja que el sistema NuSMV seleccione el estadoinicial de forma aleatoria de entre todos los disponiblesSin las opciones -i o -r la seleccion del estado inicial esrealizada de forma determinista por el sistema NuSMVLa opcion -v muestra informacion detallada sobre el estadoseleccionado
El comando print_current_state sirve para mostrar elestado actual (numero de traza y numero de estado), con laopcion -v se muestra tambien el valor de todas las variablesen dicho estado
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
SimulacionNuSMV > simulate -r 4 -v
******** Simulation Starting From State 2.1 ********Trace Description: Simulation TraceTrace Type: Simulation-> State: 2.1 <-
peticion = 1situacion = libre
-> Input: 2.2 <--> State: 2.2 <-
peticion = 1situacion = ocupado
-> Input: 2.3 <--> State: 2.3 <-
peticion = 0situacion = ocupado
-> Input: 2.4 <--> State: 2.4 <-
peticion = 1situacion = libre
-> Input: 2.5 <--> State: 2.5 <-
peticion = 0situacion = ocupado
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
El comando simulate sirve para evaluar el modelo
Se ha de indicar el numero de pasos de simulacion que sequieren darLa opcion -i permite seleccionar los estados de entre todos losdisponiblesLa opcion -r deja que el sistema NuSMV seleccione losestados de forma aleatoria de entre todos los disponiblesSin las opciones -i o -r la seleccion de los estados esrealizada de forma determinista por el sistema NuSMVLa opcion -p muestra la traza generada, indicando lasvariables que cambian de un estado al siguienteLa opcion -v muestra la traza generada, indicando todas lasvariables en todos los estados
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
SimulacionNuSMV > show_traces -tThere is 1 trace currently available.NuSMV > show_traces 1<!-- ################### Trace number: 1 ################### -->Trace Description: Simulation TraceTrace Type: Simulation-> State: 1.1 <-
peticion = 1situacion = libre
-> Input: 1.2 <--> State: 1.2 <-
situacion = ocupado-> Input: 1.3 <--> State: 1.3 <-
peticion = 0-> Input: 1.4 <--> State: 1.4 <-
peticion = 1situacion = libre
-> Input: 1.5 <--> State: 1.5 <-
peticion = 0situacion = ocupado
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
El comando show_traces sirve para mostrar informacion sobrelas trazas realizadas en el sistema
La opcion -t muestra el numero total de trazas realizadasLa opcion -v muestra la traza generada, indicando todas lasvariables en todos los estadosSin la opcion -v solo se muestran las variables que cambian deun estado al siguienteLa opcion -a muestra todas las trazas generadasCon un argumento numerico se muestra la trazacorrespondiente
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de simulacion
SimulacionNuSMV > resetNuSMV > show_traces -tThere are no traces currently available.NuSMV > pick_state -rA model must be read before. Use the "read_model" command.NuSMV > quit
El comando reset elimina todos los datos correspondientes almodelo cargado (descripcion y trazas)
El comando quit sale del modo interactivo
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un semaforo simple
Especificacion en NuSMV de un semaforo simple
Tiene tres luces, roja, ambar y verde que se van alternando dela siguiente forma: verde ⇒ ambar ⇒ roja ⇒ verde . . .
Las luces verde y roja pueden estar encendidas una cantidadindeterminada de tiempo mientras que la luz ambar solo estaencendida un instante de tiempo
El sistema de transicion asociado es el siguiente:
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un semaforo simple
Especificacion en NuSMV
MODULE mainVARluz : {rojo,verde,ambar};
ASSIGNinit(luz) := verde;next(luz) := case
luz = verde : {verde,ambar};luz = rojo : {rojo,verde};luz = ambar : rojo;
esac;
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de verificacion
Propiedades deseables en el modelo del semaforo
Despues de que el semaforo se ponga en verde, en algunmomento se pondra en rojo, es decir, el semaforo no se quedabloqueado en la luz verdeEn LTL: G ((luz = verde) → F (luz = rojo))
¬F G (luz = verde)Despues de que el semaforo se ponga en rojo, en algunmomento se pondra en verde, es decir, el semaforo no sequeda bloqueado en la luz rojaEn LTL: G ((luz = rojo) → F (luz = verde))
¬F G (luz = rojo)La luz ambar se puede llegar a encender en algun momento, dehecho, se debe encender una cantidad infinita de veces en eltiempoEn CTL: EF (luz = ambar)
AG AF (luz = ambar)
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de verificacion
Especificacion en NuSMV
MODULE mainVARluz : {rojo,verde,ambar};
ASSIGNinit(luz) := verde;next(luz) := case
luz = verde : {verde,ambar};luz = rojo : {rojo,verde};luz = ambar : rojo;
esac;LTLSPEC G ((luz = verde) -> F (luz = rojo));LTLSPEC ! F G (luz = verde);LTLSPEC G ((luz = rojo) -> F (luz = verde));LTLSPEC ! F G (luz = rojo);SPEC EF (luz = ambar);SPEC AG AF (luz = ambar);
Las formulas LTL se indican con el termino LTLSPEC
Las formulas CTL se indican con el termino SPEC
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de verificacion
Verificacion...> NuSMV semaforo.smv
*** This is NuSMV 2.4.3 zchaff...
-- specification EF luz = ambar is true-- specification AG (AF luz = ambar) is false-- as demonstrated by the following execution sequenceTrace Description: CTL CounterexampleTrace Type: Counterexample-- Loop starts here-> State: 1.1 <-
luz = verde-> Input: 1.2 <--> State: 1.2 <-
El sistema indica para cada formula si es verdadera o falsa
En caso de que una formula sea falsa, el sistema proporcionauna traza que no la cumple
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de verificacion
En algunos modelos es necesario anadir condiciones deimparcialidad: formulas que se deben cumplir una cantidadinfinita de veces a lo largo del tiempo
En LTL: G F φ
En CTL: AG AF φ
Este tipo de condiciones se pueden anadir como parte de laespecificacion del modelo en la seccion FAIRNESS
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
NuSMV como herramienta de verificacion
Especificacion en NuSMV
MODULE mainVARluz : {rojo,verde,ambar};
ASSIGNinit(luz) := verde;next(luz) := case
luz = verde : {verde,ambar};luz = rojo : {rojo,verde};luz = ambar : rojo;
esac;FAIRNESSluz = ambar;
LTLSPEC G ((luz = verde) -> F (luz = rojo));LTLSPEC ! F G (luz = verde);LTLSPEC G ((luz = rojo) -> F (luz = verde));LTLSPEC ! F G (luz = rojo);SPEC EF (luz = ambar);SPEC AG AF (luz = ambar);
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un contador de tres bits
Consideremos un contador binario de tres bits
El sistema de transicion asociado es el siguiente
000
001
011
100
101
111
010110
Aunque este modelo se puede especificar en NuSMV con unavariable con 8 valores distintos, lo haremos con 3 variables,una para cada bit
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un contador de tres bits
Especificacion en NuSMV
MODULE celda(acarreo)VARvalor : boolean;
ASSIGNinit(valor) := FALSE;next(valor) := case
valor: !acarreo;TRUE: acarreo;
esac;DEFINEsalida := valor & acarreo;
Cada bit del contador se especifica como una instancia delmodulo celda
El modulo celda tiene el argumento de entrada acarreo quehabra que especificar al realizar la instancia.
En el modulo se define la variable salida en la seccion DEFINE
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un contador de tres bits
Los argumentos de entrada son variables que intervienen en ladescripcion de los estados del sistema de transicion, cuyo valorinicial proviene de otro modulo
El modulo main no puede tener argumentos de entrada
Las variables definidas en una seccion DEFINE no intervienenen la descripcion del conjunto de estados del sistema detransicion
De esta forma, el sistema de transicion anterior tiene cuatroestados
valor valoracarreoacarreo
valor valoracarreoacarreo
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un contador de tres bits
Especificacion en NuSMV
MODULE mainVARbit0 : celda(TRUE);bit1 : celda(bit0.salida);bit2 : celda(bit1.salida);
SPECAG AF bit2.salida
El contador de tres bits se especifica con tres variables dondecada una de ellas es una instancia del modulo celda
El valor de entrada para bit0 es 1El valor de entrada para bit1 es el valor salida definido en elprimer bit bit0.salidaEl valor de entrada para bit2 es el valor salida definido en elsegundo bit bit1.salida
En este modelo se verifica que el tercer bit se activa unacantidad infinita de veces en el tiempoEn CTL: AG AF bit2.salida
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un anillo de inversores
Consideremos un anillo formado por tres inversoresconectados de la siguiente forma
pr1
pr3 pr2
Formalizaremos esta situacion en NuSMV como tres sistemasde transicion relacionados de la forma indicada en la figura,que se ejecutan de forma asıncrona
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un anillo de inversores
Especificacion en NuSMV
MODULE inversor(input)VARsalida : boolean;
ASSIGNinit(salida) := FALSE;next(salida) := !input;
Cada inversor se especifica como una instancia del moduloinversor
El modulo inversor tiene el argumento de entrada input quehabra que especificar al realizar la instancia.
La variable salida almacena el valor complementario delargumento de entrada input
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un anillo de inversores
Especificacion en NuSMV
MODULE mainVARpr1 : process inversor(pr3.salida);pr2 : process inversor(pr1.salida);pr3 : process inversor(pr2.salida);
El anillo de inversores se especifica con tres variables dondecada una de ellas es una instancia del modulo inversor
Cada inversor recibe como entrada el valor de la variablesalida de otro
Por defecto la asignacion de valores a las variables de losdistintos modulos de una especificicacion se hace en paralelo
Con un comportamiento asıncrono solo uno de los modulosesta en funcionamiento en cada momento
El comportamiento asıncrono se consigue incluyendo ladirectiva process delante del nombre del modulo
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Un anillo de inversores
Especificacion en NuSMV
MODULE inversor(input)VARsalida : boolean;
ASSIGNinit(salida) := FALSE;next(salida) := !input;
FAIRNESSrunning;
El comportamiento asıncrono puede hacer que un modulo nose ejecute nunca
Para forzar que todos los modulos se ejecuten de formaequilibrada hay que anadir condiciones de imparcialidad
Cada modulo que se ejecuta de forma asıncrona tiene lavariable running asociada, cuyo valor es 1 si el modulo se estaejecutando o 0 en caso contrario
La condicion de imparcialidad se establece sobre esta variable
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
Consideremos dos procesos que utilizan un recurso comun enexclusiva
Cada proceso puede estar en tres situaciones: normal (n),solicitando el uso del recurso (p) o utilizando en recurso (c),de acuerdo con el siguiente esquema de transicion:
c
n
p
El recurso no puede ser utilizado simultaneamente por ambosprocesos (exclusion mutua)
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
Propiedades deseables en el modelo de exclusion mutua
Los procesos no pueden ocupar el recurso simultaneamenteSi un proceso solicita el recurso entonces en algun momento lodebe de poder utilizarLos procesos siempre tienen que tener la posibilidad de solicitarel recursoEl uso del recurso por los procesos no se realiza en secuenciaestricta
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
Primera especificacion en NuSMV
MODULE mainVARproceso1 : process proceso;proceso2 : process proceso;
MODULE procesoVARestado: {n, p, c};
ASSIGNinit(estado) := n;next(estado) :=
case(estado = n) : {n,p};(estado = p) : {p,c};(estado = c) : {c,n};
esac;FAIRNESSrunning
FAIRNESS!(estado = c)
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
Para conseguir que los procesos se ejecuten de formaequilibrada anadimos la condicion de imparcialidad running
La condicion de imparcialidad !(estado = c) asegura que unproceso no acapara el uso del recurso compartido, liberandolocada cierto tiempo
El uso del recurso compartido en exclusion mutua no estaasegurado
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
El sistema de transicion de los dos procesos es el siguiente:
n1n2
p1n2
n1p2
p1p2
p1c2
c1c2
n1c2
c1n2
c1p2
Identificamos con un numero (1 o 2) cada proceso y con unaletra (n, p, c) su estado
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
Formalizacion de las propiedades deseables en el modelo deexclusion mutua
Los procesos no pueden ocupar el recurso simultaneamenteEn LTL: G (¬(c1 ∧ c2))Si un proceso solicita el recurso entonces en algun momento lodebe de poder utilizarEn LTL: G (t1 → F c1)
G (t2 → Fc2)Los procesos siempre tienen que tener la posibilidad de solicitarel recursoEn CTL: AG (n1 → EX p1)
AG (n2 → EX p2)Los procesos no usan el recurso en secuencia estrictaEn CTL: EF (c1 ∧ E[c1 U (¬c1 ∧ E[¬c2 U c1])])
EF (c2 ∧ E[c2 U (¬c2 ∧ E[¬c1 U c2])])
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
En el modelo anterior hay que evitar que los dos procesosocupen el recurso de forma simultanea
No se puede dar el estado con etiquetas [c1 c2]
Para ello cada proceso debe tener informacion de la situacionen la que se encuentra el otro proceso, para saber si el recursoya esta ocupado
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
El sistema de transicion con exclusion mutua es el siguiente:
n1n2
p1n2
n1p2
p1p2
p1c2
n1c2
c1n2
c1p2
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
Segunda especificacion en NuSMV
MODULE mainVARproceso1 : process proceso(proceso2.estado);proceso2 : process proceso(proceso1.estado);
MODULE proceso(otro)VARestado: {n, p, c};
ASSIGNinit(estado) := n;next(estado) :=
case(estado = n) : {p,n};(estado = p) & (otro = n) : c;(estado = p) & (otro = p) : c;(estado = c) : {c,n};TRUE : estado;
esac;FAIRNESSrunning
FAIRNESS!(estado = c)
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
En el modelo anterior, uno de los procesos puede estarindefinidamente solicitando el recurso mientras es el otro elque lo utiliza
Para evitar esto, se puede establecer un turno de utilizaciondel recurso
Cada proceso utiliza el recurso por turnos alternativos
El turno de utilizacion del recurso se establece usando unavariable auxiliar que sirve para ’duplicar’ el estado etiquetadocon [p1 p2]
Tercera especificacion en NuSMV
MODULE mainVARproceso1 : process proceso(proceso2.estado,turno,FALSE);proceso2 : process proceso(proceso1.estado,turno,TRUE);turno : boolean;
ASSIGNinit(turno) := FALSE;
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
Tercera especificacion en NuSMV
MODULE proceso(otro,turno,miturno)VAR
estado: {n, p, c};ASSIGN
init(estado) := n;next(estado) :=
case(estado = n) : {p,n};(estado = p) & (otro = n) : c;(estado = p) & (otro = p) & (turno = miturno) : c;(estado = c) : {c,n};TRUE : estado;
esac;next(turno) :=
case(turno = miturno) & estado = c : !turno;TRUE : turno;
esac;FAIRNESS
runningFAIRNESS
!(estado = c)
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Exclusion mutua
El arbumento miturno sirve para identificar un proceso frenteal otro
La variable turno solo sirve para establecer un turno deacceso al recurso cuando ambos procesos lo solicitansimultaneamente
Los procesos no usan el recurso en secuencia estricta
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema
Bibliografıa
Huth, M. and Ryan, M. Logic in Computer Science:
Modelling and Reasoning about Systems. (CambridgeUniversity Press, 2004)
Cavada, R., Cimatti, A., Keighren, G., Olivetti, E., Pistore, M.and Roveri, M. NuSMV 2.5 Tutorial.
Cavada, R., Cimatti, A., Jochim, C.A., Keighren, G., Olivetti,E., Pistore, M., Roveri, M. and Tchaltsev, A. NuSMV 2.5
User Manual.
Razonamiento Automatico – 2013/2014 NuSMV: Interaccion con el sistema