X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic%2FcicUtil.ml;h=5a64429a388da80c174e5ca3bfbce28a451f5ad5;hb=9415c1b38c7927adab499ddd75f9a19d650a9acd;hp=f2ea4171bf356923effb70662b800f757f778c32;hpb=f47b833df94d134090a65653077744290438a875;p=helm.git diff --git a/helm/ocaml/cic/cicUtil.ml b/helm/ocaml/cic/cicUtil.ml index f2ea4171b..5a64429a3 100644 --- a/helm/ocaml/cic/cicUtil.ml +++ b/helm/ocaml/cic/cicUtil.ml @@ -23,10 +23,11 @@ * 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,10 +161,21 @@ 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 | Cic.Implicit (Some `Hole), t -> [t] + | Cic.Implicit None,_ -> [] | Cic.Meta (_, ctxt1), Cic.Meta (_, ctxt2) -> List.concat (List.map2