src/HOL/Tools/Sledgehammer/sledgehammer_minimize.ML
changeset 53764 eba0d1c069b8
parent 53763 70d370743dc6
child 53800 ac1ec5065316
equal deleted inserted replaced
53763:70d370743dc6 53764:eba0d1c069b8
    55 
    55 
    56 fun print silent f = if silent then () else Output.urgent_message (f ())
    56 fun print silent f = if silent then () else Output.urgent_message (f ())
    57 
    57 
    58 fun test_facts ({debug, verbose, overlord, provers, max_mono_iters,
    58 fun test_facts ({debug, verbose, overlord, provers, max_mono_iters,
    59                  max_new_mono_instances, type_enc, strict, lam_trans,
    59                  max_new_mono_instances, type_enc, strict, lam_trans,
    60                  uncurried_aliases, isar_proofs, isar_compress,
    60                  uncurried_aliases, isar_proofs, isar_compress, isar_try0,
    61                  isar_try0, isar_minimize, preplay_timeout, ...} : params)
    61                  preplay_timeout, ...} : params)
    62                silent (prover : prover) timeout i n state facts =
    62                silent (prover : prover) timeout i n state facts =
    63   let
    63   let
    64     val _ =
    64     val _ =
    65       print silent (fn () =>
    65       print silent (fn () =>
    66           "Testing " ^ n_facts (map fst facts) ^
    66           "Testing " ^ n_facts (map fst facts) ^
    78        lam_trans = lam_trans, uncurried_aliases = uncurried_aliases,
    78        lam_trans = lam_trans, uncurried_aliases = uncurried_aliases,
    79        learn = false, fact_filter = NONE, max_facts = SOME (length facts),
    79        learn = false, fact_filter = NONE, max_facts = SOME (length facts),
    80        fact_thresholds = (1.01, 1.01), max_mono_iters = max_mono_iters,
    80        fact_thresholds = (1.01, 1.01), max_mono_iters = max_mono_iters,
    81        max_new_mono_instances = max_new_mono_instances,
    81        max_new_mono_instances = max_new_mono_instances,
    82        isar_proofs = isar_proofs, isar_compress = isar_compress,
    82        isar_proofs = isar_proofs, isar_compress = isar_compress,
    83        isar_try0 = isar_try0, isar_minimize = isar_minimize, slice = false,
    83        isar_try0 = isar_try0, slice = false, minimize = SOME false,
    84        minimize = SOME false, timeout = timeout,
    84        timeout = timeout, preplay_timeout = preplay_timeout, expect = ""}
    85        preplay_timeout = preplay_timeout, expect = ""}
       
    86     val problem =
    85     val problem =
    87       {state = state, goal = goal, subgoal = i, subgoal_count = n,
    86       {state = state, goal = goal, subgoal = i, subgoal_count = n,
    88        factss = [("", facts)]}
    87        factss = [("", facts)]}
    89     val result as {outcome, used_facts, run_time, ...} =
    88     val result as {outcome, used_facts, run_time, ...} =
    90       prover params (K (K (K ""))) problem
    89       prover params (K (K (K ""))) problem
   250 
   249 
   251 fun adjust_reconstructor_params override_params
   250 fun adjust_reconstructor_params override_params
   252         ({debug, verbose, overlord, blocking, provers, type_enc, strict,
   251         ({debug, verbose, overlord, blocking, provers, type_enc, strict,
   253          lam_trans, uncurried_aliases, learn, fact_filter, max_facts,
   252          lam_trans, uncurried_aliases, learn, fact_filter, max_facts,
   254          fact_thresholds, max_mono_iters, max_new_mono_instances, isar_proofs,
   253          fact_thresholds, max_mono_iters, max_new_mono_instances, isar_proofs,
   255          isar_compress, isar_try0, isar_minimize, slice, minimize, timeout,
   254          isar_compress, isar_try0, slice, minimize, timeout, preplay_timeout,
   256          preplay_timeout, expect} : params) =
   255          expect} : params) =
   257   let
   256   let
   258     fun lookup_override name default_value =
   257     fun lookup_override name default_value =
   259       case AList.lookup (op =) override_params name of
   258       case AList.lookup (op =) override_params name of
   260         SOME [s] => SOME s
   259         SOME [s] => SOME s
   261       | _ => default_value
   260       | _ => default_value
   268      provers = provers, type_enc = type_enc, strict = strict,
   267      provers = provers, type_enc = type_enc, strict = strict,
   269      lam_trans = lam_trans, uncurried_aliases = uncurried_aliases,
   268      lam_trans = lam_trans, uncurried_aliases = uncurried_aliases,
   270      learn = learn, fact_filter = fact_filter, max_facts = max_facts,
   269      learn = learn, fact_filter = fact_filter, max_facts = max_facts,
   271      fact_thresholds = fact_thresholds, max_mono_iters = max_mono_iters,
   270      fact_thresholds = fact_thresholds, max_mono_iters = max_mono_iters,
   272      max_new_mono_instances = max_new_mono_instances, isar_proofs = isar_proofs,
   271      max_new_mono_instances = max_new_mono_instances, isar_proofs = isar_proofs,
   273      isar_compress = isar_compress, isar_try0 = isar_try0,
   272      isar_compress = isar_compress, isar_try0 = isar_try0, slice = slice,
   274      isar_minimize = isar_minimize, slice = slice, minimize = minimize,
   273      minimize = minimize, timeout = timeout, preplay_timeout = preplay_timeout,
   275      timeout = timeout, preplay_timeout = preplay_timeout, expect = expect}
   274      expect = expect}
   276   end
   275   end
   277 
   276 
   278 fun maybe_minimize ctxt mode do_learn name
   277 fun maybe_minimize ctxt mode do_learn name
   279         (params as {verbose, isar_proofs, minimize, ...})
   278         (params as {verbose, isar_proofs, minimize, ...})
   280         ({state, subgoal, subgoal_count, ...} : prover_problem)
   279         ({state, subgoal, subgoal_count, ...} : prover_problem)