コード例 #1
0
ファイル: proof_checker.cpp プロジェクト: chadbrewbaker/z3
void proof_checker::hyp_decl_plugin::get_op_names(svector<builtin_name> & op_names, symbol const & logic) {
    if (logic == symbol::null) {
        op_names.push_back(builtin_name("cons", OP_CONS));
        op_names.push_back(builtin_name("atom", OP_ATOM));
        op_names.push_back(builtin_name("nil", OP_NIL));
    }
}
コード例 #2
0
ファイル: pb_decl_plugin.cpp プロジェクト: EinNarr/z3
void pb_decl_plugin::get_op_names(svector<builtin_name> & op_names, symbol const & logic) {
    if (logic == symbol::null) {
        op_names.push_back(builtin_name(m_at_most_sym.bare_str(), OP_AT_MOST_K));
        op_names.push_back(builtin_name(m_at_least_sym.bare_str(), OP_AT_LEAST_K));
        op_names.push_back(builtin_name(m_pble_sym.bare_str(), OP_PB_LE));
        op_names.push_back(builtin_name(m_pbge_sym.bare_str(), OP_PB_GE));
        op_names.push_back(builtin_name(m_pbeq_sym.bare_str(), OP_PB_EQ));
    }
}
コード例 #3
0
void special_relations_decl_plugin::get_op_names(svector<builtin_name> & op_names, symbol const & logic) {
    if (logic == symbol::null) {
        op_names.push_back(builtin_name(m_po.bare_str(), OP_SPECIAL_RELATION_PO));
        op_names.push_back(builtin_name(m_po_ao.bare_str(), OP_SPECIAL_RELATION_PO_AO));
        op_names.push_back(builtin_name(m_lo.bare_str(), OP_SPECIAL_RELATION_LO));
        op_names.push_back(builtin_name(m_plo.bare_str(), OP_SPECIAL_RELATION_PLO));
        op_names.push_back(builtin_name(m_to.bare_str(), OP_SPECIAL_RELATION_TO));
    }
}
コード例 #4
0
void float_decl_plugin::get_sort_names(svector<builtin_name> & sort_names, symbol const & logic) {
    sort_names.push_back(builtin_name("FloatingPoint", FLOAT_SORT));
    sort_names.push_back(builtin_name("RoundingMode", ROUNDING_MODE_SORT));

    // The final theory supports three common FloatingPoint sorts
    sort_names.push_back(builtin_name("Float16", FLOAT16_SORT));
    sort_names.push_back(builtin_name("Float32", FLOAT32_SORT));
    sort_names.push_back(builtin_name("Float64", FLOAT64_SORT));
    sort_names.push_back(builtin_name("Float128", FLOAT128_SORT));
}
コード例 #5
0
void float_decl_plugin::get_op_names(svector<builtin_name> & op_names, symbol const & logic) {
    // These are the operators from the final draft of the SMT FloatingPoint standard
    op_names.push_back(builtin_name("+oo", OP_FLOAT_PLUS_INF));
    op_names.push_back(builtin_name("-oo", OP_FLOAT_MINUS_INF));
    op_names.push_back(builtin_name("+zero", OP_FLOAT_PLUS_ZERO));
    op_names.push_back(builtin_name("-zero", OP_FLOAT_MINUS_ZERO));
    op_names.push_back(builtin_name("NaN", OP_FLOAT_NAN));

    op_names.push_back(builtin_name("roundNearestTiesToEven", OP_RM_NEAREST_TIES_TO_EVEN));
    op_names.push_back(builtin_name("roundNearestTiesToAway", OP_RM_NEAREST_TIES_TO_AWAY));
    op_names.push_back(builtin_name("roundTowardPositive", OP_RM_TOWARD_POSITIVE));
    op_names.push_back(builtin_name("roundTowardNegative", OP_RM_TOWARD_NEGATIVE));
    op_names.push_back(builtin_name("roundTowardZero", OP_RM_TOWARD_ZERO));

    op_names.push_back(builtin_name("RNE", OP_RM_NEAREST_TIES_TO_EVEN));
    op_names.push_back(builtin_name("RNA", OP_RM_NEAREST_TIES_TO_AWAY));
    op_names.push_back(builtin_name("RTP", OP_RM_TOWARD_POSITIVE));
    op_names.push_back(builtin_name("RTN", OP_RM_TOWARD_NEGATIVE));
    op_names.push_back(builtin_name("RTZ", OP_RM_TOWARD_ZERO));

    op_names.push_back(builtin_name("fp.abs", OP_FLOAT_ABS));
    op_names.push_back(builtin_name("fp.neg", OP_FLOAT_NEG));
    op_names.push_back(builtin_name("fp.add", OP_FLOAT_ADD));
    op_names.push_back(builtin_name("fp.sub", OP_FLOAT_SUB));
    op_names.push_back(builtin_name("fp.mul", OP_FLOAT_MUL));
    op_names.push_back(builtin_name("fp.div", OP_FLOAT_DIV));
    op_names.push_back(builtin_name("fp.fma", OP_FLOAT_FMA));
    op_names.push_back(builtin_name("fp.sqrt", OP_FLOAT_SQRT));
    op_names.push_back(builtin_name("fp.rem", OP_FLOAT_REM));
    op_names.push_back(builtin_name("fp.roundToIntegral", OP_FLOAT_ROUND_TO_INTEGRAL));
    op_names.push_back(builtin_name("fp.min", OP_FLOAT_MIN));
    op_names.push_back(builtin_name("fp.max", OP_FLOAT_MAX));
    op_names.push_back(builtin_name("fp.leq", OP_FLOAT_LE));
    op_names.push_back(builtin_name("fp.lt",  OP_FLOAT_LT));
    op_names.push_back(builtin_name("fp.geq", OP_FLOAT_GE));
    op_names.push_back(builtin_name("fp.gt",  OP_FLOAT_GT));
    op_names.push_back(builtin_name("fp.eq", OP_FLOAT_EQ));

    op_names.push_back(builtin_name("fp.isNormal", OP_FLOAT_IS_NORMAL));
    op_names.push_back(builtin_name("fp.isSubnormal", OP_FLOAT_IS_SUBNORMAL));
    op_names.push_back(builtin_name("fp.isZero", OP_FLOAT_IS_ZERO));
    op_names.push_back(builtin_name("fp.isInfinite", OP_FLOAT_IS_INF));
    op_names.push_back(builtin_name("fp.isNaN", OP_FLOAT_IS_NAN));
    op_names.push_back(builtin_name("fp.isNegative", OP_FLOAT_IS_NEGATIVE));
    op_names.push_back(builtin_name("fp.isPositive", OP_FLOAT_IS_POSITIVE));

    op_names.push_back(builtin_name("fp", OP_FLOAT_FP));
    op_names.push_back(builtin_name("fp.to_ubv", OP_FLOAT_TO_UBV));
    op_names.push_back(builtin_name("fp.to_sbv", OP_FLOAT_TO_SBV));

    op_names.push_back(builtin_name("to_fp", OP_TO_FLOAT));
}
コード例 #6
0
ファイル: proof_checker.cpp プロジェクト: chadbrewbaker/z3
void proof_checker::hyp_decl_plugin::get_sort_names(svector<builtin_name> & sort_names, symbol const & logic) {
    if (logic == symbol::null) {
        sort_names.push_back(builtin_name("cell", CELL_SORT));
    }
}
コード例 #7
0
void float_decl_plugin::get_sort_names(svector<builtin_name> & sort_names, symbol const & logic) {
    sort_names.push_back(builtin_name("FP", FLOAT_SORT));
    sort_names.push_back(builtin_name("RoundingMode", ROUNDING_MODE_SORT));
}
コード例 #8
0
void float_decl_plugin::get_op_names(svector<builtin_name> & op_names, symbol const & logic) {
    op_names.push_back(builtin_name("plusInfinity",  OP_FLOAT_PLUS_INF));
    op_names.push_back(builtin_name("minusInfinity", OP_FLOAT_MINUS_INF));
    op_names.push_back(builtin_name("NaN", OP_FLOAT_NAN));
    op_names.push_back(builtin_name("roundNearestTiesToEven", OP_RM_NEAREST_TIES_TO_EVEN));
    op_names.push_back(builtin_name("roundNearestTiesToAway", OP_RM_NEAREST_TIES_TO_AWAY));
    op_names.push_back(builtin_name("roundTowardPositive", OP_RM_TOWARD_POSITIVE));
    op_names.push_back(builtin_name("roundTowardNegative", OP_RM_TOWARD_NEGATIVE));
    op_names.push_back(builtin_name("roundTowardZero", OP_RM_TOWARD_ZERO));
    
    op_names.push_back(builtin_name("+", OP_FLOAT_ADD)); 
    op_names.push_back(builtin_name("-", OP_FLOAT_SUB)); 
    op_names.push_back(builtin_name("/", OP_FLOAT_DIV)); 
    op_names.push_back(builtin_name("*", OP_FLOAT_MUL)); 

    op_names.push_back(builtin_name("abs", OP_FLOAT_ABS)); 
    op_names.push_back(builtin_name("remainder", OP_FLOAT_REM));  
    op_names.push_back(builtin_name("fusedMA", OP_FLOAT_FUSED_MA));  
    op_names.push_back(builtin_name("squareRoot", OP_FLOAT_SQRT));  
    op_names.push_back(builtin_name("roundToIntegral", OP_FLOAT_ROUND_TO_INTEGRAL));  
    
    op_names.push_back(builtin_name("==", OP_FLOAT_EQ));
    
    op_names.push_back(builtin_name("<",  OP_FLOAT_LT));
    op_names.push_back(builtin_name(">",  OP_FLOAT_GT));
    op_names.push_back(builtin_name("<=", OP_FLOAT_LE));
    op_names.push_back(builtin_name(">=", OP_FLOAT_GE));

    op_names.push_back(builtin_name("isZero", OP_FLOAT_IS_ZERO));
    op_names.push_back(builtin_name("isNZero", OP_FLOAT_IS_NZERO));
    op_names.push_back(builtin_name("isPZero", OP_FLOAT_IS_PZERO));
    op_names.push_back(builtin_name("isSignMinus", OP_FLOAT_IS_SIGN_MINUS));

    op_names.push_back(builtin_name("min", OP_FLOAT_MIN));
    op_names.push_back(builtin_name("max", OP_FLOAT_MAX));

    op_names.push_back(builtin_name("asFloat", OP_TO_FLOAT));    
}