]> matita.cs.unibo.it Git - helm.git/commitdiff
added a parameter to unshare universes
authorEnrico Tassi <enrico.tassi@inria.fr>
Fri, 11 Apr 2008 10:21:45 +0000 (10:21 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Fri, 11 Apr 2008 10:21:45 +0000 (10:21 +0000)
helm/software/components/cic/unshare.ml
helm/software/components/cic/unshare.mli

index e4d2cc74a43951cc64ad8c99677100e39b1d5d75..3205e4f622f444caea1fe59e00004ddc6e6ad70b 100644 (file)
@@ -25,8 +25,9 @@
 
 (* $Id$ *)
 
-let rec unshare =
+let unshare ?(fresh_univs=false) t =
  let module C = Cic in
+ let rec unshare =
   function
      C.Rel m -> C.Rel m
    | C.Var (uri,exp_named_subst) ->
@@ -43,6 +44,8 @@ let rec unshare =
         ) l
       in
        C.Meta(i,l')
+   | C.Sort s when not fresh_univs -> C.Sort s
+   | C.Sort (C.Type _) -> C.Sort (C.Type (CicUniv.fresh ()))
    | C.Sort s -> C.Sort s
    | C.Implicit info -> C.Implicit info
    | C.Cast (te,ty) -> C.Cast (unshare te, unshare ty)
@@ -83,3 +86,6 @@ let rec unshare =
          fl
       in
        C.CoFix (i, liftedfl)
+ in
+  unshare t
+;;
index 5582abcbf31517f50ccb96adc035d965786de714..a40be17ba066932b37124dd485917a837116f6ba 100644 (file)
@@ -23,4 +23,4 @@
  * http://cs.unibo.it/helm/.
  *)
 
-val unshare : Cic.term -> Cic.term
+val unshare : ?fresh_univs:bool -> Cic.term -> Cic.term