X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_omdoc%2Fcic2acic.ml;h=37e56406e61db0b40b1d589287361a0323323e50;hb=c5d5bf37b1e4c4b9b499ed2cbfe27cf2ec181944;hp=f7c2317ba660985d0d44285fe12e750b7a002e50;hpb=0ce5aa521e96d3885cfdede3c31acb7bbb371029;p=helm.git diff --git a/helm/ocaml/cic_omdoc/cic2acic.ml b/helm/ocaml/cic_omdoc/cic2acic.ml index f7c2317ba..37e56406e 100644 --- a/helm/ocaml/cic_omdoc/cic2acic.ml +++ b/helm/ocaml/cic_omdoc/cic2acic.ml @@ -108,8 +108,11 @@ let acic_of_cic_context' seed ids_to_terms ids_to_father_ids ids_to_inner_sorts match CicReduction.whd context t with C.Sort C.Prop -> "Prop" | C.Sort C.Set -> "Set" - | C.Sort C.Type -> "Type" - | C.Sort C.CProp -> "CProp" + | C.Sort (C.Type _) -> "Type" (* TASSI OK*) + | C.Sort C.CProp -> "CProp" + | C.Meta _ -> +prerr_endline "Cic2acic: string_of_sort applied to a meta" ; + "?" | _ -> assert false in let ainnertypes,innertype,innersort,expected_available = @@ -131,7 +134,7 @@ let acic_of_cic_context' seed ids_to_terms ids_to_father_ids ids_to_inner_sorts {D.synthesized = (***CSC: patch per provare i tempi CicReduction.whd context (xxx_type_of_aux' metasenv context tt) ; *) -Cic.Sort Cic.Type ; +Cic.Sort (Cic.Type (CicUniv.fresh())); (* TASSI: non dovrebbe fare danni *) D.expected = None} in incr number_new_type_of_aux' ; @@ -159,7 +162,8 @@ Cic.Sort Cic.Type ; with Not_found -> (* l'inner-type non e' nella tabella ==> sort <> Prop *) (* CSC: Type or Set? I can not tell *) - None,Cic.Sort Cic.Type,"Type",false + None,Cic.Sort (Cic.Type (CicUniv.fresh())),"Type",false + (* TASSI non dovrebbe fare danni *) (* *) in let add_inner_type id = @@ -203,7 +207,7 @@ Cic.Sort Cic.Type ; | Some _, None -> assert false (* due to typing rules *)) canonical_context l)) | C.Sort s -> C.ASort (fresh_id'', s) - | C.Implicit -> C.AImplicit (fresh_id'') + | C.Implicit annotation -> C.AImplicit (fresh_id'', annotation) | C.Cast (v,t) -> xxx_add ids_to_inner_sorts fresh_id'' innersort ; if innersort = "Prop" then @@ -392,7 +396,7 @@ let asequent_of_sequent (metasenv:Cic.metasenv) (sequent:Cic.conjecture) = ids_to_terms,ids_to_father_ids,ids_to_inner_sorts,ids_to_hypotheses ;; -let acic_object_of_cic_object obj = +let acic_object_of_cic_object ?(eta_fix=true) obj = let module C = Cic in let module E = Eta_fixing in let ids_to_terms = Hashtbl.create 503 in @@ -411,27 +415,30 @@ let acic_object_of_cic_object obj = let aconjecture_of_conjecture' = aconjecture_of_conjecture seed ids_to_terms ids_to_father_ids ids_to_inner_sorts ids_to_inner_types ids_to_hypotheses hypotheses_seed in + let eta_fix metasenv context t = + if eta_fix then E.eta_fix metasenv context t else t + in let aobj = match obj with C.Constant (id,Some bo,ty,params) -> - let bo' = E.eta_fix [] bo in - let ty' = E.eta_fix [] ty in + let bo' = eta_fix [] [] bo in + let ty' = eta_fix [] [] ty in let abo = acic_term_of_cic_term' bo' (Some ty') in let aty = acic_term_of_cic_term' ty' None in C.AConstant ("mettereaposto",Some "mettereaposto2",id,Some abo,aty,params) | C.Constant (id,None,ty,params) -> - let ty' = E.eta_fix [] ty in + let ty' = eta_fix [] [] ty in let aty = acic_term_of_cic_term' ty' None in C.AConstant ("mettereaposto",None,id,None,aty,params) | C.Variable (id,bo,ty,params) -> - let ty' = E.eta_fix [] ty in + let ty' = eta_fix [] [] ty in let abo = match bo with None -> None | Some bo -> - let bo' = E.eta_fix [] bo in + let bo' = eta_fix [] [] bo in Some (acic_term_of_cic_term' bo' (Some ty')) in let aty = acic_term_of_cic_term' ty' None in @@ -442,16 +449,22 @@ let acic_object_of_cic_object obj = List.map (function (i,canonical_context,term) -> let canonical_context' = - List.map - (function - None -> None - | Some (n, C.Decl t)-> Some (n, C.Decl (E.eta_fix conjectures t)) - | Some (n, C.Def (t,None)) -> - Some (n, C.Def ((E.eta_fix conjectures t),None)) - | Some (_,C.Def (_,Some _)) -> assert false - ) canonical_context + List.fold_right + (fun d canonical_context' -> + let d' = + match d with + None -> None + | Some (n, C.Decl t)-> + Some (n, C.Decl (eta_fix conjectures canonical_context' t)) + | Some (n, C.Def (t,None)) -> + Some (n, + C.Def ((eta_fix conjectures canonical_context' t),None)) + | Some (_,C.Def (_,Some _)) -> assert false + in + d::canonical_context' + ) [] canonical_context in - let term' = E.eta_fix conjectures term in + let term' = eta_fix conjectures canonical_context' term in (i,canonical_context',term') ) conjectures in @@ -506,8 +519,8 @@ let acic_object_of_cic_object obj = (cid,i,(List.rev revacanonical_context),aterm) ) conjectures' in *) let time1 = Sys.time () in - let bo' = E.eta_fix conjectures' bo in - let ty' = E.eta_fix conjectures' ty in + let bo' = eta_fix conjectures' [] bo in + let ty' = eta_fix conjectures' [] ty in let time2 = Sys.time () in prerr_endline ("++++++++++ Tempi della eta_fix: "^ string_of_float (time2 -. time1)) ;