]> matita.cs.unibo.it Git - helm.git/commitdiff
metas for terms have height 3
authorEnrico Tassi <enrico.tassi@inria.fr>
Fri, 28 Nov 2008 16:17:22 +0000 (16:17 +0000)
committerEnrico Tassi <enrico.tassi@inria.fr>
Fri, 28 Nov 2008 16:17:22 +0000 (16:17 +0000)
helm/software/components/ng_refiner/nCicMetaSubst.ml
helm/software/components/ng_refiner/nCicMetaSubst.mli
helm/software/components/ng_refiner/nCicRefiner.ml

index 4c44221ad0dc5e1845b039773e647ba7cb92679d..5e72d90c77eac85827b0cef8ae790b9f51b40396 100644 (file)
@@ -342,27 +342,25 @@ let delift metasenv subst context n l t =
 ;;
 
 let mk_meta ?name metasenv context ty = 
-  match ty with
-  | `Typeless ->
-    let n = newmeta () in
-    let ty = NCic.Implicit (`Typeof n) in
-    let menv_entry = (n, (name, context, ty)) in
-    menv_entry :: metasenv,NCic.Meta (n, (0,NCic.Irl (List.length context))), ty
-  | `Type 
-  | `Term ->
-    let context_for_ty = if ty = `Type then [] else context in
-    let n = newmeta () in
-    let ty_menv_entry = (n, (name,context_for_ty, NCic.Implicit (`Typeof n))) in
-    let m = newmeta () in
-    let ty = NCic.Meta (n, (0,NCic.Irl (List.length context_for_ty))) in
-    let menv_entry = (m, (name, context, ty)) in
-    menv_entry :: ty_menv_entry :: metasenv, 
-      NCic.Meta (m, (0,NCic.Irl (List.length context))), ty
+  let tyof = function Some s -> Some ("typeof_"^s) | None -> None in
+  let rec mk_meta name n metasenv context = function
   | `WithType ty ->
-    let n = newmeta () in
     let len = List.length context in
     let menv_entry = (n, (name, context, ty)) in
     menv_entry :: metasenv, NCic.Meta (n, (0,NCic.Irl len)), ty
+  | `Sort ->
+    let ty = NCic.Implicit (`Typeof n) in
+    mk_meta (tyof name) n metasenv [] (`WithType ty)
+  | `Type ->
+    let metasenv, ty, _ = 
+      mk_meta (tyof name) (newmeta ()) metasenv context `Sort in
+    mk_meta name n metasenv context (`WithType ty)
+  | `Term ->
+    let metasenv, ty, _ = 
+      mk_meta (tyof name) (newmeta ()) metasenv context `Type in
+    mk_meta name n metasenv context (`WithType ty)
+  in
+    mk_meta name (newmeta ()) metasenv context ty
 ;;
 
 let saturate ?(delta=0) metasenv context ty goal_arity =
index ca2bfb71415c3776e1550c3b81103594187dc047..21ac5c3ccce704a8473cd7cc7f23f53c1d33d559 100644 (file)
@@ -56,7 +56,7 @@ val restrict:
 val mk_meta: 
    ?name:string -> 
    NCic.metasenv -> NCic.context -> 
-    [ `WithType of NCic.term | `Term | `Type | `Typeless ] -> 
+    [ `WithType of NCic.term | `Term | `Type | `Sort ] -> 
     NCic.metasenv * NCic.term * NCic.term (* menv, instance, type *)
 
 (* returns the resulting type, the metasenv and the arguments *)
index 05862d9dab7f63ed4616119766f456f2660a3b97..8c6c94cb576f30c1397aacecfe4966ab9f0c49b8 100644 (file)
@@ -40,7 +40,7 @@ let wrap_exc msg = function
 let exp_implicit metasenv context expty =
  let foo x = match expty with Some t -> `WithType t | None -> x in
  function      
-  | `Closed -> NCicMetaSubst.mk_meta metasenv [] (foo `Type)
+  | `Closed -> NCicMetaSubst.mk_meta metasenv [] (foo `Term)
   | `Type -> NCicMetaSubst.mk_meta metasenv context (foo `Type)
   | `Term -> NCicMetaSubst.mk_meta metasenv context (foo `Term)
   | _ -> assert false