diff options
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/sign.ml | 8 | ||||
| -rw-r--r-- | kernel/sign.mli | 1 |
2 files changed, 7 insertions, 2 deletions
diff --git a/kernel/sign.ml b/kernel/sign.ml index 96531ef496..efdc08a3fb 100644 --- a/kernel/sign.ml +++ b/kernel/sign.ml @@ -36,6 +36,10 @@ let pop_named_decl id = function | (id',_,_) :: sign -> assert (id = id'); sign | [] -> assert false let ids_of_named_context = List.map (fun (id,_,_) -> id) +let rec instance_from_named_context = function + | (id,None,_) :: sign -> mkVar id :: instance_from_named_context sign + | _ :: sign -> instance_from_named_context sign + | [] -> [] let map_named_context = map let rec mem_named_context id = function | (id',_,_) :: _ when id=id' -> true @@ -98,8 +102,8 @@ let map_rel_context = map let instantiate_sign sign args = let rec instrec = function | ((id,None,_) :: sign, c::args) -> (id,c) :: (instrec (sign,args)) - | ((id,Some c,_) :: sign, args) -> (id,c) :: (instrec (sign,args)) - | ([],[]) -> [] + | ((id,Some c,_) :: sign, args) -> instrec (sign,args) + | ([],[]) -> [] | ([],_) | (_,[]) -> anomaly "Signature and its instance do not match" in diff --git a/kernel/sign.mli b/kernel/sign.mli index 7ed3ae9203..38d0580429 100644 --- a/kernel/sign.mli +++ b/kernel/sign.mli @@ -34,6 +34,7 @@ val it_named_context_quantifier : val instantiate_sign : named_context -> constr list -> (identifier * constr) list val keep_hyps : Idset.t -> named_context -> named_context +val instance_from_named_context : named_context -> constr list (*s Signatures of ordered optionally named variables, intended to be accessed by de Bruijn indices *) |
