src/HOL/Refute.thy
author wenzelm
Thu, 07 Jul 2011 23:55:15 +0200
changeset 44572 91c4d7397f0e
parent 40419 00152d17855b
child 47824 d0181abdbdac
permissions -rw-r--r--
simplified make_option/dest_option;
added make_variant/dest_variant -- usual representation of datatypes;
     1 (*  Title:      HOL/Refute.thy
     2     Author:     Tjark Weber
     3     Copyright   2003-2007
     4 
     5 Basic setup and documentation for the 'refute' (and 'refute_params') command.
     6 *)
     7 
     8 header {* Refute *}
     9 
    10 theory Refute
    11 imports Hilbert_Choice List Sledgehammer
    12 uses "Tools/refute.ML"
    13 begin
    14 
    15 setup Refute.setup
    16 
    17 text {*
    18 \small
    19 \begin{verbatim}
    20 (* ------------------------------------------------------------------------- *)
    21 (* REFUTE                                                                    *)
    22 (*                                                                           *)
    23 (* We use a SAT solver to search for a (finite) model that refutes a given   *)
    24 (* HOL formula.                                                              *)
    25 (* ------------------------------------------------------------------------- *)
    26 
    27 (* ------------------------------------------------------------------------- *)
    28 (* NOTE                                                                      *)
    29 (*                                                                           *)
    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 (* ------------------------------------------------------------------------- *)
    35 
    36 (* ------------------------------------------------------------------------- *)
    37 (* USAGE                                                                     *)
    38 (*                                                                           *)
    39 (* See the file 'HOL/ex/Refute_Examples.thy' for examples.  The supported    *)
    40 (* parameters are explained below.                                           *)
    41 (* ------------------------------------------------------------------------- *)
    42 
    43 (* ------------------------------------------------------------------------- *)
    44 (* CURRENT LIMITATIONS                                                       *)
    45 (*                                                                           *)
    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.                                       *)
    53 (*                                                                           *)
    54 (* The (space) complexity of the algorithm is non-elementary.                *)
    55 (*                                                                           *)
    56 (* Schematic type variables are not supported.                               *)
    57 (* ------------------------------------------------------------------------- *)
    58 
    59 (* ------------------------------------------------------------------------- *)
    60 (* PARAMETERS                                                                *)
    61 (*                                                                           *)
    62 (* The following global parameters are currently supported (and required,    *)
    63 (* except for "expect"):                                                     *)
    64 (*                                                                           *)
    65 (* Name          Type    Description                                         *)
    66 (*                                                                           *)
    67 (* "minsize"     int     Only search for models with size at least           *)
    68 (*                       'minsize'.                                          *)
    69 (* "maxsize"     int     If >0, only search for models with size at most     *)
    70 (*                       'maxsize'.                                          *)
    71 (* "maxvars"     int     If >0, use at most 'maxvars' boolean variables      *)
    72 (*                       when transforming the term into a propositional     *)
    73 (*                       formula.                                            *)
    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     *)
    78 (*                       not considered.                                     *)
    79 (* "expect"      string  Expected result ("genuine", "potential", "none", or *)
    80 (*                       "unknown").                                         *)
    81 (*                                                                           *)
    82 (* See 'HOL/SAT.thy' for default values.                                     *)
    83 (*                                                                           *)
    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:              *)
    86 (* "'a"=1                                                                    *)
    87 (* "List.list"=2                                                             *)
    88 (* ------------------------------------------------------------------------- *)
    89 
    90 (* ------------------------------------------------------------------------- *)
    91 (* FILES                                                                     *)
    92 (*                                                                           *)
    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,   *)
    98 (*                             documentation                                 *)
    99 (* HOL/SAT.thy                 Sets default parameters                       *)
   100 (* HOL/ex/Refute_Examples.thy  Examples                                      *)
   101 (* ------------------------------------------------------------------------- *)
   102 \end{verbatim}
   103 *}
   104 
   105 end