src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
changeset 56606 43473497fb65
parent 56605 4d63fffcde8d
child 56608 d9d31354834e
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Mon Feb 03 10:14:18 2014 +0100
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Mon Feb 03 10:14:18 2014 +0100
     1.3 @@ -135,10 +135,8 @@
     1.4          val metislike_methods = insert (op =) (Metis_Method alt_metis_args) metislike_methods0
     1.5  
     1.6          val (params, _, concl_t) = strip_subgoal goal subgoal ctxt
     1.7 -        val (_, ctxt) =
     1.8 -          params
     1.9 -          |> map (fn (s, T) => (Binding.name s, SOME T, NoSyn))
    1.10 -          |> (fn fixes => ctxt |> Variable.set_body false |> Proof_Context.add_fixes fixes)
    1.11 +        val fixes = map (fn (s, T) => (Binding.name s, SOME T, NoSyn)) params
    1.12 +        val ctxt = ctxt |> Variable.set_body false |> Proof_Context.add_fixes fixes |> snd
    1.13  
    1.14          val do_preplay = preplay_timeout <> Time.zeroTime
    1.15          val try0_isar = try0_isar andalso do_preplay
    1.16 @@ -283,19 +281,14 @@
    1.17            |> postprocess_isar_proof_remove_unreferenced_steps I
    1.18            |> relabel_isar_proof_canonically
    1.19  
    1.20 -        val preplay_ctxt = ctxt
    1.21 +        val ctxt = ctxt
    1.22            |> enrich_context_with_local_facts canonical_isar_proof
    1.23            |> silence_reconstructors debug
    1.24  
    1.25          val preplay_data = Unsynchronized.ref Canonical_Label_Tab.empty
    1.26  
    1.27 -        fun init_preplay_outcomes (step as Prove (_, _, l, _, _, (_, meths))) =
    1.28 -            set_preplay_outcomes_of_isar_step preplay_data l (map (fn meth => (meth,
    1.29 -                Lazy.lazy (fn () => preplay_isar_step preplay_ctxt preplay_timeout meth step)))
    1.30 -              meths)
    1.31 -          | init_preplay_outcomes _ = ()
    1.32 -
    1.33 -        val _ = fold_isar_steps (K o init_preplay_outcomes)
    1.34 +        val _ = fold_isar_steps (fn meth =>
    1.35 +            K (set_preplay_outcomes_of_isar_step ctxt preplay_timeout preplay_data meth []))
    1.36            (steps_of_isar_proof canonical_isar_proof) ()
    1.37  
    1.38          fun str_of_preplay_outcome outcome =
    1.39 @@ -316,12 +309,12 @@
    1.40          val (play_outcome, isar_proof) =
    1.41            canonical_isar_proof
    1.42            |> tap (trace_isar_proof "Original")
    1.43 -          |> compress_isar_proof preplay_ctxt compress_isar preplay_data
    1.44 +          |> compress_isar_proof ctxt compress_isar preplay_data
    1.45            |> tap (trace_isar_proof "Compressed")
    1.46 -          |> try0_isar ? try0_isar_proof preplay_ctxt preplay_timeout preplay_data
    1.47 +          |> try0_isar ? try0_isar_proof ctxt preplay_timeout preplay_data
    1.48            |> tap (trace_isar_proof "Tried0")
    1.49            |> postprocess_isar_proof_remove_unreferenced_steps
    1.50 -               (try0_isar ? minimize_isar_step_dependencies preplay_ctxt preplay_data)
    1.51 +               (try0_isar ? minimize_isar_step_dependencies ctxt preplay_data)
    1.52            |> tap (trace_isar_proof "Minimized")
    1.53            |> `(preplay_outcome_of_isar_proof (!preplay_data))
    1.54            ||> chain_isar_proof