src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML
changeset 49410 85a7fb65507a
parent 49409 82fc8c956cdc
child 49411 dd82d190c2af
     1.1 --- a/src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML	Fri Jul 20 22:19:46 2012 +0200
     1.2 +++ b/src/HOL/Tools/Sledgehammer/sledgehammer_mash.ML	Fri Jul 20 22:19:46 2012 +0200
     1.3 @@ -63,7 +63,8 @@
     1.4    val mash_learn_facts :
     1.5      Proof.context -> params -> string -> bool -> bool -> Time.time -> fact list
     1.6      -> string
     1.7 -  val mash_learn : Proof.context -> params -> bool -> unit
     1.8 +  val mash_learn :
     1.9 +    Proof.context -> params -> fact_override -> thm list -> bool -> unit
    1.10    val relevant_facts :
    1.11      Proof.context -> params -> string -> int -> fact_override -> term list
    1.12      -> term -> fact list -> fact list
    1.13 @@ -116,14 +117,14 @@
    1.14      String.str c
    1.15    else
    1.16      (* fixed width, in case more digits follow *)
    1.17 -    "$" ^ stringN_of_int 3 (Char.ord c)
    1.18 +    "%" ^ stringN_of_int 3 (Char.ord c)
    1.19  
    1.20  fun unmeta_chars accum [] = String.implode (rev accum)
    1.21 -  | unmeta_chars accum (#"$" :: d1 :: d2 :: d3 :: cs) =
    1.22 +  | unmeta_chars accum (#"%" :: d1 :: d2 :: d3 :: cs) =
    1.23      (case Int.fromString (String.implode [d1, d2, d3]) of
    1.24         SOME n => unmeta_chars (Char.chr n :: accum) cs
    1.25       | NONE => "" (* error *))
    1.26 -  | unmeta_chars _ (#"$" :: _) = "" (* error *)
    1.27 +  | unmeta_chars _ (#"%" :: _) = "" (* error *)
    1.28    | unmeta_chars accum (c :: cs) = unmeta_chars (c :: accum) cs
    1.29  
    1.30  val escape_meta = String.translate meta_char
    1.31 @@ -193,12 +194,10 @@
    1.32              |> map snd |> take max_facts
    1.33      end
    1.34  
    1.35 -val thy_feature_prefix = "y_"
    1.36 -
    1.37 -val thy_feature_name_of = prefix thy_feature_prefix
    1.38 -val const_name_of = prefix const_prefix
    1.39 -val type_name_of = prefix type_const_prefix
    1.40 -val class_name_of = prefix class_prefix
    1.41 +val thy_feature_name_of = prefix "y"
    1.42 +val const_name_of = prefix "c"
    1.43 +val type_name_of = prefix "t"
    1.44 +val class_name_of = prefix "s"
    1.45  
    1.46  fun is_likely_tautology_or_too_meta th =
    1.47    let
    1.48 @@ -723,10 +722,13 @@
    1.49        end
    1.50    end
    1.51  
    1.52 -fun mash_learn ctxt (params as {provers, ...}) atp =
    1.53 +fun mash_learn ctxt (params as {provers, ...}) fact_override chained_ths atp =
    1.54    let
    1.55      val css_table = Sledgehammer_Fact.clasimpset_rule_table_of ctxt
    1.56 -    val facts = all_facts_of ctxt css_table
    1.57 +    val ctxt = ctxt |> Config.put instantiate_inducts false
    1.58 +    val facts =
    1.59 +      nearly_all_facts ctxt false fact_override Symtab.empty css_table
    1.60 +                       chained_ths [] @{prop True}
    1.61    in
    1.62       mash_learn_facts ctxt params (hd provers) false atp infinite_timeout facts
    1.63       |> Output.urgent_message