00001 00013 #ifndef _SMP_MODEL_CHECKER_REACHABILITY_H_ 00014 #define _SMP_MODEL_CHECKER_REACHABILITY_H_ 00015 00016 #include <smp/components/model_checkers/base.h> 00017 #include <smp/common/region.h> 00018 00019 00020 namespace smp { 00021 00023 00029 class model_checker_reachability_vertex_data { 00030 00031 public: 00032 00034 00040 bool reaches_goal; 00041 }; 00042 00043 00044 00046 00049 class model_checker_reachability_edge_data { 00050 00051 }; 00052 00053 00054 00056 00067 template < class typeparams, int NUM_DIMENSIONS > 00068 class model_checker_reachability : public model_checker_base<typeparams> { 00069 00070 00071 typedef typename typeparams::state state_t; 00072 typedef typename typeparams::input input_t; 00073 typedef typename typeparams::vertex_data vertex_data_t; 00074 typedef typename typeparams::edge_data edge_data_t; 00075 00076 typedef vertex<typeparams> vertex_t; 00077 typedef edge<typeparams> edge_t; 00078 typedef trajectory<typeparams> trajectory_t; 00079 00080 typedef region<NUM_DIMENSIONS> region_t; 00081 00082 region_t region_goal; 00083 00084 public: 00085 00086 model_checker_reachability (); 00087 ~model_checker_reachability (); 00088 00089 00101 model_checker_reachability (const region_t ®ion_goal); 00102 00103 00114 int set_goal_region (const region_t ®ion_goal); 00115 00116 00117 int mc_update_insert_vertex (vertex_t *vertex_in); 00118 00119 00120 int mc_update_insert_edge (edge_t *edge_in); 00121 00122 00123 int mc_update_delete_vertex (vertex_t *vertex_in); 00124 00125 00126 int mc_update_delete_edge (edge_t *edge_in); 00127 00128 00129 int get_solution (trajectory_t &trajectory_out); 00130 00131 }; 00132 00133 00134 } 00135 00136 #endif