void anonymous_unique() { lean_exception ex; lean_name a1, a2; check(lean_name_mk_anonymous(&a1, &ex)); check(lean_name_mk_anonymous(&a2, &ex)); check(lean_name_eq(a1, a2)); lean_name_del(a1); lean_name_del(a2); }
lean_name mk_name(char const * n) { lean_exception ex; lean_name a, r; check(lean_name_mk_anonymous(&a, &ex)); check(lean_name_mk_str(a, n, &r, &ex)); lean_name_del(a); return r; }
int main() { lean_exception ex; lean_name a, n1, n2, n3, n4, n5, n6; char const * s1; char const * s2; char const * s3; lean_list_name l1, l2, l3, l4; unsigned idx; printf("Started name test\n"); check(lean_name_mk_anonymous(&a, &ex)); check(lean_name_is_anonymous(a)); check(lean_name_mk_str(a, "foo", &n1, &ex)); check(lean_name_mk_str(n1, "bla", &n2, &ex)); check(lean_name_to_string(n2, &s1, &ex)); printf("Lean name: %s\n", s1); check(lean_name_is_str(n2)); check(!lean_name_is_anonymous(n2)); check(!lean_name_is_idx(n2)); check(lean_name_mk_idx(n2, 1, &n3, &ex)); check(lean_name_to_string(n3, &s2, &ex)); printf("Lean name: %s\n", s2); check(lean_name_is_idx(n3)); check(lean_name_get_prefix(n3, &n4, &ex)); check(lean_name_eq(n2, n4)); check(lean_name_get_idx(n3, &idx, &ex)); check(idx == 1); check(!lean_name_get_prefix(a, &n5, &ex)); s3 = lean_exception_get_message(ex); printf("Lean exception: %s\n", s3); check(lean_list_name_mk_nil(&l1, &ex)); check(!lean_list_name_is_cons(l1)); check(lean_list_name_mk_cons(n1, l1, &l2, &ex)); check(lean_list_name_is_cons(l2)); check(lean_list_name_mk_cons(n2, l2, &l3, &ex)); check(lean_list_name_head(l3, &n6, &ex)); check(lean_name_eq(n6, n2)); check(lean_list_name_tail(l3, &l4, &ex)); check(lean_list_name_eq(l4, l2)); anonymous_unique(); lean_name_del(a); lean_name_del(n1); lean_name_del(n2); lean_name_del(n3); lean_name_del(n4); lean_name_del(n6); lean_list_name_del(l1); lean_list_name_del(l2); lean_list_name_del(l3); lean_list_name_del(l4); lean_string_del(s1); lean_string_del(s2); lean_string_del(s3); lean_exception_del(ex); return 0; }
int main() { lean_exception ex; lean_name a, l, U, pp, pp_unicode, rn; lean_options o1, o2; lean_univ zero, one, p1, g1, m1, u, n, i, ru; lean_list_name ln1, ln2; lean_list_univ lu1, lu2; char const * s1; lean_bool r; check(lean_name_mk_anonymous(&a, &ex)); check(lean_name_mk_str(a, "l_1", &l, &ex)); check(lean_name_mk_str(a, "U", &U, &ex)); check(lean_name_mk_str(a, "pp", &pp, &ex)); check(lean_name_mk_str(pp, "unicode", &pp_unicode, &ex)); check(lean_options_mk_empty(&o1, &ex)); check(lean_options_set_bool(o1, pp_unicode, lean_false, &o2, &ex)); check(lean_univ_mk_zero(&zero, &ex)); check(lean_univ_mk_succ(zero, &one, &ex)); check(lean_univ_mk_param(l, &p1, &ex)); check(lean_univ_mk_global(U, &g1, &ex)); check(lean_univ_mk_max(p1, one, &m1, &ex)); check(lean_univ_mk_succ(m1, &u, &ex)); check(lean_univ_normalize(u, &n, &ex)); check(lean_univ_to_string(n, &s1, &ex)); printf("universe: %s\n", s1); check(lean_univ_geq(one, zero, &r, &ex) && r); /* replace l_1 with one in u */ check(lean_list_name_mk_nil(&ln1, &ex)); check(lean_list_name_mk_cons(l, ln1, &ln2, &ex)); check(lean_list_univ_mk_nil(&lu1, &ex)); check(lean_list_univ_mk_cons(one, lu1, &lu2, &ex)); check(lean_univ_instantiate(u, ln2, lu2, &i, &ex)); lean_list_name_del(ln1); lean_list_name_del(ln2); lean_list_univ_del(lu1); lean_list_univ_del(lu2); lean_string_del(s1); check(lean_univ_to_string_using(i, o2, &s1, &ex)); printf("universe: %s\n", s1); check(lean_univ_get_kind(zero) == LEAN_UNIV_ZERO); check(lean_univ_get_kind(one) == LEAN_UNIV_SUCC); check(lean_univ_get_kind(n) == LEAN_UNIV_MAX); check(lean_univ_get_name(g1, &rn, &ex) && lean_name_eq(rn, U)); check(lean_univ_get_max_lhs(m1, &ru, &ex) && lean_univ_eq(ru, p1, &r, &ex) && r); lean_univ_del(ru); check(lean_univ_get_max_rhs(m1, &ru, &ex) && lean_univ_eq(ru, one, &r, &ex) && r); lean_univ_del(ru); check(lean_univ_get_pred(one, &ru, &ex) && lean_univ_eq(ru, zero, &r, &ex) && r); lean_univ_del(ru); lean_name_del(a); lean_name_del(l); lean_name_del(U); lean_name_del(pp); lean_name_del(pp_unicode); lean_name_del(rn); lean_options_del(o1); lean_options_del(o2); lean_univ_del(zero); lean_univ_del(one); lean_univ_del(p1); lean_univ_del(g1); lean_univ_del(m1); lean_univ_del(u); lean_univ_del(n); lean_univ_del(i); lean_string_del(s1); return 0; }