if
let time = Unix.gettimeofday() in
(try
- ignore
+ ignore(ProofEngineTypes.apply_tactic
(PrimitiveTactics.apply_tac
~term:(MQueryMisc.term_of_cic_textual_parser_uri
- (MQueryMisc.cic_textual_parser_uri_of_string uri))
+ (MQueryMisc.cic_textual_parser_uri_of_string uri)))
status);
let time1 = Unix.gettimeofday() in
prerr_endline (Printf.sprintf "%1.3f" (time1 -. time) );
let len = String.length s in
let suffix = String.sub s (len-4) 4 in
not (suffix = ".var") in
- let uris = List.filter isvar uris in
+ let uris = List.filter isvar uris in
(* delete all not "cic:/Coq" uris *)
(*
let uris =
(* TODO ristretto per ragioni di efficienza *)
List.filter (fun _,uri -> Pcre.pmatch ~pat:"^cic:/Coq/" uri) uris in
*)
- (*
- let uris =
- List.filter (fun _,uri -> not (Pcre.pmatch ~pat:"^cic:/Coq/ring" uri)) uris in
- *)
(* concl_cost are the costants in the conclusion of the proof
while hyp_const are the constants in the hypothesis *)
- let (_,concl_const) = NewConstraints.constants_of ty in
- prerr_endline ("Ne sono rimasti " ^ string_of_int (List.length uris));
+ let (main_concl,concl_const) = NewConstraints.mainandcons ty in
+ prerr_endline ("Ne sono rimasti 1 " ^ string_of_int (List.length uris));
let hyp t set =
match t with
Some (_,Cic.Decl t) -> (NewConstraints.StringSet.union set (NewConstraints.constants_concl t))
List.fold_right hyp ey NewConstraints.StringSet.empty in
prerr_endline (NewConstraints.pp_StringSet (NewConstraints.StringSet.union hyp_const concl_const));
(* uris with new constants in the proof are filtered *)
- let uris = List.filter (Filter_auto.filter_new_constants conn (NewConstraints.StringSet.union hyp_const concl_const)) uris in
+ let all_const = NewConstraints.StringSet.union hyp_const concl_const in
+ let uris =
+ if (List.length uris < (Filter_auto.power 2 (List.length (NewConstraints.StringSet.elements all_const))))
+ then
+ (prerr_endline("metodo vecchio");List.filter (Filter_auto.filter_new_constants conn all_const) uris)
+ else Filter_auto.filter_uris conn all_const uris main_concl in
(*
let uris =
(* ristretto all cache *)
| (m,uri)::tl ->
let tl' = filter_out tl in
try
+ prerr_endline ("STO APPLICANDO " ^ uri);
(m,
- (prerr_endline ("STO APPLICANDO " ^ uri);
- (PrimitiveTactics.apply_tac
+ (ProofEngineTypes.apply_tactic( PrimitiveTactics.apply_tac
~term:(MQueryMisc.term_of_cic_textual_parser_uri
- (MQueryMisc.cic_textual_parser_uri_of_string uri))
- status)))::tl'
+ (MQueryMisc.cic_textual_parser_uri_of_string uri)))
+ status))::tl'
(* with ProofEngineTypes.Fail _ -> tl' *)
(* patch to cover CSC's exportation bug *)
with _ -> tl'
in
- prerr_endline ("Ne sono rimasti " ^ string_of_int (List.length uris));
+ prerr_endline ("Ne sono rimasti 2 " ^ string_of_int (List.length uris));
filter_out uris
in
- prerr_endline ("Ne sono rimasti " ^ string_of_int (List.length uris'));
+ prerr_endline ("Ne sono rimasti 3 " ^ string_of_int (List.length uris'));
+
uris'
;;
List.nth list_of_must 0 *)
let searchTheorems mqi_handle (proof,goal) =
-(*prerr_endline "1";*)
let subproofs =
matchConclusion2 mqi_handle ~choose_must() (proof, goal) in
let res =
subproofs
in
(* now we may drop the prefix tag *)
- List.map snd res
+ (*let res' =
+ List.map snd res in*)
+ let order_goal_list proof goal1 goal2 =
+ let _,metasenv,_,_ = proof in
+ let (_, ey1, ty1) = CicUtil.lookup_meta goal1 metasenv in
+ let (_, ey2, ty2) = CicUtil.lookup_meta goal2 metasenv in
+(*
+ prerr_endline "PRIMA DELLA PRIMA TYPE OF " ;
+*)
+ let ty_sort1 = CicTypeChecker.type_of_aux' metasenv ey1 ty1 in
+(*
+ prerr_endline (Printf.sprintf "PRIMA DELLA SECONDA TYPE OF %s \n### %s @@@%s " (CicMetaSubst.ppmetasenv metasenv []) (CicMetaSubst.ppcontext [] ey2) (CicMetaSubst.ppterm [] ty2));
+*)
+ let ty_sort2 = CicTypeChecker.type_of_aux' metasenv ey2 ty2 in
+(*
+ prerr_endline "DOPO LA SECONDA TYPE OF " ;
+*)
+ let prop1 = if CicReduction.are_convertible
+ ey1 (Cic.Sort Cic.Prop) ty_sort1 then 0
+ else 1 in
+ let prop2 = if CicReduction.are_convertible
+ ey2 (Cic.Sort Cic.Prop) ty_sort2 then 0
+ else 1 in
+ prop1 - prop2 in
+ List.map (fun (level,(proof,goallist)) -> (proof, (List.stable_sort (order_goal_list proof) goallist))) res
;;