src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
changeset 43394 08346ea46a59
parent 43318 111592b342e2
child 43419 ea2a28b1938f
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Sun May 01 18:37:23 2011 +0200
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML	Sun May 01 18:37:24 2011 +0200
     1.3 @@ -79,11 +79,11 @@
     1.4     ("verbose", "false"),
     1.5     ("overlord", "false"),
     1.6     ("blocking", "false"),
     1.7 +   ("type_sys", "smart"),
     1.8     ("relevance_thresholds", "0.45 0.85"),
     1.9     ("max_relevant", "smart"),
    1.10     ("monomorphize", "false"),
    1.11     ("monomorphize_limit", "4"),
    1.12 -   ("type_sys", "smart"),
    1.13     ("explicit_apply", "false"),
    1.14     ("isar_proof", "false"),
    1.15     ("isar_shrink_factor", "1"),
    1.16 @@ -235,22 +235,22 @@
    1.17      val blocking = auto orelse debug orelse lookup_bool "blocking"
    1.18      val provers = lookup_string "provers" |> space_explode " "
    1.19                    |> auto ? single o hd
    1.20 +    val (type_sys, must_monomorphize) =
    1.21 +      case (lookup_string "type_sys", lookup_bool "full_types") of
    1.22 +        ("many_typed", _) => (Many_Typed, true)
    1.23 +      | ("tags", full_types) => (Tags full_types, false)
    1.24 +      | ("args", full_types) => (Args full_types, false)
    1.25 +      | ("mangled", full_types) => (Mangled full_types, true)
    1.26 +      | ("none", false) => (No_Types, false)
    1.27 +      | (type_sys, full_types) =>
    1.28 +        if member (op =) ["none", "smart"] type_sys then
    1.29 +          (if full_types then Tags true else Args false, false)
    1.30 +        else
    1.31 +          error ("Unknown type system: " ^ quote type_sys ^ ".")
    1.32      val relevance_thresholds = lookup_real_pair "relevance_thresholds"
    1.33      val max_relevant = lookup_int_option "max_relevant"
    1.34 -    val monomorphize = lookup_bool "monomorphize"
    1.35 +    val monomorphize = must_monomorphize orelse lookup_bool "monomorphize"
    1.36      val monomorphize_limit = lookup_int "monomorphize_limit"
    1.37 -    val type_sys =
    1.38 -      case (lookup_string "type_sys", lookup_bool "full_types") of
    1.39 -        ("tags", full_types) => Tags full_types
    1.40 -      | ("args", false) => Args
    1.41 -      | ("mangled", false) => if monomorphize then Mangled else Args
    1.42 -      | ("none", false) => No_Types
    1.43 -      | (type_sys, full_types) =>
    1.44 -        if member (op =) ["args", "mangled", "none", "smart"]
    1.45 -                  type_sys then
    1.46 -          if full_types then Tags true else Args
    1.47 -        else
    1.48 -          error ("Unknown type system: " ^ quote type_sys ^ ".")
    1.49      val explicit_apply = lookup_bool "explicit_apply"
    1.50      val isar_proof = lookup_bool "isar_proof"
    1.51      val isar_shrink_factor = Int.max (1, lookup_int "isar_shrink_factor")