no needless reconstructors
authorblanchet
Fri, 18 Nov 2011 11:47:12 +0100
changeset 464248d1545420a05
parent 46423 d2139b4557fc
child 46425 09ad83de849c
no needless reconstructors
src/HOL/Tools/ATP/atp_reconstruct.ML
src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
     1.1 --- a/src/HOL/Tools/ATP/atp_reconstruct.ML	Fri Nov 18 11:47:12 2011 +0100
     1.2 +++ b/src/HOL/Tools/ATP/atp_reconstruct.ML	Fri Nov 18 11:47:12 2011 +0100
     1.3 @@ -45,6 +45,7 @@
     1.4      Proof.context -> (string * locality) list vector -> string proof
     1.5      -> (string * locality) list
     1.6    val is_axiom_used_in_proof : (string list -> bool) -> 'a proof -> bool
     1.7 +  val is_typed_helper : string list -> bool
     1.8    val used_facts_in_unsound_atp_proof :
     1.9      Proof.context -> (string * locality) list vector -> 'a proof
    1.10      -> string list option
     2.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Fri Nov 18 11:47:12 2011 +0100
     2.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Fri Nov 18 11:47:12 2011 +0100
     2.3 @@ -145,11 +145,14 @@
     2.4  val reconstructor_names = [metisN, smtN]
     2.5  val plain_metis = Metis (hd partial_type_encs, combinatorsN)
     2.6  
     2.7 -fun standard_reconstructors lam_trans =
     2.8 -  [Metis (hd partial_type_encs, lam_trans),
     2.9 -   Metis (hd full_type_encs, lam_trans),
    2.10 -   Metis (no_type_enc, lam_trans),
    2.11 -   SMT]
    2.12 +fun bunch_of_reconstructors full_types lam_trans =
    2.13 +  if full_types then
    2.14 +    [Metis (hd full_type_encs, lam_trans)]
    2.15 +  else
    2.16 +    [Metis (hd partial_type_encs, lam_trans),
    2.17 +     Metis (hd full_type_encs, lam_trans),
    2.18 +     Metis (no_type_enc, lam_trans),
    2.19 +     SMT]
    2.20  
    2.21  val is_reconstructor = member (op =) reconstructor_names
    2.22  val is_atp = member (op =) o supported_atps
    2.23 @@ -780,8 +783,9 @@
    2.24          NONE =>
    2.25          let
    2.26            val used_facts = used_facts_in_atp_proof ctxt fact_names atp_proof
    2.27 +          val full_types = is_axiom_used_in_proof is_typed_helper atp_proof
    2.28            val reconstrs =
    2.29 -            standard_reconstructors
    2.30 +            bunch_of_reconstructors full_types
    2.31                  (if member (op =) metis_lam_transs lam_trans then lam_trans
    2.32                   else combinatorsN)
    2.33          in
    2.34 @@ -973,7 +977,7 @@
    2.35          (fn () =>
    2.36              play_one_line_proof mode debug verbose preplay_timeout used_ths
    2.37                                  state subgoal SMT
    2.38 -                                (standard_reconstructors lam_liftingN),
    2.39 +                                (bunch_of_reconstructors false lam_liftingN),
    2.40           fn preplay =>
    2.41              let
    2.42                val one_line_params =