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

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


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

   -- This part declares state variables for the given NuSMV module --
   VAR
     state : { Sm_s1 , Sm_s2 };
     event : { ev_e1 , ev_e2 , ev_e3 , ev_null };
     a : integer;
     b : integer;
     c : real;
     d : real;
     e : real;
     h : boolean;
     f : integer;
     g : integer;

   -- This part defines macros that summarize the transitions and guards (if any) of the given NuSMV module --
   DEFINE
     sm_stable :=  !( event = ev_e2 | event = ev_e1 | event = ev_e3 );
     t1 := event = ev_e1 & state = Sm_s1 & g1;
     t2 := event = ev_e2 & state = Sm_s1;
     t3 := event = ev_e3 & state = Sm_s1;
     g1 := h = TRUE;

   -- This part defines logic for the assignment of values to state variable "state" of this NuSMV module --
   ASSIGN
     init( state ) := Sm_s1;
     next( state ) := case
       t2 | t1 | t3 : Sm_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
       sm_stable : { ev_e1 , ev_e2 , ev_e3 };
       TRUE : ev_null;
     esac;

   -- This part defines logic for the assignment of values to state variable "a" of this NuSMV module --
   ASSIGN
     init( a ) := 10;

   -- This part defines logic for the assignment of values to state variable "b" of this NuSMV module --
   ASSIGN
     init( b ) := 20;

   -- This part defines logic for the assignment of values to state variable "c" of this NuSMV module --
   ASSIGN
     init( c ) := 0.566;

   -- This part defines logic for the assignment of values to state variable "d" of this NuSMV module --
   ASSIGN
     init( d ) := 0.566;

   -- This part defines logic for the assignment of values to state variable "e" of this NuSMV module --
   ASSIGN
     init( e ) := 0.566;

   -- This part defines logic for the assignment of values to state variable "h" of this NuSMV module --
   ASSIGN
     init( h ) := FALSE;

   -- This part defines logic for the assignment of values to state variable "f" of this NuSMV module --
   ASSIGN
     init( f ) := 0;

   -- This part defines logic for the assignment of values to state variable "g" of this NuSMV module --
   ASSIGN
     init( g ) := 0;

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     exampleSm : ExampleSm;

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

   -- This part declares state variables for the given NuSMV module --
   VAR
     exampleSm_Machine : ExampleSm_Machine;

   -- The following properties are specified to certify that non-symbolic state(s) of this model is (or are) reachable. 
   CTLSPEC   EF( exampleSm_Machine.exampleSm.state = Sm_s1 )
   CTLSPEC   EF( exampleSm_Machine.exampleSm.state = Sm_s2 )