proper exception handling; reraise interrupt exceptions
authorsmolkas
Wed, 09 Jan 2013 20:29:50 +0100
changeset 5180034e8e0e86639
parent 51799 cbc7002cc273
child 51801 af8ecf09a58c
proper exception handling; reraise interrupt exceptions
src/HOL/Tools/Sledgehammer/sledgehammer_shrink.ML
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_shrink.ML	Wed Jan 09 15:48:34 2013 +0100
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_shrink.ML	Wed Jan 09 20:29:50 2013 +0100
     1.3 @@ -69,7 +69,8 @@
     1.4      in
     1.5        fun handle_metis_fail try_metis () =
     1.6          try_metis () handle exp =>
     1.7 -          (if debug then raise exp else metis_fail := true; SOME Time.zeroTime)
     1.8 +          (if Exn.is_interrupt exp orelse debug then reraise exp 
     1.9 +           else metis_fail := true; SOME Time.zeroTime)
    1.10        fun get_time lazy_time =
    1.11          if !metis_fail then SOME Time.zeroTime else Lazy.force lazy_time
    1.12        val metis_fail = fn () => !metis_fail
    1.13 @@ -208,11 +209,12 @@
    1.14                  (Prove (qs2, label2, t, By_Metis (lfs2, gfs2))) =>
    1.15                    (fn by => Prove (qs2, label2, t, by), lfs2, gfs2)
    1.16                | (Obtain(qs2, xs, label2, t, By_Metis (lfs2, gfs2))) =>
    1.17 -                  (fn by => Obtain (qs2, xs, label2, t, by), lfs2, gfs2) )
    1.18 +                  (fn by => Obtain (qs2, xs, label2, t, by), lfs2, gfs2)
    1.19 +              | _ => error "Internal error: unmergeable Isar steps" )
    1.20              val lfs = remove (op =) label1 lfs2 |> union (op =) lfs1
    1.21              val gfs = union (op =) gfs1 gfs2
    1.22            in step_constructor (By_Metis (lfs, gfs)) end
    1.23 -        | merge _ _ = error "Internal error: Unmergeable Isar steps"
    1.24 +        | merge _ _ = error "Internal error: unmergeable Isar steps"
    1.25  
    1.26        fun try_merge metis_time (s1, i) (s2, j) =
    1.27          (case get i metis_time |> Lazy.force of