void mk_alternating(tl_Node *p) /* generates an alternating automaton for p */ { if (tl_stats) { getrusage(RUSAGE_SELF, &tr_debut); } node_size = calculate_node_size(p) + 1; /* number of states in the automaton */ label = (tl_Node **) tl_emalloc(node_size * sizeof(tl_Node *)); transition = (ATrans **) tl_emalloc(node_size * sizeof(ATrans *)); node_size = node_size / (8 * sizeof(int)) + 1; sym_size = calculate_sym_size(p); /* number of predicates */ if (sym_size) { sym_table = (char **) tl_emalloc(sym_size * sizeof(char *)); } sym_size = sym_size / (8 * sizeof(int)) + 1; final_set = make_set(-1, 0); transition[0] = boolean(p); /* generates the alternating automaton */ if (tl_verbose) { fprintf(tl_out, "\nAlternating automaton before simplification\n"); print_alternating(); } if (tl_simp_diff) { simplify_astates(); /* keeps only accessible states */ if (tl_verbose) { fprintf(tl_out, "\nAlternating automaton after simplification\n"); print_alternating(); } } if (tl_stats) { getrusage(RUSAGE_SELF, &tr_fin); fprintf(tl_out, "\n%i states, %i transitions\n", astate_count, atrans_count); } releasenode(1, p); tfree(label); }
void mk_alternating(Node *p) /* generates an alternating automaton for p */ { if(tl_stats) getrusage(RUSAGE_SELF, &tr_debut); node_size = calculate_node_size(p) + 1; /* number of states in the automaton */ label = (Node **) tl_emalloc(node_size * sizeof(Node *)); transition = (ATrans **) tl_emalloc(node_size * sizeof(ATrans *)); node_size = node_size / (8 * sizeof(int)) + 1; sym_size = calculate_sym_size(p); /* number of predicates */ if(sym_size) sym_table = (char **) tl_emalloc(sym_size * sizeof(char *)); sym_size = sym_size / (8 * sizeof(int)) + 1; final_set = make_set(-1, 0); transition[0] = boolean(p); /* generates the alternating automaton */ if(tl_verbose) { fprintf(tl_out, "\nAlternating automaton before simplification\n"); print_alternating(); } if(tl_simp_diff) { simplify_astates(); /* keeps only accessible states */ if(tl_verbose) { fprintf(tl_out, "\nAlternating automaton after simplification\n"); print_alternating(); } } #ifndef __MINGW__ if(tl_stats) { getrusage(RUSAGE_SELF, &tr_fin); timeval_subtract (&t_diff, &tr_fin.ru_utime, &tr_debut.ru_utime); fprintf(tl_out, "\nBuilding and simplification of the alternating automaton: %i.%06is", t_diff.tv_sec, t_diff.tv_usec); fprintf(tl_out, "\n%i states, %i transitions\n", astate_count, atrans_count); } #endif releasenode(1, p); tfree(label); }