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

-- PLEASE DO NOT EDIT THIS CODE --
-- This code was generated using the UMPLE 1.27.0.3728.d139ed893 modeling language! --


-- This defines a NuSMV module for ExampleState --
MODULE ExampleState ( _stateS1AA , _stateS1BB )

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { State_s1 , State_s2 };
     event : { ev_e5 , ev_e7 , ev_e11 , ev_e9 , ev_e10 , ev_e1 , ev_e2 , ev_e3 , ev_null };

   -- This part defines macros that summarize the transitions and guards (if any) of the given NuSMV module --
   DEFINE
     state_stable :=  !( event = ev_e5 | event = ev_e11 | event = ev_e10 | event = ev_e2 | event = ev_e7 | event = ev_e9 | event = ev_e1 | event = ev_e3 );
     t1 := event = ev_e2 & _stateS1AA.state = StateS1AA_As11;
     t2 := event = ev_e1 & _stateS1AA.state = StateS1AA_As12;
     t3 := event = ev_e5 & _stateS1BB.state = StateS1BB_Bs21;
     t4 := event = ev_e7 & _stateS1BB.state = StateS1BB_Bs22;
     t5 := event = ev_e11 & _stateS1BB.state = StateS1BB_Bs22;
     t6 := event = ev_e3 & _stateS1BB.state = StateS1BB_s24s31;
     t7 := event = ev_e1 & _stateS1BB.state = StateS1BB_s24s31;
     t8 := event = ev_e9 & _stateS1BB.state = StateS1BB_s24s31;
     t9 := event = ev_e10 & _stateS1BB.state = StateS1BB_s24s31;
     t10 := event = ev_e3 & _stateS1BB.state = StateS1BB_s24s32;
     t11 := event = ev_e1 & _stateS1BB.state = StateS1BB_s24s32;

   -- This part defines logic for the assignment of values to state variable "state" of this NuSMV module --
   ASSIGN
     init( state ) := State_s1;
     next( state ) := case
       t1 | t6 | t3 | t8 | t4 | t10 | t5 | t9 : State_s1;
       t7 | t2 | t11 : State_s2;
       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
       state_stable : { ev_e5 , ev_e7 , ev_e11 , ev_e9 , ev_e10 , ev_e1 , ev_e2 , ev_e3 };
       TRUE : ev_null;
     esac;

-- This defines a NuSMV module for ExampleStateS1AA --
MODULE ExampleStateS1AA ( _state )

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { StateS1AA_As11 , StateS1AA_As12 , null };

   -- This part defines logic for the assignment of values to state variable "state" of this NuSMV module --
   ASSIGN
     init( state ) := null;
     next( state ) := case
       _state.t7 | _state.t2 | _state.t11 : null;
       _state.t1 : StateS1AA_As12;
       _state.state = State_s1 & state = null : StateS1AA_As11;
       TRUE : state;
     esac;

-- This defines a NuSMV module for ExampleStateS1BB --
MODULE ExampleStateS1BB ( _state )

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { StateS1BB_Bs21 , StateS1BB_Bs22 , StateS1BB_s24s31 , StateS1BB_s24s32 , null };

   -- This part defines logic for the assignment of values to state variable "state" of this NuSMV module --
   ASSIGN
     init( state ) := null;
     next( state ) := case
       _state.t7 | _state.t2 | _state.t11 : null;
       _state.t6 | _state.t4 | _state.t10 : StateS1BB_Bs21;
       _state.t3 : StateS1BB_Bs22;
       _state.t5 | _state.t8 : StateS1BB_s24s31;
       _state.t9 : StateS1BB_s24s32;
       _state.state = State_s1 & state = null : StateS1BB_Bs21;
       TRUE : state;
     esac;

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     exampleState : ExampleState( exampleStateS1AA , exampleStateS1BB );
     exampleStateS1AA : ExampleStateS1AA( exampleState );
     exampleStateS1BB : ExampleStateS1BB( exampleState );

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     exampleState_Machine : ExampleState_Machine;

   -- The following properties are specified to certify that non-symbolic state(s) of this model is (or are) reachable. 
   CTLSPEC   EF( exampleState_Machine.exampleState.state = State_s1 )
   CTLSPEC   EF( exampleState_Machine.exampleState.state = State_s2 )
   CTLSPEC   EF( exampleState_Machine.exampleStateS1AA.state = StateS1AA_As11 )
   CTLSPEC   EF( exampleState_Machine.exampleStateS1AA.state = StateS1AA_As12 )
   CTLSPEC   EF( exampleState_Machine.exampleStateS1BB.state = StateS1BB_Bs21 )
   CTLSPEC   EF( exampleState_Machine.exampleStateS1BB.state = StateS1BB_Bs22 )
   CTLSPEC   EF( exampleState_Machine.exampleStateS1BB.state = StateS1BB_s24s31 )
   CTLSPEC   EF( exampleState_Machine.exampleStateS1BB.state = StateS1BB_s24s32 )