コード例 #1
0
void asserted_formulas::push_assertion(expr * e, proof * pr, vector<justified_expr>& result) {
    if (inconsistent()) {
        return;
    }
    expr* e1 = nullptr;
    if (m.is_false(e)) {
        result.push_back(justified_expr(m, e, pr));
        m_inconsistent = true;
    }
    else if (m.is_true(e)) {
        // skip
    }
    else if (m.is_and(e)) {
        for (unsigned i = 0; i < to_app(e)->get_num_args(); ++i) {
            expr* arg = to_app(e)->get_arg(i);
            proof_ref _pr(m.proofs_enabled() ? m.mk_and_elim(pr, i) : nullptr, m);
            push_assertion(arg, _pr, result);
        }
    }
    else if (m.is_not(e, e1) && m.is_or(e1)) {
        for (unsigned i = 0; i < to_app(e1)->get_num_args(); ++i) {
            expr* arg = to_app(e1)->get_arg(i);
            proof_ref _pr(m.proofs_enabled() ? m.mk_not_or_elim(pr, i) : nullptr, m);
            expr_ref  narg(mk_not(m, arg), m);
            push_assertion(narg, _pr, result);
        }
    }
    else {
        result.push_back(justified_expr(m, e, pr));
    }
}
コード例 #2
0
ファイル: cmp.c プロジェクト: alhazred/onarm
int
main(int argc, char **argv)
{
	int		c;
	int		c1, c2;

	(void) setlocale(LC_ALL, "");
#if !defined(TEXT_DOMAIN)	/* Should be defined by cc -D */
#define	TEXT_DOMAIN "SYS_TEST"	/* Use this only if it weren't */
#endif
	(void) textdomain(TEXT_DOMAIN);

	while ((c = getopt(argc, argv, "ls")) != EOF)
		switch (c) {
			case 'l':
				lflg = 2;
				break;
			case 's':
				lflg = 0;
				break;
			case '?':
			default:
				narg();
		}
	argv += optind;
	argc -= optind;
	if (argc < 2 || argc > 4)
		narg();

	arg = argv[0];
	if (arg[0] == '-' && arg[1] == 0)
		file1 = stdin;
	else if ((file1 = fopen(arg, "r")) == NULL)
		barg();

	arg = argv[1];
	if (arg[0] == '-' && arg[1] == 0)
		file2 = stdin;
	else if ((file2 = fopen(arg, "r")) == NULL)
		barg();

	if (file1 == stdin && file2 == stdin)
		narg();

	if (argc > 2)
		skip1 = otoi(argv[2]);
	if (argc > 3)
		skip2 = otoi(argv[3]);
	while (skip1) {
		if ((c1 = getc(file1)) == EOF) {
			arg = argv[0];
			earg();
		}
		skip1--;
	}
	while (skip2) {
		if ((c2 = getc(file2)) == EOF) {
			arg = argv[1];
			earg();
		}
		skip2--;
	}

	for (;;) {
		chr++;
		c1 = getc(file1);
		c2 = getc(file2);
		if (c1 == c2) {
			if (c1 == '\n')
				line++;
			if (c1 == EOF) {
				if (eflg)
					return (1);
				return (0);
			}
			continue;
		}
		if (lflg == 0)
			return (1);
		if (c1 == EOF) {
			arg = argv[0];
			earg();
		}
		if (c2 == EOF)
			earg();
		if (lflg == 1) {
			(void) printf(
			    gettext("%s %s differ: char %lld, line %lld\n"),
			    argv[0], arg, chr, line);
			return (1);
		}
		eflg = 1;
		(void) printf("%6lld %3o %3o\n", chr, c1, c2);
	}
}