]> matita.cs.unibo.it Git - helm.git/commitdiff
added uri_of_term
authorStefano Zacchiroli <zack@upsilon.cc>
Mon, 30 May 2005 17:14:34 +0000 (17:14 +0000)
committerStefano Zacchiroli <zack@upsilon.cc>
Mon, 30 May 2005 17:14:34 +0000 (17:14 +0000)
helm/ocaml/cic/cicUtil.ml
helm/ocaml/cic/cicUtil.mli

index f2ea4171bf356923effb70662b800f757f778c32..54bd178a0bed18232d5f153a5e82718d10cb73c3 100644 (file)
  * http://helm.cs.unibo.it/
  *)
 
+open Printf
+
 exception Meta_not_found of int
 exception Subst_not_found of int
 
-
 let lookup_meta index metasenv =
   try
     List.find (fun (index', _, _) -> index = index') metasenv
@@ -160,6 +161,16 @@ let term_of_uri s =
   | Failure _
   | Not_found -> raise (UriManager.IllFormedUri s)
 
+let uri_of_term = function
+  | Cic.Const (uri, [])
+  | Cic.Var (uri, []) -> UriManager.string_of_uri uri
+  | Cic.MutInd (baseuri, tyno, []) ->
+      sprintf "%s#xpointer(1/%d)" (UriManager.string_of_uri baseuri) (tyno + 1)
+  | Cic.MutConstruct (baseuri, tyno, consno, []) ->
+      sprintf "%s#xpointer(1/%d/%d)" (UriManager.string_of_uri baseuri)
+        (tyno + 1) consno
+  | _ -> raise (Invalid_argument "uri_of_term")
+
 let select ~term ~context =
   let rec aux context term =
     match (context, term) with
index 4deec72419f148f292f75cbda418f4e0d5e3a830..650758eede7d294576a1df5c33c6c77c94c8694b 100644 (file)
@@ -36,16 +36,18 @@ val clean_up_local_context :
 val is_closed : Cic.term -> bool
 val is_meta_closed : Cic.term -> bool
 
-  (** @raise UriManager.IllFormedUri *)
-val term_of_uri: string -> Cic.term
+  (** @raise Failure "not enough prods" *)
+val strip_prods: int -> Cic.term -> Cic.term
+
+(** conversions between terms which are fully representable as uris (Var, Const,
+ * Mutind, and MutConstruct) and corresponding tree representations *)
+val term_of_uri: string -> Cic.term (** @raise UriManager.IllFormedUri *)
+val uri_of_term: Cic.term -> string (** @raise Invalid_argument "uri_of_term" *)
 
   (** packing/unpacking of several terms into a single one *)
 val pack: Cic.term list -> Cic.term
 val unpack: Cic.term -> Cic.term list
 
-  (** @raise Failure "not enough prods" *)
-val strip_prods: int -> Cic.term -> Cic.term
-
 (** {2 Cic selectors} *)
 
 val params_of_obj: Cic.obj -> UriManager.uri list