src/HOL/Tools/Sledgehammer/sledgehammer_isar.ML
changeset 37511 26afa11a1fb2
parent 37498 b426cbdb5a23
child 37567 02e4ccd512b6
equal deleted inserted replaced
37510:6d9923e8d208 37511:26afa11a1fb2
    10 
    10 
    11   val atps: string Unsynchronized.ref
    11   val atps: string Unsynchronized.ref
    12   val timeout: int Unsynchronized.ref
    12   val timeout: int Unsynchronized.ref
    13   val full_types: bool Unsynchronized.ref
    13   val full_types: bool Unsynchronized.ref
    14   val default_params : theory -> (string * string) list -> params
    14   val default_params : theory -> (string * string) list -> params
    15   val setup: theory -> theory
       
    16 end;
    15 end;
    17 
    16 
    18 structure Sledgehammer_Isar : SLEDGEHAMMER_ISAR =
    17 structure Sledgehammer_Isar : SLEDGEHAMMER_ISAR =
    19 struct
    18 struct
    20 
    19 
    22 open Sledgehammer_Fact_Filter
    21 open Sledgehammer_Fact_Filter
    23 open Sledgehammer_Fact_Preprocessor
    22 open Sledgehammer_Fact_Preprocessor
    24 open ATP_Manager
    23 open ATP_Manager
    25 open ATP_Systems
    24 open ATP_Systems
    26 open Sledgehammer_Fact_Minimizer
    25 open Sledgehammer_Fact_Minimizer
    27 
       
    28 (** Proof method used in Isar proofs **)
       
    29 
       
    30 val neg_clausify_setup =
       
    31   Method.setup @{binding neg_clausify}
       
    32                (Scan.succeed (SIMPLE_METHOD' o neg_clausify_tac)
       
    33                 o tap (fn _ => legacy_feature "Old 'neg_clausify' method -- \
       
    34                                    \rerun Sledgehammer to obtain a direct \
       
    35                                    \proof"))
       
    36                "conversion of goal to negated conjecture clauses (legacy)"
       
    37 
       
    38 (** Attribute for converting a theorem into clauses **)
       
    39 
       
    40 val parse_clausify_attribute : attribute context_parser =
       
    41   Scan.lift Parse.nat
       
    42   >> (fn i => Thm.rule_attribute (fn context => fn th =>
       
    43                   let val thy = Context.theory_of context in
       
    44                     Meson.make_meta_clause (nth (cnf_axiom thy th) i)
       
    45                   end))
       
    46 
       
    47 val clausify_setup =
       
    48   Attrib.setup @{binding clausify}
       
    49                (parse_clausify_attribute
       
    50                 o tap (fn _ => legacy_feature "Old 'clausify' attribute"))
       
    51                "conversion of theorem to clauses"
       
    52 
    26 
    53 (** Sledgehammer commands **)
    27 (** Sledgehammer commands **)
    54 
    28 
    55 fun add_to_relevance_override ns : relevance_override =
    29 fun add_to_relevance_override ns : relevance_override =
    56   {add = ns, del = [], only = false}
    30   {add = ns, del = [], only = false}
   355 val _ =
   329 val _ =
   356   Outer_Syntax.command sledgehammer_paramsN
   330   Outer_Syntax.command sledgehammer_paramsN
   357       "set and display the default parameters for Sledgehammer" Keyword.thy_decl
   331       "set and display the default parameters for Sledgehammer" Keyword.thy_decl
   358       parse_sledgehammer_params_command
   332       parse_sledgehammer_params_command
   359 
   333 
   360 val setup =
       
   361   neg_clausify_setup
       
   362   #> clausify_setup
       
   363 
       
   364 end;
   334 end;