]> matita.cs.unibo.it Git - helm.git/blobdiff - components/tactics/auto.ml
moved to pkg-ocaml-maint
[helm.git] / components / tactics / auto.ml
index 0827b7ebcab8b6372c7f487b42077a063edf21d3..6a1ab20e6b798a4153720d54c1a5d6f1804dfbeb 100644 (file)
@@ -281,7 +281,7 @@ let init_cache_and_tables
            try
              let ty' = unfold context ty in
              if is_an_equality ty' then Some(t,ty') else None
-           with _ -> None) (* catturare l'eccezione giusta di unfold *)
+           with ProofEngineTypes.Fail _ -> None) 
       equations
   in
   let bag = Equality.mk_equality_bag () in
@@ -1249,7 +1249,7 @@ let prunable menv subst ty todo =
     | (D (_,_,T))::tl -> aux tl
     | _ -> false
   and no_progress variant = function
-    | [] -> prerr_endline "++++++++++++++++++++++++ no_progress"; true
+    | [] -> (*prerr_endline "++++++++++++++++++++++++ no_progress";*) true
     | D ((n,_,P) as g)::tl -> 
        (match calculate_goal_ty g subst menv with
            | None -> no_progress variant tl
@@ -1300,7 +1300,8 @@ let auto_main tables maxm context flags universe cache elems =
     | (m, s, _, _, [],_)::orlist ->
         (* complete success *)
         Proved (m, s, orlist, tables, cache, maxm)
-    | (m, s, size, don, (D (_,_,T))::todo, fl)::orlist ->
+    | (m, s, size, don, (D (_,_,T))::todo, fl)::orlist 
+      when not flags.AutoTypes.do_types ->
         (* skip since not Prop, don't even check if closed by side-effect *)
         aux tables maxm flags cache ((m, s, size, don, todo, fl)::orlist)
     | (m, s, size, don, (S(g, key, c,minsize) as op)::todo, fl)::orlist ->
@@ -1330,7 +1331,7 @@ let auto_main tables maxm context flags universe cache elems =
         (* timeout *)
         debug_print (lazy ("FAIL: TIMEOUT"));
         Gaveup (tables, cache, maxm)
-    | (m, s, size, don, (D (gno,depth,P as g))::todo, fl)::orlist as status ->
+    | (m, s, size, don, (D (gno,depth,_ as g))::todo, fl)::orlist as status ->
         (* attack g *)
         match calculate_goal_ty g s m with
         | None -> 
@@ -1345,7 +1346,7 @@ let auto_main tables maxm context flags universe cache elems =
              (debug_print (lazy ("FAIL: SIZE: goal: "^string_of_int gsize));
                aux tables maxm flags cache orlist)
             else if prunable_for_size flags s m todo then
-               (prerr_endline ("POTO at depth: "^(string_of_int depth));
+               (debug_print (lazy ("POTO at depth: "^(string_of_int depth)));
                 aux tables maxm flags cache orlist)
            else
             (* still to be proved *)
@@ -1519,6 +1520,7 @@ let flags_of_params params ?(for_applyS=false) () =
  let width = int "width" ((AutoTypes.default_flags()).AutoTypes.maxwidth) in
  let size = int "size" ((AutoTypes.default_flags()).AutoTypes.maxsize) in
  let gsize = int "gsize" ((AutoTypes.default_flags()).AutoTypes.maxgoalsizefactor) in
+ let do_type = bool "type" false in
  let timeout = int "timeout" 0 in
   { AutoTypes.maxdepth = 
       if use_only_paramod then 2 else depth;
@@ -1537,6 +1539,7 @@ let flags_of_params params ?(for_applyS=false) () =
     AutoTypes.close_more = close_more;
     AutoTypes.dont_cache_failures = false;
     AutoTypes.maxgoalsizefactor = gsize;
+    AutoTypes.do_types = do_type;
   }
 
 let applyS_tac ~dbd ~term ~params ~universe =
@@ -1716,8 +1719,8 @@ let auto_tac ~(dbd:HSql.dbd) ~params ~universe (proof, goal) =
       in
       match auto_main tables newmeta context flags universe cache [elem] with
         | Proved (metasenv,subst,_, tables,cache,_) -> 
-            prerr_endline 
-              ("TIME:"^string_of_float(Unix.gettimeofday()-.initial_time));
+            (*prerr_endline 
+              ("TIME:"^string_of_float(Unix.gettimeofday()-.initial_time));*)
             let proof,metasenv =
             ProofEngineHelpers.subst_meta_and_metasenv_in_proof
               proof goal subst metasenv
@@ -1753,7 +1756,7 @@ let solve_rewrite_tac ~universe ?(steps=1) (proof,goal as status)=
      (* we take the whole universe (no signature filtering) *)
      init_cache_and_tables false true false true universe (proof,goal) 
   in
-  let initgoal = [], [], ty in
+  let initgoal = [], metasenv, ty in
   let table = 
     let equalities = (Saturation.list_of_passive passive) in
     (* we demodulate using both actives passives *)
@@ -1788,7 +1791,7 @@ let demodulate_tac ~dbd ~universe (proof,goal)=
   let curi,metasenv,_subst,pbo,pty, attrs = proof in
   let metano,context,ty = CicUtil.lookup_meta goal metasenv in
   let irl = CicMkImplicit.identity_relocation_list_for_metavariable context in
-  let initgoal = [], [], ty in
+  let initgoal = [], metasenv, ty in
   let eq_uri = eq_of_goal ty in
   let (active,passive,bag), cache, maxm =
      init_cache_and_tables