local env     = environment()
local inferer = type_inferer(env)
env:add_var("N", Type())
local N = Const("N")
env:add_var("a", N)
local ctx = context()
ctx = extend(ctx, "x", N)
assert(inferer(Var(0), ctx) == N)
assert(not pcall(function() inferer(Var(1), ctx) end))
inferer:clear()
assert(inferer(Var(0), ctx) == N)
assert(is_type_inferer(inferer))