X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;ds=sidebyside;f=helm%2Fsoftware%2Fcomponents%2Fng_kernel%2FnCic2OCic.ml;h=4686922df1afe6a619e2558b01fdc228d1186477;hb=1ebf8777baa6ab8624e02908f9c8b4b13a6a572f;hp=e6a15d3158902099616a4fd0a47ec33e7dacef97;hpb=4a4703054e9f022479ac7ab9cb96007984da7ef2;p=helm.git diff --git a/helm/software/components/ng_kernel/nCic2OCic.ml b/helm/software/components/ng_kernel/nCic2OCic.ml index e6a15d315..4686922df 100644 --- a/helm/software/components/ng_kernel/nCic2OCic.ml +++ b/helm/software/components/ng_kernel/nCic2OCic.ml @@ -1,17 +1,21 @@ +let nn_2_on = function + | "_" -> Cic.Anonymous + | s -> Cic.Name s +;; + let convert_term uri n_fl t = let rec convert_term k = function (* pass k along *) | NCic.Rel i -> Cic.Rel i | NCic.Meta _ -> assert false | NCic.Appl l -> Cic.Appl (List.map (convert_term k) l) | NCic.Prod (n,s,t) -> - Cic.Prod (Cic.Name n,convert_term k s, convert_term (k+1) t) + Cic.Prod (nn_2_on n,convert_term k s, convert_term (k+1) t) | NCic.Lambda (n,s,t) -> - Cic.Lambda(Cic.Name n,convert_term k s, convert_term (k+1) t) - | NCic.LetIn (n,_,s,t) -> - Cic.LetIn (Cic.Name n,convert_term k s, convert_term (k+1) t) + Cic.Lambda(nn_2_on n,convert_term k s, convert_term (k+1) t) + | NCic.LetIn (n,ty_s,s,t) -> + Cic.LetIn (nn_2_on n,convert_term k s,convert_term k ty_s, convert_term (k+1) t) | NCic.Sort NCic.Prop -> Cic.Sort Cic.Prop | NCic.Sort NCic.CProp -> Cic.Sort Cic.CProp - | NCic.Sort NCic.Set -> Cic.Sort Cic.Set | NCic.Sort (NCic.Type _) -> Cic.Sort (Cic.Type (CicUniv.fresh ())) | NCic.Implicit _ -> assert false | NCic.Const (NReference.Ref (_,u,NReference.Ind i)) -> @@ -29,7 +33,12 @@ let convert_term uri n_fl t = if NUri.eq u uri then Cic.Rel (n_fl - i + k) else - Cic.Const (NUri.ouri_of_nuri u,[]) + let ouri = NUri.ouri_of_nuri u in + let ouri = + UriManager.uri_of_string + (UriManager.buri_of_uri ouri ^ "/" ^ + UriManager.name_of_uri ouri ^ string_of_int i ^ ".con") in + Cic.Const (ouri,[]) | _ -> assert false in convert_term 0 t @@ -57,12 +66,22 @@ let convert_fix is_fix uri k fl = let convert_nobj = function | u,_,_,_,NCic.Constant (_, name, Some bo, ty, _) -> - Cic.Constant (name, Some (convert_term u 0 bo), convert_term u 0 ty, [],[]) + [NUri.ouri_of_nuri u,Cic.Constant + (name, Some (convert_term u 0 bo), convert_term u 0 ty, [],[])] | u,_,_,_,NCic.Constant (_, name, None, ty, _) -> - Cic.Constant (name, None, convert_term u 0 ty, [],[]) + [NUri.ouri_of_nuri u,Cic.Constant (name, None, convert_term u 0 ty, [],[])] | u,_,_,_,NCic.Fixpoint (is_fix, fl, _) -> - Cic.Constant (UriManager.name_of_uri (NUri.ouri_of_nuri u), - Some (convert_fix is_fix u 0 fl), - convert_term u 0 (let _,_,_,ty,_ = List.hd fl in ty), [], []) + List.map + (fun nth -> + let name = + UriManager.name_of_uri (NUri.ouri_of_nuri u) ^ string_of_int nth in + let buri = UriManager.buri_of_uri (NUri.ouri_of_nuri u) in + let uri = UriManager.uri_of_string (buri ^"/"^name^".con") in + uri, + Cic.Constant (name, + Some (convert_fix is_fix u nth fl), + convert_term u 0 (let _,_,_,ty,_ = List.hd fl in ty), [], [])) + (let rec seq = function 0 -> [0]|n -> n::seq (n-1) in + seq (List.length fl-1)) | _,_,_,_,NCic.Inductive _ -> assert false ;;