local env = environment()
local m   = mk_metavar("m", mk_arrow(Prop, Prop))
local a   = Local("a", Prop)
print(env:normalize(Fun(a, m)))
print(env:normalize(Fun(a, m(a))))
local m2   = mk_metavar("m2", mk_arrow(Prop, Prop, Prop))
print(env:normalize(Fun(a, (m2(a))(a))))
print("step1")
env:type_check(m)
print("step2")
env:type_check(Fun(a, m(a)))
print("step3")
env:type_check(Fun(a, (m2(a))(a)))
local m3   = mk_metavar("m3", mk_metavar("m4", mk_sort(mk_meta_univ("l"))))
print("step4")
env:type_check(m3)
print("step5")
print(env:type_check(m3(a)))
print("before end")
