src/HOL/Tools/ATP/atp_translate.ML
changeset 44284 717880e98e6b
parent 44282 926bfe067a32
child 44364 bdb11c68f142
     1.1 --- a/src/HOL/Tools/ATP/atp_translate.ML	Thu Jun 16 13:50:35 2011 +0200
     1.2 +++ b/src/HOL/Tools/ATP/atp_translate.ML	Thu Jun 16 13:50:35 2011 +0200
     1.3 @@ -1656,11 +1656,6 @@
     1.4         ? (fold (add_fact true) conjs #> fold (add_fact false) facts)
     1.5    end
     1.6  
     1.7 -(* These types witness that the type classes they belong to allow infinite
     1.8 -   models and hence that any types with these type classes is monotonic. *)
     1.9 -val known_infinite_types =
    1.10 -  [@{typ nat}, Type ("Int.int", []), @{typ "nat => bool"}]
    1.11 -
    1.12  (* This inference is described in section 2.3 of Claessen et al.'s "Sorting it
    1.13     out with monotonicity" paper presented at CADE 2011. *)
    1.14  fun add_combterm_nonmonotonic_types _ _ _ (SOME false) _ = I
    1.15 @@ -1670,12 +1665,8 @@
    1.16      (is_tptp_equal s andalso exists is_var_or_bound_var [tm1, tm2] andalso
    1.17       (case level of
    1.18          Noninf_Nonmono_Types =>
    1.19 -        (* Unlike virtually any other polymorphic fact whose type variables can
    1.20 -           be instantiated by a known infinite type, extensionality actually
    1.21 -           encodes a cardinality constraints. *)
    1.22          not (is_locality_global locality) orelse
    1.23 -        not (is_type_surely_infinite ctxt (if locality = Extensionality then []
    1.24 -                                           else known_infinite_types) T)
    1.25 +        not (is_type_surely_infinite ctxt T)
    1.26        | Fin_Nonmono_Types => is_type_surely_finite ctxt T
    1.27        | _ => true)) ? insert_type ctxt I (deep_freeze_type T)
    1.28    | add_combterm_nonmonotonic_types _ _ _ _ _ = I