Ejemplo n.º 1
0
void init_preprocess(void)
{
   int i;
   char *cp;

   init_symtbl();
   for (i = 0; predefs[i]; i++)
   {
      cp = copyofstr("1");
      check_os_malloc(cp);
      define(predefs[i], -1, (unsigned char *) cp, DEF_PREDEF);
   }

   init_include();
   keep_comments = 0;
   no_line_lines = 0;
   do_at_ctrls = 0;
   incldep = 0;
   willbefirst = 1;
   quote = 0;
   ifstack = 0;
   n_skipped_ifs = 0;
}
Ejemplo n.º 2
0
int main(int argc, char **argv)
{
    int c;
    extern int optind;

    int brute_force = 0;
    int verbose = 0;

    serializable input = serializableNIL;
    serializable output = serializableNIL;

    print_state st;

    while ((c = getopt(argc, argv, "Vfh?v")) != -1) {
        switch (c) {
            case 0:
                break;
            case 'V':
                verbose = 1;
                break;
            case 'f':
                brute_force = 1;
                break;
            case '?':
            case 'h':
                usage(stdout);
                return EXIT_SUCCESS;
            case 'v':
                version(stdout);
                return EXIT_SUCCESS;
            default:
                fprintf(stderr, "Try `wff2obdd -h' for more information.\n");
                return EXIT_FAILURE;
        }
    }

    infile = stdin;
    outfile = stdout;

    if (optind < argc) {
        infilename = strdup(argv[optind++]);
    }
    if (optind < argc) {
        outfilename = strdup(argv[optind++]);
    }

    if (infilename != NULL && 0 != strcmp(infilename, "-")) {
        infile = ckfopen(infilename, "r");
    }
    if (outfilename != NULL) {
        outfile = ckfopen(outfilename, "w");
    }

    init_symtbl();
    if (!fscan_serializable(infile, &input)) {
        fprintf(stderr, "wff2obdd: %d: %s\n", lineno, errmsg);
        destroy_symtbl();
        return EXIT_FAILURE;
    }
    st = set_print(outfile, 1, 75, 8);
    if (serializableNIL == input) {
        fprint_serializable(st, serializableNIL);
        destroy_symtbl();
        return EXIT_SUCCESS;
    }
    if (input->tag != TAGtv_wff_flat_kb && input->tag != TAGtv_wff_hierarchy) {
        fprintf(stderr, "wff2obdd: input is not in propositional Wff\n");
        rfre_serializable(input);
        destroy_symtbl();
        return EXIT_FAILURE;
    }

    wff2obdd_init();
    wff2obdd(input, &output, brute_force);

    if (verbose) {
        display_stat_items(stderr);
    }
    wff2obdd_destroy();

    rfre_serializable(input);

    fprint_serializable(st, output);
    rfre_serializable(output);
    end_print(st);
    destroy_symtbl();

    return EXIT_SUCCESS;
}
Ejemplo n.º 3
0
int main(int argc, char *argv[])
{
    tv_clause_list clauses;
    variable_list variables;
    tv_term solution = NULL;
    tv_dnf result;

    int c;
    extern int optind;

    while ((c = getopt(argc, argv, "Vah?v")) != -1) {
        switch (c) {
            case 0:
                break;
            case 'a':
                findall = 1;
                break;
            case 'V':
                trace_solver = 1;
                break;
            case '?':
            case 'h':
                usage(stdout);
                return 1; /* exit failure */
            case 'v':
                version(stdout);
                return 0; /* exit failure */
            default:
                fprintf(stderr, "Try `cnf2dnf -h' for more information.\n");
                return 1; /* exit failure */
        }
    }

    infile = stdin;
    outfile = stdout;

    if (optind < argc) {
        infilename = strdup(argv[optind++]);
    }
    if (optind < argc) {
        outfilename = strdup(argv[optind++]);
    }

    if (infilename != NULL && 0 != strcmp(infilename, "-")) {
        infile = ckfopen(infilename, "r");
    }
    if (outfilename != NULL) {
        outfile = ckfopen(outfilename, "w");
    }

    init_symtbl();
    if (!parse_DIMACS_file(infile, &clauses, &variables)) {
        fprintf(stderr, "Giving up\n");
        destroy_symtbl();
        return EXIT_FAILURE;
    }

    fprintf(outfile, "Problem has %u variables and %u clauses\n", variables->sz, clauses->sz);

    result = new_tv_dnf(new_values_set_list(),
                        rdup_variable_list(variables),
                        new_variable_list(),
                        new_constant_list(),
                        ENCODING_NONE,
                        new_tv_term_list());
    if (findall) {
        lsss_get_all_solutions(clauses, variables->sz, result->terms);
    } else {
        if (lsss_get_solution(clauses, variables->sz, &solution)) {
            result->terms = append_tv_term_list(result->terms, solution);
        }
    }

    pp_dimacs_dnf(outfile, result);

    rfre_variable_list(variables);
    rfre_tv_clause_list(clauses);
    rfre_tv_dnf(result);
    destroy_symtbl();

    return EXIT_SUCCESS;
}
Ejemplo n.º 4
0
int main(int argc, char **argv)
{
    extern int optind;
    extern char *optarg;

    print_state st;

    serializable input, output;

    char *p = NULL;

    int simplify = 1;
    int verbose = 0;
    int hier = 0;
    int c;

    unsigned int depth = 1;

    while ((c = getopt(argc, argv, "s:h?vVS")) != -1) {
        switch (c) {
            case 0:
                break;
            case 's':
                hier = 1;
                if (NULL == optarg) {
                    fprintf(stderr, "Missing inlining depth. Try `smoothy -h' for more information.\n");
                }
                depth = strtol(optarg, &p, 10);
                if (p == NULL || *p != '\0') {
                    fprintf(stderr, "Bad inlining depth. Try `smoothy -h' for more information.\n");
                }
                break;
            case 'S':
                simplify = 0;
                break;
            case 'V':
                verbose = 1;
                break;
            case '?':
            case 'h':
                usage(stdout);
                return EXIT_FAILURE;
            case 'v':
                version(stdout);
                return EXIT_SUCCESS;
            default:
                fprintf(stderr, "Try `smoothy -h' for more information.\n");
                return EXIT_FAILURE;
        }
    }

    infile = stdin;
    outfile = stdout;

    if (optind < argc) {
        infilename = strdup(argv[optind++]);
    }
    if (optind < argc) {
        outfilename = strdup(argv[optind++]);
    }

    if (infilename != NULL && 0 != strcmp(infilename, "-")) {
        infile = ckfopen(infilename, "r");
    }
    if (outfilename != NULL) {
        outfile = ckfopen(outfilename, "w");
    }

    st = set_print(outfile, 1, 75, 8);

    init_symtbl();
    input = serializableNIL;
    if (!fscan_serializable(infile, &input)) {
        fprintf(stderr, "smoothy: %d: %s\n", lineno, errmsg);
        destroy_symtbl();
        return EXIT_FAILURE;
    }
    output = serializableNIL;

    smoothy_init();
    if (!smoothy(input, hier, depth, verbose, simplify, &output)) {
        destroy_symtbl();
        return EXIT_FAILURE;
    }

    if (verbose) {
        display_stat_items(stderr);
    }
    smoothy_destroy();

    rfre_serializable(input);
    fprint_serializable(st, output);
    rfre_serializable(output);
    end_print(st);
    destroy_symtbl();

    return EXIT_SUCCESS;
}
Ejemplo n.º 5
0
int main(int argc, char **argv)
{

    FILE *infile;
    FILE *outfile;

    char *infilename = NULL;
    char *outfilename = NULL;

    serializable input = serializableNIL;
    serializable output = serializableNIL;

    print_state st;

    int option_index = 0;
    int c;

    struct option long_options[] = {
        {"help", 0, 0, 'h'},
        {"version", 0, 0, 'v'},
        {0, 0, 0, 0}
    };

    while ((c = getopt_long(argc, argv, "h?v", long_options, &option_index)) != -1) {
        switch (c) {
            case 0:
                break;
            case 'h':
                usage(stdout);
                return EXIT_SUCCESS;
            case 'v':
                version(stdout);
                return EXIT_SUCCESS;
            default:
                help(stderr);
                return EXIT_FAILURE;
        }
    }

    infile = stdin;
    outfile = stdout;

    if (optind < argc) {
        infilename = strdup(argv[optind++]);
    }
    if (optind < argc) {
        outfilename = strdup(argv[optind++]);
    }

    if (infilename != NULL && 0 != strcmp(infilename, "-")) {
        infile = ckfopen(infilename, "r");
    }
    if (outfilename != NULL) {
        outfile = ckfopen(outfilename, "w");
    }

    init_symtbl();
    if (!fscan_serializable(infile, &input)) {
        fprintf(stderr,
                "Error parsing `%s': %s in line %d.\n",
                infilename,
                errmsg,
                lineno);
        destroy_symtbl();
        return EXIT_FAILURE;
    }
    st = set_print(outfile, 1, 75, 8);
    if (serializableNIL == input) {
        fprint_serializable(st, serializableNIL);
        end_print(st);
        destroy_symtbl();
        return EXIT_SUCCESS;
    }
    if (input->tag != TAGtv_cnf_flat_kb && input->tag != TAGtv_cnf_hierarchy) {
        fprintf(stderr, "Input is not in CNF.\n");
        rfre_serializable(input);
        destroy_symtbl();
        return EXIT_FAILURE;
    }

    cnf2horn_init();
    cnf2horn(input, &output);
    cnf2horn_destroy();
    rfre_serializable(input);

    fprint_serializable(st, output);
    rfre_serializable(output);

    end_print(st);
    destroy_symtbl();

    return EXIT_SUCCESS;
}
Ejemplo n.º 6
0
int main(int argc, char **argv)
{
    print_state st;
    tv_wff_hierarchy output;
    csp_hierarchy input = csp_hierarchyNIL;

    int c;
    extern int optind;

    while ((c = getopt(argc, argv, "h?v")) != -1) {
        switch (c) {
            case 0:
                break;
            case '?':
            case 'h':
                usage(stdout);
                return EXIT_FAILURE;
            case 'v':
                version(stdout);
                return EXIT_SUCCESS;
            default:
                fprintf(stderr, "Try `lcm2wff -h' for more information.\n");
                return EXIT_FAILURE;
        }
    }

    infile = stdin;
    outfile = stdout;

    if (optind < argc) {
        infilename = strdup(argv[optind++]);
    }
    if (optind < argc) {
        outfilename = strdup(argv[optind++]);
    }

    if (infilename != NULL && 0 != strcmp(infilename, "-")) {
        infile = ckfopen(infilename, "r");
    }
    if (outfilename != NULL) {
        outfile = ckfopen(outfilename, "w");
    }

    init_symtbl();

    if (!fscan_csp_hierarchy(infile, &input)) {
        fprintf(stderr, "lcm2wff: %d: %s\n", lineno, errmsg);
        destroy_symtbl();
        return EXIT_FAILURE;
    }
    if (!lcm2wff(input, &output)) {
        fprintf(stderr, "lcm2wff: Not a propositional model.\n");
        destroy_symtbl();
        return EXIT_FAILURE;
    }

    st = set_print(outfile, 1, 75, 8);
    fprint_tv_wff_hierarchy(st, output);
    end_print(st);

    rfre_tv_wff_hierarchy(output);
    rfre_csp_hierarchy(input);
    destroy_symtbl();

    return EXIT_SUCCESS;
}
Ejemplo n.º 7
0
int main(int argc, char **argv)
{
    print_state st;
    tv_wff_hierarchy input = tv_wff_hierarchyNIL;
    tv_nnf_hierarchy output;
    unsigned int i, j;

    int c;
    extern int optind;

    while ((c = getopt(argc, argv, "h?v")) != -1) {
	switch (c) {
	    case 0:
		break;
	    case '?':
 	    case 'h':
		usage(stdout);
		return EXIT_SUCCESS;
 	    case 'v':
		version(stdout);
		return EXIT_SUCCESS;
	    default:
		fprintf(stderr, "Try `wff2nnf -h' for more information.\n");
		return EXIT_FAILURE;
	}
    }

    infile = stdin;
    outfile = stdout;

    if (optind < argc) {
	infilename = strdup(argv[optind++]);
    }
    if (optind < argc) {
	outfilename = strdup(argv[optind++]);
    }

    if (infilename != NULL && 0 != strcmp(infilename, "-")) {
 	infile = ckfopen(infilename, "r");
    }
    if (outfilename != NULL) {
 	outfile = ckfopen(outfilename, "w");
    }

    st = set_print(outfile, 1, 75, 8);
    init_symtbl();
    if (!fscan_tv_wff_hierarchy(infile, &input)) {
	fprintf(stderr, "wff2nnf: %d: %s\n", lineno, errmsg);
	return EXIT_FAILURE;
    }

    output = new_tv_nnf_hierarchy(new_node_list());

    for (i = 0; i < input->nodes->sz; i++) {
	tv_wff node_input = to_tv_wff(input->nodes->arr[i]->constraints);
	tv_nnf node_output = new_tv_nnf(rdup_values_set_list(node_input->domains),
					rdup_variable_list(node_input->variables),
					rdup_variable_list(node_input->encoded_variables),
					rdup_constant_list(node_input->constants),
					node_input->encoding,
					new_tv_nnf_expr_list());
	node result;
	for (j = 0; j < node_input->e->sz; j++) {
	    tv_nnf_expr nnf = convert_nnf(&(node_input->e->arr[j]));
	    append_tv_nnf_expr_list(node_output->e, nnf);
	}
	result = new_node(rdup_lydia_symbol(input->nodes->arr[i]->type),
			  rdup_edge_list(input->nodes->arr[i]->edges),
			  to_kb(node_output));
	output->nodes = append_node_list(output->nodes, result);
    }

    fprint_tv_nnf_hierarchy(st, output);
    rfre_tv_nnf_hierarchy(output);

    rfre_tv_wff_hierarchy(input);

    end_print(st);

    destroy_symtbl();

    return EXIT_SUCCESS;
}