proper consideration of chained facts in 'try0' minimization
authorblanchet
Tue, 17 May 2016 08:40:24 +0200
changeset 63097 ee8edbcbb4ad
parent 63096 7910b1db2596
child 63098 56f03591898b
child 63099 af0e964aad7b
proper consideration of chained facts in 'try0' minimization
src/HOL/Tools/Sledgehammer/sledgehammer.ML
src/HOL/Tools/Sledgehammer/sledgehammer_isar_minimize.ML
--- a/src/HOL/Tools/Sledgehammer/sledgehammer.ML	Sat May 14 22:00:44 2016 +0200
+++ b/src/HOL/Tools/Sledgehammer/sledgehammer.ML	Tue May 17 08:40:24 2016 +0200
@@ -94,7 +94,7 @@
                 else
                   let
                     val (time', used_names') =
-                      minimized_isar_step ctxt time (mk_step fact_names [meth])
+                      minimized_isar_step ctxt chained time (mk_step fact_names [meth])
                       ||> (facts_of_isar_step #> snd)
                     val used_facts' = filter (member (op =) used_names' o fst) used_facts
                   in
--- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar_minimize.ML	Sat May 14 22:00:44 2016 +0200
+++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar_minimize.ML	Tue May 17 08:40:24 2016 +0200
@@ -12,7 +12,8 @@
   type isar_preplay_data = Sledgehammer_Isar_Preplay.isar_preplay_data
 
   val keep_fastest_method_of_isar_step : isar_preplay_data -> isar_step -> isar_step
-  val minimized_isar_step : Proof.context -> Time.time -> isar_step -> Time.time * isar_step
+  val minimized_isar_step : Proof.context -> thm list -> Time.time -> isar_step ->
+    Time.time * isar_step
   val minimize_isar_step_dependencies : Proof.context -> isar_preplay_data Unsynchronized.ref ->
     isar_step -> isar_step
   val postprocess_isar_proof_remove_show_stuttering : isar_proof -> isar_proof
@@ -37,7 +38,7 @@
 
 val slack = seconds 0.025
 
-fun minimized_isar_step ctxt time
+fun minimized_isar_step ctxt chained time
     (Prove (qs, xs, l, t, subproofs, (lfs0, gfs0), meths as meth :: _, comment)) =
   let
     fun mk_step_lfs_gfs lfs gfs =
@@ -45,7 +46,7 @@
 
     fun minimize_half _ min_facts [] time = (min_facts, time)
       | minimize_half mk_step min_facts (fact :: facts) time =
-        (case preplay_isar_step_for_method ctxt [] (time + slack) meth
+        (case preplay_isar_step_for_method ctxt chained (time + slack) meth
             (mk_step (min_facts @ facts)) of
           Played time' => minimize_half mk_step min_facts facts time'
         | _ => minimize_half mk_step (fact :: min_facts) facts time)
@@ -64,7 +65,7 @@
         fun old_data_for_method meth' =
           (meth', peek_at_outcome (preplay_outcome_of_isar_step_for_method (!preplay_data) l meth'))
 
-        val (time', step') = minimized_isar_step ctxt time step
+        val (time', step') = minimized_isar_step ctxt [] time step
       in
         set_preplay_outcomes_of_isar_step ctxt time' preplay_data step'
           ((meth, Played time') :: (if step' = step then map old_data_for_method meths else []));