Example #1
0
File: num.cpp Project: avigad/lean
expr to_nat_expr_core(mpz const & n) {
    lean_assert(n >= 0);
    if (n == 1)
        return mk_nat_one();
    else if (n % mpz(2) == 0)
        return mk_nat_bit0(to_nat_expr(n / 2));
    else
        return mk_nat_bit1(to_nat_expr(n / 2));
}
Example #2
0
expr from_string_core(std::string const & s) {
    expr r = *g_empty;
    for (unsigned i = 0; i < s.size(); i++) {
        expr n = to_nat_expr(mpz(static_cast<unsigned char>(s[i])));
        expr c = mk_app(*g_char_of_nat, n);
        r = mk_app(*g_str, c, r);
    }
    return r;
}