src/smp/components/model_checkers/reachability.h

Go to the documentation of this file.
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 &region_goal);
00102 
00103 
00114         int set_goal_region (const region_t &region_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