local env = environment() local A = Local("A", Type) env = add_decl(env, mk_var_decl("eq", Pi(A, mk_arrow(A, A, Bool)))) local eq = Const("eq") local a = Local("a", A) local b = Local("b", A) local H = Local("H", eq(A, a, b)) local m = mk_metavar("m", Pi({A, a, b, H}, eq(A, a, b))) print(to_proof_state(m)) local s = to_proof_state(m) local n, g = s:goals():head() local hs = g:hyps() local h = hs:head() local pm = proof_map() pm:insert("main", h) local r = s:pb(pm, substitution()) print(r) assert(env:infer_type(r) == env:infer_type(m))