00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00045 #ifndef __NUSMV_CORE_FSM_FSM_BUILDER_H__
00046 #define __NUSMV_CORE_FSM_FSM_BUILDER_H__
00047
00048 #include "nusmv/core/fsm/sexp/SexpFsm.h"
00049 #include "nusmv/core/fsm/sexp/BoolSexpFsm.h"
00050 #include "nusmv/core/fsm/bdd/BddFsm.h"
00051
00052 #include "nusmv/core/compile/symb_table/SymbTable.h"
00053 #include "nusmv/core/dd/dd.h"
00054 #include "nusmv/core/trans/bdd/ClusterList.h"
00055 #include "nusmv/core/utils/utils.h"
00056
00063 typedef struct FsmBuilder_TAG* FsmBuilder_ptr;
00064
00070 #define FSM_BUILDER(x) \
00071 ((FsmBuilder_ptr) x)
00072
00078 #define FSM_BUILDER_CHECK_INSTANCE(x) \
00079 ( nusmv_assert(FSM_BUILDER(x) != FSM_BUILDER(NULL)) )
00080
00081
00082
00083
00084
00085
00094 FsmBuilder_ptr
00095 FsmBuilder_create(NuSMVEnv_ptr env);
00096
00103 void FsmBuilder_destroy(FsmBuilder_ptr self);
00104
00111 SexpFsm_ptr
00112 FsmBuilder_create_scalar_sexp_fsm(const FsmBuilder_ptr self,
00113 FlatHierarchy_ptr flat_hierarchy,
00114 const Set_t vars_list);
00115
00129 BoolSexpFsm_ptr
00130 FsmBuilder_create_boolean_sexp_fsm(const FsmBuilder_ptr self,
00131 FlatHierarchy_ptr flat_hierarchy,
00132 const Set_t vars,
00133 BddEnc_ptr bdd_enc,
00134 SymbLayer_ptr det_layer);
00135
00145 BddFsm_ptr
00146 FsmBuilder_create_bdd_fsm(const FsmBuilder_ptr self,
00147 BddEnc_ptr enc,
00148 const SexpFsm_ptr sexp_fsm,
00149 const TransType trans_type);
00150
00160 BddFsm_ptr
00161 FsmBuilder_create_bdd_fsm_of_vars(const FsmBuilder_ptr self,
00162 const SexpFsm_ptr sexp_fsm,
00163 const TransType trans_type,
00164 BddEnc_ptr enc,
00165 BddVarSet_ptr state_vars_cube,
00166 BddVarSet_ptr input_vars_cube,
00167 BddVarSet_ptr next_state_vars_cube);
00168
00180 ClusterList_ptr
00181 FsmBuilder_clusterize_expr(FsmBuilder_ptr self,
00182 BddEnc_ptr enc, Expr_ptr expr);
00183
00184 #endif