src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
changeset 45560 1606122a2d0f
parent 45557 b427b23ec89c
child 45561 57227eedce81
equal deleted inserted replaced
45559:22d6fb988306 45560:1606122a2d0f
   144 
   144 
   145 val reconstructor_names = [metisN, smtN]
   145 val reconstructor_names = [metisN, smtN]
   146 val plain_metis = Metis (hd partial_type_encs, combinatorsN)
   146 val plain_metis = Metis (hd partial_type_encs, combinatorsN)
   147 
   147 
   148 fun bunch_of_reconstructors needs_full_types lam_trans =
   148 fun bunch_of_reconstructors needs_full_types lam_trans =
   149   [(false, Metis (hd partial_type_encs, lam_trans metis_default_lam_trans)),
   149   [(false, Metis (hd partial_type_encs, lam_trans true)),
   150    (true, Metis (hd full_type_encs, lam_trans hide_lamsN)),
   150    (true, Metis (hd full_type_encs, lam_trans false)),
   151    (false, Metis (no_type_enc, lam_trans hide_lamsN)),
   151    (false, Metis (no_type_enc, lam_trans false)),
   152    (true, SMT)]
   152    (true, SMT)]
   153   |> map_filter (fn (full_types, reconstr) =>
   153   |> map_filter (fn (full_types, reconstr) =>
   154                     if needs_full_types andalso not full_types then NONE
   154                     if needs_full_types andalso not full_types then NONE
   155                     else SOME reconstr)
   155                     else SOME reconstr)
   156 
   156 
   784         let
   784         let
   785           val used_facts = used_facts_in_atp_proof ctxt fact_names atp_proof
   785           val used_facts = used_facts_in_atp_proof ctxt fact_names atp_proof
   786           val needs_full_types = is_typed_helper_used_in_proof atp_proof
   786           val needs_full_types = is_typed_helper_used_in_proof atp_proof
   787           val reconstrs =
   787           val reconstrs =
   788             bunch_of_reconstructors needs_full_types
   788             bunch_of_reconstructors needs_full_types
   789                                     (lam_trans_from_atp_proof atp_proof)
   789                 (lam_trans_from_atp_proof atp_proof
       
   790                  o (fn plain =>
       
   791                        if plain then metis_default_lam_trans else hide_lamsN))
   790         in
   792         in
   791           (used_facts,
   793           (used_facts,
   792            fn () =>
   794            fn () =>
   793               let
   795               let
   794                 val used_ths =
   796                 val used_ths =
   975       case outcome of
   977       case outcome of
   976         NONE =>
   978         NONE =>
   977         (fn () =>
   979         (fn () =>
   978             play_one_line_proof mode debug verbose preplay_timeout used_ths
   980             play_one_line_proof mode debug verbose preplay_timeout used_ths
   979                 state subgoal SMT
   981                 state subgoal SMT
   980                 (bunch_of_reconstructors false (K lam_liftingN)),
   982                 (bunch_of_reconstructors false
       
   983                      (fn plain =>
       
   984                          if plain then metis_default_lam_trans
       
   985                          else lam_liftingN)),
   981          fn preplay =>
   986          fn preplay =>
   982             let
   987             let
   983               val one_line_params =
   988               val one_line_params =
   984                 (preplay, proof_banner mode name, used_facts,
   989                 (preplay, proof_banner mode name, used_facts,
   985                  choose_minimize_command minimize_command name preplay,
   990                  choose_minimize_command minimize_command name preplay,