aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar filliatr <filliatr@85f007b7-540e-0410-9357-904b9bb8a0f7>1999-09-07 15:48:39 +0000
committerGravatar filliatr <filliatr@85f007b7-540e-0410-9357-904b9bb8a0f7>1999-09-07 15:48:39 +0000
commita437f37c232847ce08b2862cb51ccf3cfc88569a (patch)
tree784157b0686556cd668f76c3db9668da7099bf05
parentbe1e4a8b31b3082b6d70e77cce64c6515afcbfe7 (diff)
instanciation des opérateurs sur la bonne signature (celle de
définition, puisqu'elle ne peut pas changer, mais qu'elle peut être un préfixe) git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@45 85f007b7-540e-0410-9357-904b9bb8a0f7
-rw-r--r--toplevel/minicoq.ml13
1 files changed, 11 insertions, 2 deletions
diff --git a/toplevel/minicoq.ml b/toplevel/minicoq.ml
index 6eb89dab6..7255eb721 100644
--- a/toplevel/minicoq.ml
+++ b/toplevel/minicoq.ml
@@ -6,11 +6,14 @@ open Util
open Names
open Generic
open Term
+open Sign
open Constant
open Inductive
open Typing
open G_minicoq
+let (env : unit environment ref) = ref empty_environment
+
let lookup_var id =
let rec look n = function
| [] -> VAR id
@@ -19,18 +22,24 @@ let lookup_var id =
in
look 1
+let args sign = Array.of_list (List.map (fun id -> VAR id) (fst sign))
+
let rec globalize bv = function
| VAR id -> lookup_var id bv
| DOP1 (op,c) -> DOP1 (op, globalize bv c)
| DOP2 (op,c1,c2) -> DOP2 (op, globalize bv c1, globalize bv c2)
+ | DOPN (Const sp as op, _) ->
+ let cb = lookup_constant sp !env in DOPN (op, args cb.const_hyps)
+ | DOPN (MutInd (sp,_) as op, _) ->
+ let mib = lookup_mind sp !env in DOPN (op, args mib.mind_hyps)
+ | DOPN (MutConstruct ((sp,_),_) as op, _) ->
+ let mib = lookup_mind sp !env in DOPN (op, args mib.mind_hyps)
| DOPN (op,v) -> DOPN (op, Array.map (globalize bv) v)
| DOPL (op,l) -> DOPL (op, List.map (globalize bv) l)
| DLAM (na,c) -> DLAM (na, globalize (na::bv) c)
| DLAMV (na,v) -> DLAMV (na, Array.map (globalize (na::bv)) v)
| Rel _ | DOP0 _ as c -> c
-let (env : unit environment ref) = ref empty_environment
-
let check c =
let c = globalize [] c in
let (j,u) = safe_machine !env c in