]> matita.cs.unibo.it Git - helm.git/blobdiff - helm/ocaml/tactics/tacticChaser.ml
debian version 0.6.3-2
[helm.git] / helm / ocaml / tactics / tacticChaser.ml
index f9c7feae7012589438ca3171d48d5e8407a4a6d1..831ccc6f4bedaf2cc4f32d77f4067aa25486948b 100644 (file)
@@ -75,10 +75,10 @@ match list_of_must with
            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) );
@@ -136,7 +136,7 @@ let matchConclusion2 mqi_handle ?(output_html = (fun _ -> ())) ~choose_must() st
     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 =
@@ -145,8 +145,8 @@ let matchConclusion2 mqi_handle ?(output_html = (fun _ -> ())) ~choose_must() st
   *)
   (* 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 " ^ 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))
@@ -159,8 +159,9 @@ let matchConclusion2 mqi_handle ?(output_html = (fun _ -> ())) ~choose_must() st
   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 List.filter (Filter_auto.filter_new_constants conn all_const) uris 
-    else Filter_auto.filter_uris conn all_const uris in 
+     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 *)
@@ -177,20 +178,20 @@ let matchConclusion2 mqi_handle ?(output_html = (fun _ -> ())) ~choose_must() st
       | (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 " ^ 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 " ^ string_of_int (List.length uris'));
    
      uris'
 ;;
@@ -233,14 +234,19 @@ let  searchTheorems mqi_handle (proof,goal) =
    List.map snd res in*)
  let order_goal_list proof goal1 goal2 =
    let _,metasenv,_,_ = proof in
-   let (ey1, ty1) =  
-          let (_, ey ,ty) = CicUtil.lookup_meta goal1 metasenv in
-           (ey, ty) in
-   let (ey2, ty2) =  
-          let (_, ey ,ty) = CicUtil.lookup_meta goal2 metasenv in
-           (ey, ty) 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
-   let ty_sort2 = CicTypeChecker.type_of_aux' metasenv ey1 ty2 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