+
+ region_diff = 0;
+ }
+
+ MC_free_snapshot(sn);
+ xbt_dynar_reset(prop_ato);
+ xbt_free(prop_ato);
+ MC_UNSET_RAW_MEM;
+ return 0;
+
+ }
+}
+
+void set_pair_reached_hash(xbt_state_t st){
+
+ MC_SET_RAW_MEM;
+
+ mc_snapshot_t sn = xbt_new0(s_mc_snapshot_t, 1);
+ MC_take_snapshot_liveness(sn);
+
+ mc_pair_reached_hash_t pair = NULL;
+ pair = xbt_new0(s_mc_pair_reached_hash_t, 1);
+ pair->automaton_state = st;
+ pair->prop_ato = xbt_dynar_new(sizeof(int), NULL);
+ pair->hash_regions = malloc(sizeof(unsigned int) * sn->num_reg);
+
+ int i;
+
+ for(i=0 ; i< sn->num_reg ; i++){
+ pair->hash_regions[i] = hash_region(sn->regions[i]->data, sn->regions[i]->size);
+ }
+
+ /* Get values of propositional symbols */
+ unsigned int cursor = 0;
+ xbt_propositional_symbol_t ps = NULL;
+ int res;
+ int (*f)();
+
+ xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ f = ps->function;
+ res = (*f)();
+ xbt_dynar_push_as(pair->prop_ato, int, res);
+ }
+
+ xbt_dynar_push(reached_pairs_hash, &pair);
+
+ MC_free_snapshot(sn);
+
+ MC_UNSET_RAW_MEM;
+
+}
+
+
+int visited(xbt_state_t st, int sc){
+
+
+ if(xbt_dynar_is_empty(visited_pairs)){
+
+ return 0;
+
+ }else{
+
+ MC_SET_RAW_MEM;
+
+ mc_snapshot_t sn = xbt_new0(s_mc_snapshot_t, 1);
+ MC_take_snapshot_liveness(sn);
+
+ xbt_dynar_t prop_ato = xbt_dynar_new(sizeof(int), NULL);
+
+ /* Get values of propositional symbols */
+ unsigned int cursor = 0;
+ xbt_propositional_symbol_t ps = NULL;
+ int res;
+ int (*f)();
+
+ xbt_dynar_foreach(automaton->propositional_symbols, cursor, ps){
+ f = ps->function;
+ res = (*f)();
+ xbt_dynar_push_as(prop_ato, int, res);
+ }
+
+ cursor = 0;
+ mc_pair_visited_t pair_test = NULL;
+
+ xbt_dynar_foreach(visited_pairs, cursor, pair_test){