]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/software/components/library/librarySync.mli
- librarian: 3 bugs fixed in the building system:
[helm.git] / helm / software / components / library / librarySync.mli
index 61e2b2515ae9ba36837b142427cfd508b12014a5..bfab37330cfadf71dabffd2143b4f3ed91597801 100644 (file)
 
 exception AlreadyDefined of UriManager.uri
 
-(* this is a pointer to the function which builds the inversion principle *)
-val build_inversion_principle: (UriManager.uri-> Cic.obj -> (UriManager.uri * Cic.obj) list) ref
+type coercion_decl = 
+  UriManager.uri -> int (* arity *) ->
+   int (* saturations *) -> string (* baseuri *) ->
+    UriManager.uri list (* lemmas (new objs) *)
+
+(* the add_single_obj fun passed to the callback can raise AlreadyDefined *)
+val add_object_declaration_hook :
+  (add_obj:(UriManager.uri -> Cic.obj -> UriManager.uri list) -> 
+   add_coercion:coercion_decl ->
+    UriManager.uri -> Cic.obj -> UriManager.uri list) -> unit
 
 (* adds an object to the library together with all auxiliary lemmas on it *)
 (* (e.g. elimination principles, projections, etc.)                       *)
 (* it returns the list of the uris of the auxiliary lemmas generated      *)
 val add_obj: 
-  RefinementTool.kit -> 
-  UriManager.uri -> Cic.obj -> 
+  UriManager.uri -> Cic.obj -> pack_coercion_obj:(Cic.obj -> Cic.obj) -> 
     UriManager.uri list
 
-(* inverse of add_obj;                                                   *)
-(* Warning: it does not remove the dependencies on the object and on its *)
-(* auxiliary lemmas!                                                     *)
+(* removes an object (does not remove its associated lemmas) *)
 val remove_obj: UriManager.uri -> unit
 
 (* Informs the library that [uri] is a coercion.                         *)
@@ -46,14 +51,9 @@ val remove_obj: UriManager.uri -> unit
 (* is true are added to the library.                                     *)
 (* The list of added objects is returned.                                *)
 val add_coercion: 
-  add_composites:bool -> 
-  RefinementTool.kit -> UriManager.uri -> 
-    UriManager.uri list
-
-(* inverse of add_coercion, removes both the eventually created composite   *)
-(* coercions and the information that [uri] and the composites are coercion *)
-val remove_coercion: UriManager.uri -> unit
-
-(* mh... *)
-val remove_all_coercions: unit -> unit
+  add_composites:bool -> pack_coercion_obj:(Cic.obj -> Cic.obj) -> coercion_decl
 
+(* these just push/pop the coercions database, since the library is not
+ * pushable/poppable *)
+val push: unit -> unit
+val pop: unit -> unit