X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Flibrary%2FcoercDb.mli;h=59c07f447acd3796130a16b2fc238b2e52969407;hb=20427121e8114fa60b64bd1669a0fc734bf39205;hp=e6d7e46b30042778b6b3889970c56dac329741bd;hpb=4f2e7eacea9e8b3089a575d7bf529fd5e70e8453;p=helm.git diff --git a/helm/software/components/library/coercDb.mli b/helm/software/components/library/coercDb.mli index e6d7e46b3..59c07f447 100644 --- a/helm/software/components/library/coercDb.mli +++ b/helm/software/components/library/coercDb.mli @@ -24,45 +24,44 @@ *) - (** THIS MODULE SHOULD BE USED ONLY BY CoercGraph/CicCoercion/librarySync - * - * and may be merged with CicCoercion... - * - * **) - - - (** XXX WARNING: non-reentrant *) -type coerc_carr = +type coerc_carr = private | Uri of UriManager.uri (* const, mutind, mutconstr *) | Sort of Cic.sort (* Prop, Set, Type *) - | Term of Cic.term (* nothing supported *) | Fun of int + | Dead ;; -exception EqCarrNotImplemented of string Lazy.t -exception EqCarrOnNonMetaClosed val eq_carr: ?exact:bool -> coerc_carr -> coerc_carr -> bool -val coerc_carr_of_term: Cic.term -> coerc_carr -val name_of_carr: coerc_carr -> string -val uri_of_carr: coerc_carr -> UriManager.uri option +val string_of_carr: coerc_carr -> string + +(* takes a term in whnf ~delta:false and a desired ariety *) +val coerc_carr_of_term: Cic.term -> int -> coerc_carr + +type coerc_db +val empty_coerc_db : coerc_db +val dump: unit -> coerc_db +val restore: coerc_db -> unit val to_list: - unit -> - (coerc_carr * coerc_carr * UriManager.uri list) list + coerc_db -> + (coerc_carr * coerc_carr * (UriManager.uri * int * int) list) list -val add_coercion: - coerc_carr * coerc_carr * UriManager.uri -> unit +(* src carr, tgt carr, uri, saturations, coerced position + * invariant: + * if the constant pointed by uri has n argments + * n = coerced position + saturations + FunClass arity + *) -val remove_coercion: - (coerc_carr * coerc_carr * UriManager.uri -> bool) -> unit +type saturations = int +type coerced_pos = int +type coercion_entry = + coerc_carr * coerc_carr * UriManager.uri * saturations * coerced_pos +val add_coercion: coercion_entry -> unit +val remove_coercion: (coercion_entry -> bool) -> unit val find_coercion: - (coerc_carr * coerc_carr -> bool) -> UriManager.uri list + (coerc_carr * coerc_carr -> bool) -> (UriManager.uri * int) list -val is_a_coercion: UriManager.uri -> bool -val is_a_coercion': Cic.term -> bool -val is_a_coercion_to_funclass: Cic.term -> int option -val get_carr: UriManager.uri -> coerc_carr * coerc_carr - -val term_of_carr: coerc_carr -> Cic.term +val is_a_coercion: Cic.term -> coercion_entry option +val prefer: UriManager.uri -> unit