local env  = environment()
local opts = options()
env:add_var("T", Type())
local T = Const("T")
env:add_var("x", T)
env:add_var("y", T)
env:add_var("f", mk_arrow(T, mk_arrow(T, T)))
print(parse_lean("f x (f x y)", env, opts))
-- parse_lean will use the elaborator to fill missing information
local F = parse_lean("fun x, f x x", env, opts)
print(F)
print(env:type_check(F))