local env     = environment()
local group   = Const("group")
local carrier = Const("carrier")
local real    = Const("real")
local nat     = Const("nat")
env = add_decl(env, mk_constant_assumption("group", mk_sort(2)))
env = add_decl(env, mk_constant_assumption("carrier", mk_arrow(group, Type)))
env = add_decl(env, mk_constant_assumption("real", Type))
env = add_decl(env, mk_constant_assumption("nat",  Type))
env = add_decl(env, mk_constant_assumption("real_group", group))
env = add_decl(env, mk_constant_assumption("nat_group", group))
local real_group = Const("real_group")
local nat_group  = Const("nat_group")
local m = mk_metavar("m", mk_metavar("m_ty", mk_sort(mk_meta_univ("u"))))
local cs  = { mk_eq_cnstr(carrier(m), real) }
assert(not unify(env, cs, name_generator())())