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

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


-- This defines a NuSMV module for AState --
MODULE AState ( _stateState1State11State11 , _stateState1State12State12 , _stateState1State12State12State122 , _stateState1State12State12State122State1221 )

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { State_state1 , State_state2 };
     event : { ev_e5 , ev_e1 , ev_e2 , ev_e3 , ev_e4 , ev_null };

   -- This part defines macros that summarize the transitions and guards (if any) of the given NuSMV module --
   DEFINE
     state_stable :=  !( event = ev_e1 | event = ev_e3 | event = ev_e5 | event = ev_e2 | event = ev_e4 );
     t1 := event = ev_e5 & _stateState1State11State11.state != null;
     t2 := event = ev_e1 & _stateState1State11State11.state = StateState1State11State11_state111;
     t3 := event = ev_e4 & _stateState1State11State11.state = StateState1State11State11_state112;
     t4 := event = ev_e2 & _stateState1State11State11.state = StateState1State11State11_state112;
     t5 := event = ev_e5 & _stateState1State12State12.state != null;
     t6 := event = ev_e2 & _stateState1State12State12.state = StateState1State12State12_state121;
     t7 := event = ev_e4 & _stateState1State12State12.state = StateState1State12State12_state121;
     t8 := event = ev_e3 & _stateState1State12State12.state = StateState1State12State12_state122;
     t9 := event = ev_e4 & _stateState1State12State12State122.state = StateState1State12State12State122_state1221;
     t10 := event = ev_e2 & _stateState1State12State12State122State1221.state = StateState1State12State12State122State1221_state12211;

   -- This part defines logic for the assignment of values to state variable "state" of this NuSMV module --
   ASSIGN
     init( state ) := State_state1;
     next( state ) := case
       t3 | t10 | t9 | t7 | t2 | t8 | t6 | t4 : State_state1;
       t1 | t5 : State_state2;
       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_e1 , ev_e2 , ev_e3 , ev_e4 };
       TRUE : ev_null;
     esac;

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { StateState1State11State11_state111 , StateState1State11State11_state112 , 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.t5 | _state.t1 | _state.t4 : null;
       _state.t3 : StateState1State11State11_state111;
       _state.t2 | _state.t10 : StateState1State11State11_state112;
       _state.state = State_state1 & state = null : StateState1State11State11_state111;
       TRUE : state;
     esac;

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { StateState1State12State12_state121 , StateState1State12State12_state122 , 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.t5 | _state.t1 | _state.t10 : null;
       _state.t8 | _state.t9 : StateState1State12State12_state121;
       _state.t7 | _state.t6 | _state.t4 : StateState1State12State12_state122;
       _state.state = State_state1 & state = null : StateState1State12State12_state121;
       TRUE : state;
     esac;

-- This defines a NuSMV module for AStateState1State12State12State122 --
MODULE AStateState1State12State12State122 ( _state , _stateState1State12State12 )

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { StateState1State12State12State122_state1221 , 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.t8 | _state.t10 | _state.t6 | _state.t9 | _state.t5 : null;
       _state.t7 | _state.t4 : StateState1State12State12State122_state1221;
       _stateState1State12State12.state = StateState1State12State12_state122 & state = null : StateState1State12State12State122_state1221;
       TRUE : state;
     esac;

-- This defines a NuSMV module for AStateState1State12State12State122State1221 --
MODULE AStateState1State12State12State122State1221 ( _state , _stateState1State12State12State122 )

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { StateState1State12State12State122State1221_state12211 , 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.t10 | _state.t9 | _state.t8 : null;
       _state.t4 : StateState1State12State12State122State1221_state12211;
       _stateState1State12State12State122.state = StateState1State12State12State122_state1221 & state = null : StateState1State12State12State122State1221_state12211;
       TRUE : state;
     esac;

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     aState : AState( aStateState1State11State11 , aStateState1State12State12 , aStateState1State12State12State122 , aStateState1State12State12State122State1221 );
     aStateState1State11State11 : AStateState1State11State11( aState );
     aStateState1State12State12 : AStateState1State12State12( aState );
     aStateState1State12State12State122 : AStateState1State12State12State122( aState , aStateState1State12State12 );
     aStateState1State12State12State122State1221 : AStateState1State12State12State122State1221( aState , aStateState1State12State12State122 );

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     aState_Machine : AState_Machine;

   -- The following properties are specified to certify that this model is free of non-determinism. 
   INVARSPEC   ( aState_Machine.aState.t4 & aState_Machine.aState.t6 -> next( aState_Machine.aStateState1State12State12State122State1221.state = StateState1State12State12State122State1221_state12211 & aState_Machine.aStateState1State12State12.state = StateState1State12State12_state122 ) )
   INVARSPEC   ( aState_Machine.aState.t4 & aState_Machine.aState.t10 -> next( aState_Machine.aStateState1State12State12State122State1221.state = StateState1State12State12State122State1221_state12211 & aState_Machine.aStateState1State11State11.state = StateState1State11State11_state112 ) )

   -- The following properties are specified to certify that non-symbolic state(s) of this model is (or are) reachable. 
   CTLSPEC   EF( aState_Machine.aState.state = State_state1 )
   CTLSPEC   EF( aState_Machine.aState.state = State_state2 )
   CTLSPEC   EF( aState_Machine.aStateState1State11State11.state = StateState1State11State11_state111 )
   CTLSPEC   EF( aState_Machine.aStateState1State11State11.state = StateState1State11State11_state112 )
   CTLSPEC   EF( aState_Machine.aStateState1State12State12.state = StateState1State12State12_state121 )
   CTLSPEC   EF( aState_Machine.aStateState1State12State12.state = StateState1State12State12_state122 )
   CTLSPEC   EF( aState_Machine.aStateState1State12State12State122.state = StateState1State12State12State122_state1221 )
   CTLSPEC   EF( aState_Machine.aStateState1State12State12State122State1221.state = StateState1State12State12State122State1221_state12211 )
