aboutsummaryrefslogtreecommitdiff
path: root/kernel/sign.ml
diff options
context:
space:
mode:
authorherbelin2000-01-26 15:01:55 +0000
committerherbelin2000-01-26 15:01:55 +0000
commitdaf4ef5bb4138eb2ab9b7bf39d1c6a08984b8c01 (patch)
tree08b8482a9e974697f961993d039e7274ea1e1d99 /kernel/sign.ml
parent40183da6b54d8deef242bac074079617d4a657c2 (diff)
Abstraction de l'implémentation des signatures de Sign en vue intégration du let-in
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@281 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'kernel/sign.ml')
-rw-r--r--kernel/sign.ml11
1 files changed, 11 insertions, 0 deletions
diff --git a/kernel/sign.ml b/kernel/sign.ml
index 0b34c7edf3..00a160ffd6 100644
--- a/kernel/sign.ml
+++ b/kernel/sign.ml
@@ -53,6 +53,7 @@ let list_of_sign (ids,tys) =
try List.combine ids tys
with _ -> anomaly "Corrupted signature"
+
let make_sign = List.split
let do_sign f (ids,tys) = List.iter2 f ids tys
@@ -163,6 +164,9 @@ let dbindv sign cl =
and sign' = tl_sign sign in
(ty,DLAMV(Name id,Array.map (subst_var id) cl))
+(* de Bruijn environments *)
+
+let nil_dbsign = []
(* Signatures + de Bruijn environments *)
@@ -220,6 +224,13 @@ let map_var_env f (ENVIRON((dom,rang),r)) =
(fun na x (doml,rangl) -> (na::doml,(f x)::rangl))
dom rang ([],[]),r)
+let number_of_rels (ENVIRON(_,db)) = List.length db
+
+let change_name_env (ENVIRON(sign,db)) j id =
+ match list_chop (j-1) db with
+ | db1,((_,ty)::db2) -> ENVIRON(sign,db1@(Name id,ty)::db2)
+ | _ -> raise Not_found
+
let unitize_env env = map_rel_env (fun _ -> ()) env
type ('b,'a) search_result =