src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
changeset 55253 cfd276a7dbeb
parent 55245 c402981f74c1
child 55256 6c317e374614
equal deleted inserted replaced
55252:0dc4993b4f56 55253:cfd276a7dbeb
   135           |> map (fn (s, T) => (Binding.name s, SOME T, NoSyn))
   135           |> map (fn (s, T) => (Binding.name s, SOME T, NoSyn))
   136           |> (fn fixes => ctxt |> Variable.set_body false |> Proof_Context.add_fixes fixes)
   136           |> (fn fixes => ctxt |> Variable.set_body false |> Proof_Context.add_fixes fixes)
   137 
   137 
   138         val do_preplay = preplay_timeout <> Time.zeroTime
   138         val do_preplay = preplay_timeout <> Time.zeroTime
   139         val try0_isar = try0_isar andalso do_preplay
   139         val try0_isar = try0_isar andalso do_preplay
       
   140         val compress_isar = if isar_proofs = NONE andalso do_preplay then 1000.0 else compress_isar
   140 
   141 
   141         val is_fixed = Variable.is_declared ctxt orf can Name.dest_skolem
   142         val is_fixed = Variable.is_declared ctxt orf can Name.dest_skolem
   142         fun skolems_of t = Term.add_frees t [] |> filter_out (is_fixed o fst) |> rev
   143         fun skolems_of t = Term.add_frees t [] |> filter_out (is_fixed o fst) |> rev
   143 
   144 
   144         fun get_role keep_role ((num, _), role, t, rule, _) =
   145         fun get_role keep_role ((num, _), role, t, rule, _) =
   277           |> isar_proof true params assms lems
   278           |> isar_proof true params assms lems
   278           |> postprocess_isar_proof_remove_unreferenced_steps I
   279           |> postprocess_isar_proof_remove_unreferenced_steps I
   279           |> relabel_isar_proof_canonically
   280           |> relabel_isar_proof_canonically
   280 
   281 
   281         val preplay_data as {preplay_outcome, overall_preplay_outcome, ...} =
   282         val preplay_data as {preplay_outcome, overall_preplay_outcome, ...} =
   282           preplay_data_of_isar_proof debug ctxt metis_type_enc metis_lam_trans do_preplay
   283           preplay_data_of_isar_proof debug ctxt metis_type_enc metis_lam_trans preplay_timeout
   283             preplay_timeout isar_proof
   284             isar_proof
   284 
   285 
   285         fun str_of_preplay_outcome outcome =
   286         fun str_of_preplay_outcome outcome =
   286           if Lazy.is_finished outcome then string_of_play_outcome (Lazy.force outcome) else "?"
   287           if Lazy.is_finished outcome then string_of_play_outcome (Lazy.force outcome) else "?"
   287 
   288 
   288         fun str_of_meth l meth =
   289         fun str_of_meth l meth =
   297             ()
   298             ()
   298 
   299 
   299         val (play_outcome, isar_proof) =
   300         val (play_outcome, isar_proof) =
   300           isar_proof
   301           isar_proof
   301           |> tap (trace_isar_proof "Original")
   302           |> tap (trace_isar_proof "Original")
   302           |> compress_isar_proof (if isar_proofs = SOME true then compress_isar else 1000.0)
   303           |> compress_isar_proof compress_isar preplay_data
   303                preplay_data
       
   304           |> tap (trace_isar_proof "Compressed")
   304           |> tap (trace_isar_proof "Compressed")
   305           |> try0_isar ? try0_isar_proof preplay_timeout preplay_data
   305           |> try0_isar ? try0_isar_proof preplay_timeout preplay_data
   306           |> tap (trace_isar_proof "Tried0")
   306           |> tap (trace_isar_proof "Tried0")
   307           |> postprocess_isar_proof_remove_unreferenced_steps
   307           |> postprocess_isar_proof_remove_unreferenced_steps
   308                (try0_isar ? minimize_isar_step_dependencies preplay_data)
   308                (try0_isar ? minimize_isar_step_dependencies preplay_data)