00001
00004 #ifndef DIVINE_MCRL_EXPLICIT_SYSTEM_HH
00005 #define DIVINE_MCRL_EXPLICIT_SYSTEM_HH
00006
00007 #ifdef HAVE_MCRL2
00008
00009 #ifndef DOXYGEN_PROCESSING
00010 #include "system/explicit_system.hh"
00011 #include "system/mcrl2_system.hh"
00012 #include "system/dve/dve_explicit_system.hh"
00013 #include "system/state.hh"
00014 #include "storage/explicit_storage.hh"
00015 #include "common/types.hh"
00016 #include "common/deb.hh"
00017 #ifdef count
00018 #undef count
00019 #endif
00020 #ifdef max
00021 #undef max
00022 #endif
00023 #ifdef min
00024 #undef min
00025 #endif
00026 #ifdef PACKED
00027 #undef PACKED
00028 #endif
00029
00030 namespace divine {
00031 using std::cerr; using std::endl;
00032 #endif //DOXYGEN_PROCESSING
00033
00034 class succ_container_t;
00035
00036 class mcrl2_explicit_system_t : public explicit_system_t, public mcrl2_system_t
00037 {
00038 public:
00039
00041
00042 mcrl2_explicit_system_t(error_vector_t & evect);
00044 virtual ~mcrl2_explicit_system_t();
00045
00050
00051 virtual bool is_erroneous(state_t state) { return false; }
00053 virtual bool is_accepting(state_t state, size_int_t acc_group, size_int_t pair_member)
00054 { return false; }
00056 virtual bool violates_assertion(const state_t state) const { return false; }
00058 virtual size_int_t violated_assertion_count(const state_t state) const
00059 { return 0; }
00061 virtual std::string violated_assertion_string(const state_t state,
00062 const size_int_t index) const
00063 { return std::string(""); }
00064
00066 virtual size_int_t get_preallocation_count() const { return 10000; }
00068 virtual void print_state(state_t state, std::ostream & outs = std::cout);
00070 virtual state_t get_initial_state();
00072 virtual int get_succs(state_t state, succ_container_t & succs)
00073 { return get_succs(state, &succs, NULL); }
00075 virtual int get_ith_succ(state_t state, const int i, state_t & succ) { UNIMPLEMENTED(int); }
00078
00079 virtual int get_succs(state_t state, succ_container_t * succs,
00080 enabled_trans_container_t * etc);
00081
00083 virtual int get_succs(state_t state, succ_container_t & succs,
00084 enabled_trans_container_t & etc)
00085 { return get_succs(state, &succs, &etc); }
00087 virtual int get_enabled_trans(const state_t state,
00088 enabled_trans_container_t & enb_trans)
00089 { return get_succs(state, NULL, &enb_trans); }
00091 virtual int get_enabled_trans_count(const state_t state, size_int_t & count) { UNIMPLEMENTED(int); }
00093 virtual int get_enabled_ith_trans(const state_t state,
00094 const size_int_t i,
00095 enabled_trans_t & enb_trans)
00096 { UNIMPLEMENTED(int); }
00098 virtual bool get_enabled_trans_succ
00099 (const state_t state, const enabled_trans_t & enabled,
00100 state_t & new_state);
00102 virtual bool get_enabled_trans_succs
00103 (const state_t state, succ_container_t & succs,
00104 const enabled_trans_container_t & enabled_trans) { UNIMPLEMENTED(bool); }
00106 virtual enabled_trans_t * new_enabled_trans() const;
00113
00114 virtual bool eval_expr(const expression_t * const expr,
00115 const state_t state,
00116 data_t & data) const { UNIMPLEMENTED(bool); }
00118 };
00119
00120 #ifndef DOXYGEN_PROCESSING
00121 }
00122 #include "common/undeb.hh"
00123
00124 #endif //DOXYGEN_PROCESSING
00125
00126 #endif
00127 #endif