type db
+class status :
+ object ('self)
+ method coerc_db: db
+ method set_coerc_db: db -> 'self
+ method set_coercion_status: <coerc_db: db; ..> -> 'self
+ end
+
+val empty_db: db
+
(* index (\x.c ?? x ??): A -> B
index_coercion db c A B \arity_left(c ??x??) \position(x,??x??)
*)
val index_coercion:
- db -> NCic.term -> NCic.term -> NCic.term -> int -> int -> db
+ #status as 'status ->
+ NCic.term -> NCic.term -> NCic.term -> int -> int -> 'status
(* gets the old imperative coercion DB (list format) *)
-val index_old_db: CoercDb.coerc_db -> db -> db
-
-val empty_db : db
+val index_old_db: CoercDb.coerc_db -> (#status as 'status) -> 'status
val look_for_coercion:
- db ->
+ #status ->
NCic.metasenv -> NCic.substitution -> NCic.context ->
(* inferred type, expected type *)
NCic.term -> NCic.term ->