1 (* Title: HOL/Refute.thy
5 Basic setup and documentation for the 'refute' (and 'refute_params') command.
11 imports Hilbert_Choice List Sledgehammer
12 uses "Tools/refute.ML"
20 (* ------------------------------------------------------------------------- *)
23 (* We use a SAT solver to search for a (finite) model that refutes a given *)
25 (* ------------------------------------------------------------------------- *)
27 (* ------------------------------------------------------------------------- *)
30 (* I strongly recommend that you install a stand-alone SAT solver if you *)
31 (* want to use 'refute'. For details see 'HOL/Tools/sat_solver.ML'. If you *)
32 (* have installed (a supported version of) zChaff, simply set 'ZCHAFF_HOME' *)
33 (* in 'etc/settings'. *)
34 (* ------------------------------------------------------------------------- *)
36 (* ------------------------------------------------------------------------- *)
39 (* See the file 'HOL/ex/Refute_Examples.thy' for examples. The supported *)
40 (* parameters are explained below. *)
41 (* ------------------------------------------------------------------------- *)
43 (* ------------------------------------------------------------------------- *)
44 (* CURRENT LIMITATIONS *)
46 (* 'refute' currently accepts formulas of higher-order predicate logic (with *)
47 (* equality), including free/bound/schematic variables, lambda abstractions, *)
48 (* sets and set membership, "arbitrary", "The", "Eps", records and *)
49 (* inductively defined sets. Constants are unfolded automatically, and sort *)
50 (* axioms are added as well. Other, user-asserted axioms however are *)
51 (* ignored. Inductive datatypes and recursive functions are supported, but *)
52 (* may lead to spurious countermodels. *)
54 (* The (space) complexity of the algorithm is non-elementary. *)
56 (* Schematic type variables are not supported. *)
57 (* ------------------------------------------------------------------------- *)
59 (* ------------------------------------------------------------------------- *)
62 (* The following global parameters are currently supported (and required, *)
63 (* except for "expect"): *)
65 (* Name Type Description *)
67 (* "minsize" int Only search for models with size at least *)
69 (* "maxsize" int If >0, only search for models with size at most *)
71 (* "maxvars" int If >0, use at most 'maxvars' boolean variables *)
72 (* when transforming the term into a propositional *)
74 (* "maxtime" int If >0, terminate after at most 'maxtime' seconds. *)
75 (* This value is ignored under some ML compilers. *)
76 (* "satsolver" string Name of the SAT solver to be used. *)
77 (* "no_assms" bool If "true", assumptions in structured proofs are *)
79 (* "expect" string Expected result ("genuine", "potential", "none", or *)
82 (* See 'HOL/SAT.thy' for default values. *)
84 (* The size of particular types can be specified in the form type=size *)
85 (* (where 'type' is a string, and 'size' is an int). Examples: *)
88 (* ------------------------------------------------------------------------- *)
90 (* ------------------------------------------------------------------------- *)
93 (* HOL/Tools/prop_logic.ML Propositional logic *)
94 (* HOL/Tools/sat_solver.ML SAT solvers *)
95 (* HOL/Tools/refute.ML Translation HOL -> propositional logic and *)
96 (* Boolean assignment -> HOL model *)
97 (* HOL/Refute.thy This file: loads the ML files, basic setup, *)
99 (* HOL/SAT.thy Sets default parameters *)
100 (* HOL/ex/Refute_Examples.thy Examples *)
101 (* ------------------------------------------------------------------------- *)