Example #1
0
void tst_bit_blaster() {
    ast_manager m;
    tst_adder(m, 4);
    tst_multiplier(m, 4);
    tst_le(m, 4);
    tst_eqs(m, 8);
    tst_sh(m, 4);
}
static void tst2() {
    tst_eq(0, EN_NUMERAL, 0, EN_NUMERAL, true);
    tst_eq(0, EN_NUMERAL, 2, EN_NUMERAL, false);
    tst_eq(3, EN_NUMERAL, 0, EN_NUMERAL, false);
    tst_eq(0, EN_PLUS_INFINITY, 0, EN_NUMERAL, false);
    tst_eq(0, EN_PLUS_INFINITY, 3, EN_NUMERAL, false);
    tst_eq(0, EN_PLUS_INFINITY, -2, EN_NUMERAL, false);
    tst_eq(0, EN_PLUS_INFINITY, 0, EN_MINUS_INFINITY, false);

    tst_neq(0, EN_NUMERAL, 0, EN_NUMERAL, false);
    tst_neq(0, EN_NUMERAL, 2, EN_NUMERAL, true);
    tst_neq(3, EN_NUMERAL, 0, EN_NUMERAL, true);
    tst_neq(0, EN_PLUS_INFINITY, 0, EN_NUMERAL, true);
    tst_neq(0, EN_PLUS_INFINITY, 3, EN_NUMERAL, true);
    tst_neq(0, EN_PLUS_INFINITY, -2, EN_NUMERAL, true);
    tst_neq(0, EN_PLUS_INFINITY, 0, EN_MINUS_INFINITY, true);

    tst_lt(0, EN_MINUS_INFINITY, 10, EN_NUMERAL, true);
    tst_lt(0, EN_MINUS_INFINITY, 0, EN_NUMERAL, true);
    tst_lt(0, EN_MINUS_INFINITY, -3, EN_NUMERAL, true);
    tst_lt(30, EN_MINUS_INFINITY, 10, EN_NUMERAL, true);
    tst_lt(20, EN_MINUS_INFINITY, 0, EN_NUMERAL, true);
    tst_lt(-20, EN_MINUS_INFINITY, -3, EN_NUMERAL, true);
    tst_lt(0, EN_MINUS_INFINITY, 10, EN_PLUS_INFINITY, true);
    tst_lt(0, EN_MINUS_INFINITY, 0, EN_PLUS_INFINITY, true);
    tst_lt(10, EN_MINUS_INFINITY, -30, EN_PLUS_INFINITY, true);

    tst_lt(0, EN_PLUS_INFINITY, 10, EN_NUMERAL, false);
    tst_lt(0, EN_PLUS_INFINITY, 0, EN_NUMERAL, false);
    tst_lt(0, EN_PLUS_INFINITY, -3, EN_NUMERAL, false);
    tst_lt(30, EN_PLUS_INFINITY, 10, EN_NUMERAL, false);
    tst_lt(20, EN_PLUS_INFINITY, 0, EN_NUMERAL, false);
    tst_lt(-20, EN_PLUS_INFINITY, -3, EN_NUMERAL, false);
    tst_lt(0, EN_PLUS_INFINITY, 10, EN_MINUS_INFINITY, false);
    tst_lt(0, EN_PLUS_INFINITY, 0, EN_MINUS_INFINITY, false);
    tst_lt(10, EN_PLUS_INFINITY, -30, EN_MINUS_INFINITY, false);

    tst_lt(0, EN_NUMERAL, 0, EN_PLUS_INFINITY, true);
    tst_lt(20, EN_NUMERAL, 10, EN_PLUS_INFINITY, true);
    tst_lt(-20, EN_NUMERAL, -100, EN_PLUS_INFINITY, true);
    tst_lt(0, EN_NUMERAL, 10, EN_NUMERAL, true);
    tst_lt(0, EN_NUMERAL, 0, EN_NUMERAL, false);
    tst_lt(10, EN_NUMERAL, 10, EN_NUMERAL, false);
    tst_lt(0, EN_NUMERAL, -3, EN_NUMERAL, false);
    tst_lt(30, EN_NUMERAL, 10, EN_NUMERAL, false);
    tst_lt(30, EN_NUMERAL, 40, EN_NUMERAL, true);
    tst_lt(20, EN_NUMERAL, 0, EN_NUMERAL, false);
    tst_lt(-20, EN_NUMERAL, -3, EN_NUMERAL, true);
    tst_lt(0, EN_NUMERAL, 10, EN_MINUS_INFINITY, false);
    tst_lt(0, EN_NUMERAL, 0, EN_MINUS_INFINITY, false);
    tst_lt(10, EN_NUMERAL, -30, EN_MINUS_INFINITY, false);

    tst_le(0, EN_MINUS_INFINITY, 10, EN_NUMERAL, true);
    tst_le(0, EN_MINUS_INFINITY, 0, EN_NUMERAL, true);
    tst_le(0, EN_MINUS_INFINITY, -3, EN_NUMERAL, true);
    tst_le(30, EN_MINUS_INFINITY, 10, EN_NUMERAL, true);
    tst_le(20, EN_MINUS_INFINITY, 0, EN_NUMERAL, true);
    tst_le(-20, EN_MINUS_INFINITY, -3, EN_NUMERAL, true);
    tst_le(0, EN_MINUS_INFINITY, 10, EN_PLUS_INFINITY, true);
    tst_le(0, EN_MINUS_INFINITY, 0, EN_PLUS_INFINITY, true);
    tst_le(10, EN_MINUS_INFINITY, -30, EN_PLUS_INFINITY, true);

    tst_le(0, EN_PLUS_INFINITY, 10, EN_NUMERAL, false);
    tst_le(0, EN_PLUS_INFINITY, 0, EN_NUMERAL, false);
    tst_le(0, EN_PLUS_INFINITY, -3, EN_NUMERAL, false);
    tst_le(30, EN_PLUS_INFINITY, 10, EN_NUMERAL, false);
    tst_le(20, EN_PLUS_INFINITY, 0, EN_NUMERAL, false);
    tst_le(-20, EN_PLUS_INFINITY, -3, EN_NUMERAL, false);
    tst_le(0, EN_PLUS_INFINITY, 10, EN_MINUS_INFINITY, false);
    tst_le(0, EN_PLUS_INFINITY, 0, EN_MINUS_INFINITY, false);
    tst_le(10, EN_PLUS_INFINITY, -30, EN_MINUS_INFINITY, false);

    tst_le(0, EN_NUMERAL, 0, EN_PLUS_INFINITY, true);
    tst_le(20, EN_NUMERAL, 10, EN_PLUS_INFINITY, true);
    tst_le(-20, EN_NUMERAL, -100, EN_PLUS_INFINITY, true);
    tst_le(0, EN_NUMERAL, 10, EN_NUMERAL, true);
    tst_le(0, EN_NUMERAL, 0, EN_NUMERAL, true);
    tst_le(10, EN_NUMERAL, 10, EN_NUMERAL, true);
    tst_le(0, EN_NUMERAL, -3, EN_NUMERAL, false);
    tst_le(30, EN_NUMERAL, 10, EN_NUMERAL, false);
    tst_le(30, EN_NUMERAL, 40, EN_NUMERAL, true);
    tst_le(20, EN_NUMERAL, 0, EN_NUMERAL, false);
    tst_le(-20, EN_NUMERAL, -3, EN_NUMERAL, true);
    tst_le(0, EN_NUMERAL, 10, EN_MINUS_INFINITY, false);
    tst_le(0, EN_NUMERAL, 0, EN_MINUS_INFINITY, false);
    tst_le(10, EN_NUMERAL, -30, EN_MINUS_INFINITY, false);


    tst_ge(0, EN_MINUS_INFINITY, 10, EN_NUMERAL, false);
    tst_ge(0, EN_MINUS_INFINITY, 0, EN_NUMERAL, false);
    tst_ge(0, EN_MINUS_INFINITY, -3, EN_NUMERAL, false);
    tst_ge(30, EN_MINUS_INFINITY, 10, EN_NUMERAL, false);
    tst_ge(20, EN_MINUS_INFINITY, 0, EN_NUMERAL, false);
    tst_ge(-20, EN_MINUS_INFINITY, -3, EN_NUMERAL, false);
    tst_ge(0, EN_MINUS_INFINITY, 10, EN_PLUS_INFINITY, false);
    tst_ge(0, EN_MINUS_INFINITY, 0, EN_PLUS_INFINITY, false);
    tst_ge(10, EN_MINUS_INFINITY, -30, EN_PLUS_INFINITY, false);

    tst_ge(0, EN_PLUS_INFINITY, 10, EN_NUMERAL, true);
    tst_ge(0, EN_PLUS_INFINITY, 0, EN_NUMERAL, true);
    tst_ge(0, EN_PLUS_INFINITY, -3, EN_NUMERAL, true);
    tst_ge(30, EN_PLUS_INFINITY, 10, EN_NUMERAL, true);
    tst_ge(20, EN_PLUS_INFINITY, 0, EN_NUMERAL, true);
    tst_ge(-20, EN_PLUS_INFINITY, -3, EN_NUMERAL, true);
    tst_ge(0, EN_PLUS_INFINITY, 10, EN_MINUS_INFINITY, true);
    tst_ge(0, EN_PLUS_INFINITY, 0, EN_MINUS_INFINITY, true);
    tst_ge(10, EN_PLUS_INFINITY, -30, EN_MINUS_INFINITY, true);

    tst_ge(0, EN_NUMERAL, 0, EN_PLUS_INFINITY, false);
    tst_ge(20, EN_NUMERAL, 10, EN_PLUS_INFINITY, false);
    tst_ge(-20, EN_NUMERAL, -100, EN_PLUS_INFINITY, false);
    tst_ge(0, EN_NUMERAL, 10, EN_NUMERAL, false);
    tst_ge(0, EN_NUMERAL, 0, EN_NUMERAL, true);
    tst_ge(10, EN_NUMERAL, 10, EN_NUMERAL, true);
    tst_ge(0, EN_NUMERAL, -3, EN_NUMERAL, true);
    tst_ge(30, EN_NUMERAL, 10, EN_NUMERAL, true);
    tst_ge(30, EN_NUMERAL, 40, EN_NUMERAL, false);
    tst_ge(20, EN_NUMERAL, 0, EN_NUMERAL, true);
    tst_ge(-20, EN_NUMERAL, -3, EN_NUMERAL, false);
    tst_ge(0, EN_NUMERAL, 10, EN_MINUS_INFINITY, true);
    tst_ge(0, EN_NUMERAL, 0, EN_MINUS_INFINITY, true);
    tst_ge(10, EN_NUMERAL, -30, EN_MINUS_INFINITY, true);


    tst_gt(0, EN_MINUS_INFINITY, 10, EN_NUMERAL, false);
    tst_gt(0, EN_MINUS_INFINITY, 0, EN_NUMERAL, false);
    tst_gt(0, EN_MINUS_INFINITY, -3, EN_NUMERAL, false);
    tst_gt(30, EN_MINUS_INFINITY, 10, EN_NUMERAL, false);
    tst_gt(20, EN_MINUS_INFINITY, 0, EN_NUMERAL, false);
    tst_gt(-20, EN_MINUS_INFINITY, -3, EN_NUMERAL, false);
    tst_gt(0, EN_MINUS_INFINITY, 10, EN_PLUS_INFINITY, false);
    tst_gt(0, EN_MINUS_INFINITY, 0, EN_PLUS_INFINITY, false);
    tst_gt(10, EN_MINUS_INFINITY, -30, EN_PLUS_INFINITY, false);

    tst_gt(0, EN_PLUS_INFINITY, 10, EN_NUMERAL, true);
    tst_gt(0, EN_PLUS_INFINITY, 0, EN_NUMERAL, true);
    tst_gt(0, EN_PLUS_INFINITY, -3, EN_NUMERAL, true);
    tst_gt(30, EN_PLUS_INFINITY, 10, EN_NUMERAL, true);
    tst_gt(20, EN_PLUS_INFINITY, 0, EN_NUMERAL, true);
    tst_gt(-20, EN_PLUS_INFINITY, -3, EN_NUMERAL, true);
    tst_gt(0, EN_PLUS_INFINITY, 10, EN_MINUS_INFINITY, true);
    tst_gt(0, EN_PLUS_INFINITY, 0, EN_MINUS_INFINITY, true);
    tst_gt(10, EN_PLUS_INFINITY, -30, EN_MINUS_INFINITY, true);

    tst_gt(0, EN_NUMERAL, 0, EN_PLUS_INFINITY, false);
    tst_gt(20, EN_NUMERAL, 10, EN_PLUS_INFINITY, false);
    tst_gt(-20, EN_NUMERAL, -100, EN_PLUS_INFINITY, false);
    tst_gt(0, EN_NUMERAL, 10, EN_NUMERAL, false);
    tst_gt(0, EN_NUMERAL, 0, EN_NUMERAL, false);
    tst_gt(10, EN_NUMERAL, 10, EN_NUMERAL, false);
    tst_gt(0, EN_NUMERAL, -3, EN_NUMERAL, true);
    tst_gt(30, EN_NUMERAL, 10, EN_NUMERAL, true);
    tst_gt(30, EN_NUMERAL, 40, EN_NUMERAL, false);
    tst_gt(20, EN_NUMERAL, 0, EN_NUMERAL, true);
    tst_gt(-20, EN_NUMERAL, -3, EN_NUMERAL, false);
    tst_gt(0, EN_NUMERAL, 10, EN_MINUS_INFINITY, true);
    tst_gt(0, EN_NUMERAL, 0, EN_MINUS_INFINITY, true);
    tst_gt(10, EN_NUMERAL, -30, EN_MINUS_INFINITY, true);
}