From: Enrico Tassi Date: Tue, 30 Sep 2008 16:44:58 +0000 (+0000) Subject: ... X-Git-Tag: make_still_working~4718 X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=commitdiff_plain;h=5061952d0632ba8bc77be5cab11fab2f36e1e26f;p=helm.git ... --- diff --git a/helm/software/components/ng_kernel/oCic2NCic.ml b/helm/software/components/ng_kernel/oCic2NCic.ml index 0ead3ff2f..0854b624f 100644 --- a/helm/software/components/ng_kernel/oCic2NCic.ml +++ b/helm/software/components/ng_kernel/oCic2NCic.ml @@ -504,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; @@ -765,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 ;; @@ -843,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 +;; diff --git a/helm/software/components/ng_kernel/oCic2NCic.mli b/helm/software/components/ng_kernel/oCic2NCic.mli index 7ee5cb11d..02ee706ef 100644 --- a/helm/software/components/ng_kernel/oCic2NCic.mli +++ b/helm/software/components/ng_kernel/oCic2NCic.mli @@ -16,3 +16,4 @@ val nuri_of_ouri: UriManager.uri -> NUri.uri val reference_of_ouri: UriManager.uri -> NReference.spec -> NReference.reference val convert_obj: UriManager.uri -> Cic.obj -> NCic.obj list +val convert_term: UriManager.uri -> Cic.term -> NCic.term * NCic.obj list diff --git a/helm/software/components/ng_refiner/oMeta2nMeta.ml b/helm/software/components/ng_refiner/oMeta2nMeta.ml new file mode 100644 index 000000000..4993e482a --- /dev/null +++ b/helm/software/components/ng_refiner/oMeta2nMeta.ml @@ -0,0 +1,10 @@ +let convert_metasenv uri = + let new_metasenv, fixpoints = + List.fold_left + (fun (nm,fty) (i, ctx, ty) -> + let new_ty, fix_ty = OCic2NCic.convert_term uri ty in + + in + assert (fixpoints = []); + new_metasenv +;;