| _ -> raise (WrongUriToMutualInductiveDefinitions (U.string_of_uri uri))
;;
+let pack_coercion = ref (fun _ _ _ -> assert false);;
+
(* type_of_aux' is just another name (with a different scope) for type_of_aux *)
let rec type_of_aux' subterms_to_types metasenv context t expectedty =
(* Coscoy's double type-inference algorithm *)
let module R = CicReduction in
let module S = CicSubstitution in
let module U = UriManager in
+ let expectedty =
+ match expectedty with
+ None -> None
+ | Some t -> Some (!pack_coercion metasenv context t) in
let synthesized =
match t with
C.Rel n ->
ty
in
let synthesized' = beta_reduce synthesized in
+ let synthesized' = !pack_coercion metasenv context synthesized' in
let types,res =
match expectedty with
None ->