avoid needless type args for lifted-lambdas
authorblanchet
Mon, 25 Jul 2011 14:10:12 +0200
changeset 4483291294d386539
parent 44831 c2554cc82d34
child 44833 e1d29c3ca933
avoid needless type args for lifted-lambdas
src/HOL/Tools/ATP/atp_translate.ML
src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML
     1.1 --- a/src/HOL/Tools/ATP/atp_translate.ML	Mon Jul 25 11:21:45 2011 +0200
     1.2 +++ b/src/HOL/Tools/ATP/atp_translate.ML	Mon Jul 25 14:10:12 2011 +0200
     1.3 @@ -1258,7 +1258,8 @@
     1.4      fun aux arity (IApp (tm1, tm2)) = IApp (aux (arity + 1) tm1, aux 0 tm2)
     1.5        | aux arity (IConst (name as (s, _), T, T_args)) =
     1.6          (case strip_prefix_and_unascii const_prefix s of
     1.7 -           NONE => (name, T_args)
     1.8 +           NONE =>
     1.9 +           (name, if level_of_type_enc type_enc = No_Types then [] else T_args)
    1.10           | SOME s'' =>
    1.11             let
    1.12               val s'' = invert_const s''
     2.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Mon Jul 25 11:21:45 2011 +0200
     2.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_provers.ML	Mon Jul 25 14:10:12 2011 +0200
     2.3 @@ -525,10 +525,14 @@
     2.4     | NONE => type_enc_from_string best_type_enc)
     2.5    |> choose_format formats
     2.6  
     2.7 -fun lift_lambdas ctxt =
     2.8 +fun lift_lambdas ctxt type_enc =
     2.9    map (close_form o Envir.eta_contract) #> rpair ctxt
    2.10 -  #-> Lambda_Lifting.lift_lambdas (SOME polymorphic_free_prefix)
    2.11 -                                  Lambda_Lifting.is_quantifier
    2.12 +  #-> Lambda_Lifting.lift_lambdas
    2.13 +          (if polymorphism_of_type_enc type_enc = Polymorphic then
    2.14 +             SOME polymorphic_free_prefix
    2.15 +           else
    2.16 +             NONE)
    2.17 +          Lambda_Lifting.is_quantifier
    2.18    #> fst
    2.19  
    2.20  fun translate_atp_lambdas ctxt type_enc =
    2.21 @@ -544,9 +548,9 @@
    2.22             trans)
    2.23    |> (fn trans =>
    2.24           if trans = concealedN then
    2.25 -           lift_lambdas ctxt ##> K []
    2.26 +           lift_lambdas ctxt type_enc ##> K []
    2.27           else if trans = liftingN then
    2.28 -           lift_lambdas ctxt
    2.29 +           lift_lambdas ctxt type_enc
    2.30           else if trans = combinatorsN then
    2.31             map (introduce_combinators ctxt) #> rpair []
    2.32           else if trans = lambdasN then