src/HOL/Tools/Sledgehammer/sledgehammer_shrink.ML
changeset 50265 9eafa567e061
parent 50264 a9ec48b98734
child 50267 1da2e67242d6
equal deleted inserted replaced
50264:a9ec48b98734 50265:9eafa567e061
     1 (*  Title:      HOL/Tools/Sledgehammer/sledgehammer_shrink.ML
     1 (*  Title:      HOL/Tools/Sledgehammer/sledgehammer_shrink.ML
     2     Author:     Jasmin Blanchette, TU Muenchen
     2     Author:     Jasmin Blanchette, TU Muenchen
     3     Author:     Steffen Juilf Smolka, TU Muenchen
     3     Author:     Steffen Juilf Smolka, TU Muenchen
     4 
     4 
     5 Shrinking of isar proofs reconstructed from ATP proofs.
     5 Shrinking and preplaying of reconstructed isar proofs.
     6 *)
     6 *)
     7 
     7 
     8 signature SLEDGEHAMMER_SHRINK =
     8 signature SLEDGEHAMMER_SHRINK =
     9 sig
     9 sig
    10   type isar_step = Sledgehammer_Proof.isar_step
    10   type isar_step = Sledgehammer_Proof.isar_step
    14 end
    14 end
    15 
    15 
    16 structure Sledgehammer_Shrink (* : SLEDGEHAMMER_SHRINK *) =
    16 structure Sledgehammer_Shrink (* : SLEDGEHAMMER_SHRINK *) =
    17 struct
    17 struct
    18 
    18 
       
    19 open Sledgehammer_Util
    19 open Sledgehammer_Proof
    20 open Sledgehammer_Proof
    20 
    21 
    21 (* Parameters *)
    22 (* Parameters *)
    22 val merge_timeout_slack = 1.2
    23 val merge_timeout_slack = 1.2
    23 
    24 
   138         (case get j metis_time |> Lazy.force of
   139         (case get j metis_time |> Lazy.force of
   139           NONE => (NONE, metis_time)
   140           NONE => (NONE, metis_time)
   140         | SOME t2 =>
   141         | SOME t2 =>
   141           let
   142           let
   142             val s12 = merge s1 s2
   143             val s12 = merge s1 s2
   143             val timeout =
   144             val timeout = time_mult merge_timeout_slack (t1 + t2)
   144               Time.+ (t1, t2) |> Time.toReal |> curry Real.* merge_timeout_slack
       
   145                       |> Time.fromReal
       
   146           in
   145           in
   147             case try_metis timeout s12 () of
   146             case try_metis timeout s12 () of
   148               NONE => (NONE, metis_time)
   147               NONE => (NONE, metis_time)
   149             | some_t12 =>
   148             | some_t12 =>
   150               (SOME s12, metis_time
   149               (SOME s12, metis_time