local env = bare_environment() local g = name_generator("tst") local tc = type_checker(env, g) assert(is_type_checker(tc)) local a = Const("a") local t = Fun(a, Bool, a) local b = Const("b") print(t(b)) assert(tc:whnf(t(b)) == b) assert(tc:check(Bool) == mk_sort(mk_level_one())) print(tc:infer(t)) local m = mk_metavar("m1", mk_metavar("m2", mk_sort(mk_meta_univ("u")))) print(tc:infer(m)) local tc2 = type_checker(env, g) local t2 = Fun(a, Bool, m(a)) print("---------") print("t2: ") print(t2) print("check(t): ") print(tc2:check(t)) print("check(t2): ") print(tc2:check(t2)) assert(tc2:next_cnstr()) assert(tc2:next_cnstr()) assert(not tc2:next_cnstr())