view a13/smv/test9.smv @ 139:3be1afb87f82

add utm
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Mar 2020 17:34:54 +0900
parents 0e8a0e50ed26
children
line wrap: on
line source

MODULE main
 VAR
   semaphore : boolean;
   proc1     : process user(semaphore);
   proc2     : process user(semaphore);
 ASSIGN
   init(semaphore) := FALSE;
 LTLSPEC G ! (proc1.state = critical & proc2.state = critical)
 LTLSPEC G (proc1.state = entering -> F proc1.state = critical)
MODULE user(semaphore)
VAR
state : {idle, entering, critical, exiting};
 ASSIGN
   init(state) := idle;
   next(state) :=
    case
       state = idle : {idle, entering}; state = entering & !semaphore : critical;
       state = critical : {critical, exiting};
       state = exiting : idle;
       TRUE : state;
     esac;
   next(semaphore) :=
     case
       state = entering : TRUE;
       state = exiting  : FALSE;
       TRUE             : semaphore;
     esac;
 FAIRNESS
   running