X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Fsoftware%2Fcomponents%2Fng_kernel%2FoCic2NCic.ml;h=0854b624f157aa486fd8aae0f67f2eadd7bb9389;hb=5061952d0632ba8bc77be5cab11fab2f36e1e26f;hp=56159ffa4e91846f28785b5af4c2b5667cec0d68;hpb=28f01bb2d0e5f1b3f180b0b478267d2beb06a5fe;p=helm.git diff --git a/helm/software/components/ng_kernel/oCic2NCic.ml b/helm/software/components/ng_kernel/oCic2NCic.ml index 56159ffa4..0854b624f 100644 --- a/helm/software/components/ng_kernel/oCic2NCic.ml +++ b/helm/software/components/ng_kernel/oCic2NCic.ml @@ -46,10 +46,12 @@ let get_relevance ty = match CicReduction.whd context ty with Cic.Prod (n,s,t) -> not (is_proof_irrelevant context s)::aux (Some (n,Cic.Decl s)::context) t - | ty -> if is_proof_irrelevant context ty then raise InProp else [] + | _ -> [] + in aux [] ty +(* | ty -> if is_proof_irrelevant context ty then raise InProp else [] in try aux [] ty - with InProp -> [] + with InProp -> []*) ;; (* porcatissima *) @@ -502,10 +504,6 @@ and height_of_term ?(h=ref 0) t = 1 + !h ;; -(* we are lambda-lifting also variables that do not occur *) -(* ctx does not distinguish successive blocks of cofix, since there may be no - * lambda separating them *) -let convert_term uri t = (* k=true if we are converting a term to be pushed in a ctx or if we are converting the type of a fix; k=false if we are converting a term to be put in the body of a fix; @@ -763,7 +761,12 @@ let convert_term uri t = match ens with [] -> he,objs | _::_ -> NCic.Appl (he::ens),objs - in +;; + +(* we are lambda-lifting also variables that do not occur *) +(* ctx does not distinguish successive blocks of cofix, since there may be no + * lambda separating them *) +let convert_term uri t = aux false [] [] 0 uri t ;; @@ -841,3 +844,23 @@ let convert_obj uri obj = (*prerr_endline ("H(" ^ UriManager.string_of_uri uri ^ ") = " ^ string_of_int * (get_height uri));*) fixpoints @ [obj] ;; + +let convert_context uri = + let name_of = function Cic.Name s -> s | _ -> "_" in + List.fold_right + (function + | (Some (s, Cic.Decl t) as e) -> fun (nc,auxc,oc) -> + let t, _ = aux true oc auxc 0 uri t in + (name_of s, NCic.Decl t) :: nc, + Ce (lazy ((name_of s, NCic.Decl t),[])) :: auxc, e :: oc + | (Some (Cic.Name s, Cic.Def (t,ty)) as e) -> fun (nc,auxc,oc) -> + let t, _ = aux true oc auxc 0 uri t in + let t, _ = aux true oc auxc 0 uri ty in + (name_of s, NCic.Def (t,ty)) :: nc, + Ce (lazy ((name_of s, NCic.Def (t,ty)),[])) :: auxc, e :: oc + | None -> ... +;; + +let convert_term uri ctx t = + aux false [] [] 0 uri t +;;