-- This file is generated from AbstractMachine.ump --

-- PLEASE DO NOT EDIT THIS CODE --
-- This code was generated using the UMPLE @UMPLE_VERSION@ modeling language! --


-- This defines a NuSMV module for MeS2 --
MODULE MeS2

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { S2_s2a , S2_s2b , S2_s1 };
     event : { ev_e1 , ev_e3 , ev_null };

   -- This part defines macros that summarize the transitions and guards (if any) of the given NuSMV module --
   DEFINE
     s2_stable :=  !( event = ev_e1 | event = ev_e3 );
     t1 := event = ev_e1 & state = S2_s2a;
     t2 := event = ev_e3 & state = S2_s2a;
     t3 := event = ev_e3 & state = S2_s2b;

   -- This part defines logic for the assignment of values to state variable "state" of this NuSMV module --
   ASSIGN
     init( state ) := S2_s2a;
     next( state ) := case
       t3 : S2_s2a;
       t2 : S2_s2b;
       t1 : S2_s1;
       TRUE : state;
     esac;

   -- This part defines logic for the assignment of values to state variable "event" of this NuSMV module --
   ASSIGN
     init( event ) := ev_null;
     next( event ) := case
       s2_stable : { ev_e1 , ev_e3 };
       TRUE : ev_null;
     esac;

-- This defines a NuSMV module for MeS2_Machine --
MODULE MeS2_Machine

   -- This part declares state variables for the given NuSMV module --
   VAR
     meS2 : MeS2;

-- This defines a NuSMV module for main --
MODULE main

   -- This part declares state variables for the given NuSMV module --
   VAR
     meS2_Machine : MeS2_Machine;

   -- The following properties are specified to certify that non-symbolic state(s) of this model is (or are) reachable. 
   CTLSPEC   EF( meS2_Machine.meS2.state = S2_s2a )
   CTLSPEC   EF( meS2_Machine.meS2.state = S2_s2b )
   CTLSPEC   EF( meS2_Machine.meS2.state = S2_s1 )