X-Git-Url: http://matita.cs.unibo.it/gitweb/?a=blobdiff_plain;f=helm%2Focaml%2Fcic_omdoc%2Fcic2acic.ml;h=5b95ab4d687290315d17dbfcd45a653776c80486;hb=e01753bf730b3c4e50df0655f7940f8720b16524;hp=37e56406e61db0b40b1d589287361a0323323e50;hpb=c5d5bf37b1e4c4b9b499ed2cbfe27cf2ec181944;p=helm.git diff --git a/helm/ocaml/cic_omdoc/cic2acic.ml b/helm/ocaml/cic_omdoc/cic2acic.ml index 37e56406e..5b95ab4d6 100644 --- a/helm/ocaml/cic_omdoc/cic2acic.ml +++ b/helm/ocaml/cic_omdoc/cic2acic.ml @@ -37,7 +37,7 @@ let type_of_aux'_add_time = ref 0.0;; let xxx_type_of_aux' m c t = let t1 = Sys.time () in - let res = CicTypeChecker.type_of_aux' m c t in + let res,_ = CicTypeChecker.type_of_aux' m c t CicUniv.empty_ugraph in let t2 = Sys.time () in type_of_aux'_add_time := !type_of_aux'_add_time +. t2 -. t1 ; res @@ -81,9 +81,10 @@ let acic_of_cic_context' seed ids_to_terms ids_to_father_ids ids_to_inner_sorts let module D = DoubleTypeInference in let module C = Cic in let fresh_id' = fresh_id seed ids_to_terms ids_to_father_ids in - let time1 = Sys.time () in +(* let time1 = Sys.time () in *) let terms_to_types = let time0 = Sys.time () in +(* let prova = CicTypeChecker.type_of_aux' metasenv context t in let time1 = Sys.time () in prerr_endline ("*** Fine type_inference:" ^ (string_of_float (time1 -. time0))); @@ -91,10 +92,14 @@ let acic_of_cic_context' seed ids_to_terms ids_to_father_ids ids_to_inner_sorts let time2 = Sys.time () in prerr_endline ("*** Fine double_type_inference:" ^ (string_of_float (time2 -. time1))); res +*) + D.double_type_of metasenv context t expectedty in +(* let time2 = Sys.time () in prerr_endline ("++++++++++++ Tempi della double_type_of: "^ string_of_float (time2 -. time1)) ; +*) let rec aux computeinnertypes father context idrefs tt = let fresh_id'' = fresh_id' father tt in (*CSC: computeinnertypes era true, il che e' proprio sbagliato, no? *) @@ -113,7 +118,9 @@ let acic_of_cic_context' seed ids_to_terms ids_to_father_ids ids_to_inner_sorts | C.Meta _ -> prerr_endline "Cic2acic: string_of_sort applied to a meta" ; "?" - | _ -> assert false + | t -> +prerr_endline ("Cic2acic: string_of_sort applied to: " ^ CicPp.ppterm t) ; + assert false in let ainnertypes,innertype,innersort,expected_available = (*CSC: Here we need the algorithm for Coscoy's double type-inference *) @@ -192,9 +199,7 @@ Cic.Sort (Cic.Type (CicUniv.fresh())); (* TASSI: non dovrebbe fare danni *) in C.AVar (fresh_id'', uri,exp_named_subst') | C.Meta (n,l) -> - let (_,canonical_context,_) = - List.find (function (m,_,_) -> n = m) metasenv - in + let (_,canonical_context,_) = CicUtil.lookup_meta n metasenv in xxx_add ids_to_inner_sorts fresh_id'' innersort ; if innersort = "Prop" && expected_available then add_inner_type fresh_id'' ; @@ -329,12 +334,15 @@ Cic.Sort (Cic.Type (CicUniv.fresh())); (* TASSI: non dovrebbe fare danni *) ) fresh_idrefs funs ) in +(* let timea = Sys.time () in let res = aux true None context idrefs t in let timeb = Sys.time () in prerr_endline ("+++++++++++++ Tempi della aux dentro alla acic_of_cic: "^ string_of_float (timeb -. timea)) ; res +*) + aux true None context idrefs t ;; let acic_of_cic_context metasenv context idrefs t = @@ -518,18 +526,21 @@ let acic_object_of_cic_object ?(eta_fix=true) obj = in (cid,i,(List.rev revacanonical_context),aterm) ) conjectures' in *) - let time1 = Sys.time () in +(* let time1 = Sys.time () 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)) ; hashtbl_add_time := 0.0 ; type_of_aux'_add_time := 0.0 ; DoubleTypeInference.syntactic_equality_add_time := 0.0 ; +*) let abo = acic_term_of_cic_term_context' conjectures' [] [] bo' (Some ty') in let aty = acic_term_of_cic_term_context' conjectures' [] [] ty' None in +(* let time3 = Sys.time () in prerr_endline ("++++++++++++ Tempi della hashtbl_add_time: " ^ string_of_float !hashtbl_add_time) ; @@ -543,6 +554,7 @@ let acic_object_of_cic_object ?(eta_fix=true) obj = ("++++++++++ Tempi della acic_of_cic: " ^ string_of_float (time3 -. time2)) ; prerr_endline ("++++++++++ Numero di iterazioni della acic_of_cic: " ^ string_of_int !seed) ; +*) C.ACurrentProof ("mettereaposto","mettereaposto2",id,aconjectures,abo,aty,params) | C.InductiveDefinition (tys,params,paramsno) ->