local env = empty_environment() env = add_decl(env, mk_var_decl("or", mk_arrow(Bool, Bool, Bool))) env = add_decl(env, mk_var_decl("A", Bool)) local Or = Const("or") local A = Const("A") local B = Const("B") local tc = type_checker(env) local F = Or(A, B) assert(tc:infer(F) == Bool) assert(not pcall(function() -- The following test must fail since B is not -- declared in env. -- This test make sure that infer and check are -- not sharing the same cache. print(tc:check(F)) end ))