when unifying ?1 : T with t : T', T and T' are unified first. If ?1
occurs in T', it is moved from the metasenv to the subst, and the
exception here used to escape.
let module S = CicSubstitution in
let l =
- let (_, canonical_context, _) = CicUtil.lookup_meta n metasenv in
+ let (_, canonical_context, _) =
+ try
+ CicUtil.lookup_meta n metasenv
+ with CicUtil.Meta_not_found _ ->
+ raise (MetaSubstFailure (lazy
+ ("delifting error: the metavariable " ^ string_of_int n ^ " is not " ^
+ "declared in the metasenv")))
+ in
List.map2 (fun ct lt ->
match (ct, lt) with
| None, _ -> None