- MC_UNSET_RAW_MEM;
-
- xbt_dynar_reset(successors);
-
- cursor = 0;
- xbt_dynar_foreach(current_pair->automaton_state->out, cursor, transition_succ){
-
- res = MC_automaton_evaluate_label(a, transition_succ->label);
-
- MC_SET_RAW_MEM;
-
- if(res == 1){ // enabled transition in automaton
- next_pair = new_pair(next_snapshot,next_graph_state, transition_succ->dst);
- xbt_dynar_push(successors, &next_pair);
- }
-
- MC_UNSET_RAW_MEM;
- }
-
- cursor = 0;
- xbt_dynar_foreach(current_pair->automaton_state->out, cursor, transition_succ){
-
- res = MC_automaton_evaluate_label(a, transition_succ->label);
-
- MC_SET_RAW_MEM;
-
- if(res == 2){ // enabled transition in automaton
- next_pair = new_pair(next_snapshot,next_graph_state, transition_succ->dst);
- xbt_dynar_push(successors, &next_pair);
- }
-
- MC_UNSET_RAW_MEM;
- }
-
-
- if(xbt_dynar_length(successors) == 0){
-
- MC_SET_RAW_MEM;
- next_pair = new_pair(next_snapshot, next_graph_state, current_pair->automaton_state);
- xbt_dynar_push(successors, &next_pair);
- MC_UNSET_RAW_MEM;
-
- }
-
- //XBT_DEBUG("Successors in automaton %lu", xbt_dynar_length(successors));
-
- cursor = 0;
- xbt_dynar_foreach(successors, cursor, pair_succ){
-
- //XBT_DEBUG("Search visited pair : graph=%p, automaton=%p", pair_succ->graph_state, pair_succ->automaton_state);
-
- if((search_cycle == 1) && (reached(pair_succ) == 1)){
- XBT_INFO("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
- XBT_INFO("| ACCEPTANCE CYCLE |");
- XBT_INFO("*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*");
- XBT_INFO("Counter-example that violates formula :");
- MC_show_stack_liveness_stateful(mc_stack_liveness_stateful);
- MC_dump_stack_liveness_stateful(mc_stack_liveness_stateful);
- MC_print_statistics_pairs(mc_stats_pair);
- exit(0);
- }
-
- mc_stats_pair->executed_transitions++;
-
- MC_SET_RAW_MEM;
- xbt_fifo_unshift(mc_stack_liveness_stateful, pair_succ);
- MC_UNSET_RAW_MEM;
-
- MC_ddfs_stateful(a, search_cycle, 0);
- }
-
- if((search_cycle == 0) && (current_pair->automaton_state->type == 1)){
-
- set_pair_reached(current_pair);
- XBT_DEBUG("Acceptance pair : graph=%p, automaton=%p(%s)", current_pair->graph_state, current_pair->automaton_state, current_pair->automaton_state->id);
-
- /*MC_restore_snapshot(current_pair->system_state);
- MC_UNSET_RAW_MEM;
-
- xbt_swag_foreach(process, simix_global->process_list){
- if(MC_process_is_enabled(process)){
- MC_state_interleave_process(current_pair->graph_state, process);
- }
- }
-
- mc_pair_t top_pair = (mc_pair_t)xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack_liveness_stateful));
- if((top_pair->graph_state != current_pair->graph_state) || (top_pair->automaton_state != current_pair->automaton_state)){
- MC_SET_RAW_MEM;
- xbt_fifo_unshift(mc_stack_liveness_stateful, current_pair);
- MC_UNSET_RAW_MEM;
- }*/
-
- MC_ddfs_stateful(a, 1, 1);
-
- }
-
-
- if(MC_state_interleave_size(current_pair->graph_state) > 0){
- MC_restore_snapshot(current_snapshot);
- MC_UNSET_RAW_MEM;
- }
-
- }
-
-
- MC_SET_RAW_MEM;
- mc_pair_t top_pair = (mc_pair_t)xbt_fifo_get_item_content(xbt_fifo_get_first_item(mc_stack_liveness_stateful));
- if((top_pair->graph_state == current_pair->graph_state) && (top_pair->automaton_state == current_pair->automaton_state)){
- xbt_fifo_shift(mc_stack_liveness_stateful);
- XBT_DEBUG("Pair (graph=%p, automaton =%p) shifted in stack", current_pair->graph_state, current_pair->automaton_state);
- }
- MC_UNSET_RAW_MEM;
-
-}
-
-
-
-/********************* Double-DFS stateless *******************/
-
-void MC_pair_stateless_delete(mc_pair_stateless_t pair){
- xbt_free(pair->graph_state->proc_status);
- xbt_free(pair->graph_state);
- //xbt_free(pair->automaton_state); -> FIXME : à implémenter
- xbt_free(pair);
-}
-
-mc_pair_stateless_t new_pair_stateless(mc_state_t sg, xbt_state_t st){
- mc_pair_stateless_t p = NULL;
- p = xbt_new0(s_mc_pair_stateless_t, 1);
- p->automaton_state = st;
- p->graph_state = sg;
- mc_stats_pair->expanded_pairs++;
- return p;
-}
-
-
-int reached_stateless(mc_pair_stateless_t pair){
-
- char* hash_reached = malloc(sizeof(char)*160);
- unsigned int c= 0;
-
- MC_SET_RAW_MEM;
- char *hash = malloc(sizeof(char)*160);
- xbt_sha((char *)&pair, hash);
- xbt_dynar_foreach(reached_pairs, c, hash_reached){
- if(strcmp(hash, hash_reached) == 0){
- MC_UNSET_RAW_MEM;
- return 1;
- }
- }