doc-src/Nitpick/nitpick.tex
changeset 40343 4521d56aef63
parent 40341 03156257040f
child 40689 3a10ce7cd436
equal deleted inserted replaced
40342:3154f63e2bda 40343:4521d56aef63
  1886 \item[$\bullet$] \qtybf{int\/}: An integer. Negative integers are prefixed with a hyphen.
  1886 \item[$\bullet$] \qtybf{int\/}: An integer. Negative integers are prefixed with a hyphen.
  1887 \item[$\bullet$] \qtybf{int\_or\_smart\/}: An integer or \textit{smart}.
  1887 \item[$\bullet$] \qtybf{int\_or\_smart\/}: An integer or \textit{smart}.
  1888 \item[$\bullet$] \qtybf{int\_range}: An integer (e.g., 3) or a range
  1888 \item[$\bullet$] \qtybf{int\_range}: An integer (e.g., 3) or a range
  1889 of nonnegative integers (e.g., $1$--$4$). The range symbol `--' can be entered as \texttt{-} (hyphen) or \texttt{\char`\\\char`\<midarrow\char`\>}.
  1889 of nonnegative integers (e.g., $1$--$4$). The range symbol `--' can be entered as \texttt{-} (hyphen) or \texttt{\char`\\\char`\<midarrow\char`\>}.
  1890 \item[$\bullet$] \qtybf{int\_seq}: A comma-separated sequence of ranges of integers (e.g.,~1{,}3{,}\allowbreak6--8).
  1890 \item[$\bullet$] \qtybf{int\_seq}: A comma-separated sequence of ranges of integers (e.g.,~1{,}3{,}\allowbreak6--8).
  1891 \item[$\bullet$] \qtybf{time}: An integer (e.g., 60) or floating-point number
  1891 \item[$\bullet$] \qtybf{float\_or\_none}: An integer (e.g., 60) or floating-point number
  1892 (e.g., 0.5) expressing a number of seconds, or the keyword \textit{none}
  1892 (e.g., 0.5) expressing a number of seconds, or the keyword \textit{none}
  1893 ($\infty$ seconds).
  1893 ($\infty$ seconds).
  1894 \item[$\bullet$] \qtybf{const\/}: The name of a HOL constant.
  1894 \item[$\bullet$] \qtybf{const\/}: The name of a HOL constant.
  1895 \item[$\bullet$] \qtybf{term}: A HOL term (e.g., ``$f~x$'').
  1895 \item[$\bullet$] \qtybf{term}: A HOL term (e.g., ``$f~x$'').
  1896 \item[$\bullet$] \qtybf{term\_list\/}: A space-separated list of HOL terms (e.g.,
  1896 \item[$\bullet$] \qtybf{term\_list\/}: A space-separated list of HOL terms (e.g.,
  1964 
  1964 
  1965 \nopagebreak
  1965 \nopagebreak
  1966 {\small See also \textit{box} (\S\ref{scope-of-search}) and \textit{mono}
  1966 {\small See also \textit{box} (\S\ref{scope-of-search}) and \textit{mono}
  1967 (\S\ref{scope-of-search}).}
  1967 (\S\ref{scope-of-search}).}
  1968 
  1968 
  1969 \opdefault{card}{int\_seq}{$\mathbf{1}$--$\mathbf{10}$}
  1969 \opdefault{card}{int\_seq}{\upshape 1--10}
  1970 Specifies the default sequence of cardinalities to use. This can be overridden
  1970 Specifies the default sequence of cardinalities to use. This can be overridden
  1971 on a per-type basis using the \textit{card}~\qty{type} option described above.
  1971 on a per-type basis using the \textit{card}~\qty{type} option described above.
  1972 
  1972 
  1973 \oparg{max}{const}{int\_seq}
  1973 \oparg{max}{const}{int\_seq}
  1974 Specifies the sequence of maximum multiplicities to use for a given
  1974 Specifies the sequence of maximum multiplicities to use for a given
  2012 \textit{Suc}, \textit{gcd}, or \textit{lcm}.
  2012 \textit{Suc}, \textit{gcd}, or \textit{lcm}.
  2013 
  2013 
  2014 {\small See also \textit{bits} (\S\ref{scope-of-search}) and
  2014 {\small See also \textit{bits} (\S\ref{scope-of-search}) and
  2015 \textit{show\_datatypes} (\S\ref{output-format}).}
  2015 \textit{show\_datatypes} (\S\ref{output-format}).}
  2016 
  2016 
  2017 \opdefault{bits}{int\_seq}{$\mathbf{1},\mathbf{2},\mathbf{3},\mathbf{4},\mathbf{6},\mathbf{8},\mathbf{10},\mathbf{12},\mathbf{14},\mathbf{16}$}
  2017 \opdefault{bits}{int\_seq}{\upshape 1,2,3,4,6,8,10,12,14,16}
  2018 Specifies the number of bits to use to represent natural numbers and integers in
  2018 Specifies the number of bits to use to represent natural numbers and integers in
  2019 binary, excluding the sign bit. The minimum is 1 and the maximum is 31.
  2019 binary, excluding the sign bit. The minimum is 1 and the maximum is 31.
  2020 
  2020 
  2021 {\small See also \textit{binary\_ints} (\S\ref{scope-of-search}).}
  2021 {\small See also \textit{binary\_ints} (\S\ref{scope-of-search}).}
  2022 
  2022 
  2062 domain.
  2062 domain.
  2063 
  2063 
  2064 {\small See also \textit{wf} (\S\ref{scope-of-search}) and
  2064 {\small See also \textit{wf} (\S\ref{scope-of-search}) and
  2065 \textit{star\_linear\_preds} (\S\ref{optimizations}).}
  2065 \textit{star\_linear\_preds} (\S\ref{optimizations}).}
  2066 
  2066 
  2067 \opdefault{iter}{int\_seq}{$\mathbf{0{,}1{,}2{,}4{,}8{,}12{,}16{,}20{,}24{,}28}$}
  2067 \opdefault{iter}{int\_seq}{\upshape 0{,}1{,}2{,}4{,}8{,}12{,}16{,}20{,}24{,}28}
  2068 Specifies the sequence of iteration counts to use when unrolling (co)in\-duc\-tive
  2068 Specifies the sequence of iteration counts to use when unrolling (co)in\-duc\-tive
  2069 predicates. This can be overridden on a per-predicate basis using the
  2069 predicates. This can be overridden on a per-predicate basis using the
  2070 \textit{iter} \qty{const} option above.
  2070 \textit{iter} \qty{const} option above.
  2071 
  2071 
  2072 \opdefault{bisim\_depth}{int\_seq}{$\mathbf{9}$}
  2072 \opdefault{bisim\_depth}{int\_seq}{\upshape 9}
  2073 Specifies the sequence of iteration counts to use when unrolling the
  2073 Specifies the sequence of iteration counts to use when unrolling the
  2074 bisimilarity predicate generated by Nitpick for coinductive datatypes. A value
  2074 bisimilarity predicate generated by Nitpick for coinductive datatypes. A value
  2075 of $-1$ means that no predicate is generated, in which case Nitpick performs an
  2075 of $-1$ means that no predicate is generated, in which case Nitpick performs an
  2076 after-the-fact check to see if the known coinductive datatype values are
  2076 after-the-fact check to see if the known coinductive datatype values are
  2077 bidissimilar. If two values are found to be bisimilar, the counterexample is
  2077 bidissimilar. If two values are found to be bisimilar, the counterexample is
  2212 genuine, but they can clutter the output.
  2212 genuine, but they can clutter the output.
  2213 
  2213 
  2214 \opnodefault{show\_all}{bool}
  2214 \opnodefault{show\_all}{bool}
  2215 Abbreviation for \textit{show\_datatypes} and \textit{show\_consts}.
  2215 Abbreviation for \textit{show\_datatypes} and \textit{show\_consts}.
  2216 
  2216 
  2217 \opdefault{max\_potential}{int}{$\mathbf{1}$}
  2217 \opdefault{max\_potential}{int}{\upshape 1}
  2218 Specifies the maximum number of potential counterexamples to display. Setting
  2218 Specifies the maximum number of potential counterexamples to display. Setting
  2219 this option to 0 speeds up the search for a genuine counterexample. This option
  2219 this option to 0 speeds up the search for a genuine counterexample. This option
  2220 is implicitly set to 0 for automatic runs. If you set this option to a value
  2220 is implicitly set to 0 for automatic runs. If you set this option to a value
  2221 greater than 1, you will need an incremental SAT solver, such as
  2221 greater than 1, you will need an incremental SAT solver, such as
  2222 \textit{MiniSat\_JNI} (recommended) and \textit{SAT4J}. Be aware that many of
  2222 \textit{MiniSat\_JNI} (recommended) and \textit{SAT4J}. Be aware that many of
  2224 
  2224 
  2225 \nopagebreak
  2225 \nopagebreak
  2226 {\small See also \textit{check\_potential} (\S\ref{authentication}) and
  2226 {\small See also \textit{check\_potential} (\S\ref{authentication}) and
  2227 \textit{sat\_solver} (\S\ref{optimizations}).}
  2227 \textit{sat\_solver} (\S\ref{optimizations}).}
  2228 
  2228 
  2229 \opdefault{max\_genuine}{int}{$\mathbf{1}$}
  2229 \opdefault{max\_genuine}{int}{\upshape 1}
  2230 Specifies the maximum number of genuine counterexamples to display. If you set
  2230 Specifies the maximum number of genuine counterexamples to display. If you set
  2231 this option to a value greater than 1, you will need an incremental SAT solver,
  2231 this option to a value greater than 1, you will need an incremental SAT solver,
  2232 such as \textit{MiniSat\_JNI} (recommended) and \textit{SAT4J}. Be aware that
  2232 such as \textit{MiniSat\_JNI} (recommended) and \textit{SAT4J}. Be aware that
  2233 many of the counterexamples may be identical.
  2233 many of the counterexamples may be identical.
  2234 
  2234 
  2265 of values $n_1,\ldots,n_k$ tells Nitpick to show the last $n_k$ arguments as an
  2265 of values $n_1,\ldots,n_k$ tells Nitpick to show the last $n_k$ arguments as an
  2266 $n_k$-tuple, the previous $n_{k-1}$ arguments as an $n_{k-1}$-tuple, and so on;
  2266 $n_k$-tuple, the previous $n_{k-1}$ arguments as an $n_{k-1}$-tuple, and so on;
  2267 arguments that are not accounted for are left alone, as if the specification had
  2267 arguments that are not accounted for are left alone, as if the specification had
  2268 been $1,\ldots,1,n_1,\ldots,n_k$.
  2268 been $1,\ldots,1,n_1,\ldots,n_k$.
  2269 
  2269 
  2270 \opdefault{format}{int\_seq}{$\mathbf{1}$}
  2270 \opdefault{format}{int\_seq}{\upshape 1}
  2271 Specifies the default format to use. Irrespective of the default format, the
  2271 Specifies the default format to use. Irrespective of the default format, the
  2272 extra arguments to a Skolem constant corresponding to the outer bound variables
  2272 extra arguments to a Skolem constant corresponding to the outer bound variables
  2273 are kept separated from the remaining arguments, the \textbf{for} arguments of
  2273 are kept separated from the remaining arguments, the \textbf{for} arguments of
  2274 an inductive definitions are kept separated from the remaining arguments, and
  2274 an inductive definitions are kept separated from the remaining arguments, and
  2275 the iteration counter of an unrolled inductive definition is shown alone. The
  2275 the iteration counter of an unrolled inductive definition is shown alone. The
  2482 Specifies whether Nitpick should simplify the generated Kodkod formulas using a
  2482 Specifies whether Nitpick should simplify the generated Kodkod formulas using a
  2483 peephole optimizer. These optimizations can make a significant difference.
  2483 peephole optimizer. These optimizations can make a significant difference.
  2484 Unless you are tracking down a bug in Nitpick or distrust the peephole
  2484 Unless you are tracking down a bug in Nitpick or distrust the peephole
  2485 optimizer, you should leave this option enabled.
  2485 optimizer, you should leave this option enabled.
  2486 
  2486 
  2487 \opdefault{datatype\_sym\_break}{int}{5}
  2487 \opdefault{datatype\_sym\_break}{int}{\upshape 5}
  2488 Specifies an upper bound on the number of datatypes for which Nitpick generates
  2488 Specifies an upper bound on the number of datatypes for which Nitpick generates
  2489 symmetry breaking predicates. Symmetry breaking can speed up the SAT solver
  2489 symmetry breaking predicates. Symmetry breaking can speed up the SAT solver
  2490 considerably, especially for unsatisfiable problems, but too much of it can slow
  2490 considerably, especially for unsatisfiable problems, but too much of it can slow
  2491 it down.
  2491 it down.
  2492 
  2492 
  2493 \opdefault{kodkod\_sym\_break}{int}{15}
  2493 \opdefault{kodkod\_sym\_break}{int}{\upshape 15}
  2494 Specifies an upper bound on the number of relations for which Kodkod generates
  2494 Specifies an upper bound on the number of relations for which Kodkod generates
  2495 symmetry breaking predicates. Symmetry breaking can speed up the SAT solver
  2495 symmetry breaking predicates. Symmetry breaking can speed up the SAT solver
  2496 considerably, especially for unsatisfiable problems, but too much of it can slow
  2496 considerably, especially for unsatisfiable problems, but too much of it can slow
  2497 it down.
  2497 it down.
  2498 
  2498 
  2499 \opdefault{max\_threads}{int}{0}
  2499 \opdefault{max\_threads}{int}{\upshape 0}
  2500 Specifies the maximum number of threads to use in Kodkod. If this option is set
  2500 Specifies the maximum number of threads to use in Kodkod. If this option is set
  2501 to 0, Kodkod will compute an appropriate value based on the number of processor
  2501 to 0, Kodkod will compute an appropriate value based on the number of processor
  2502 cores available. The option is implicitly set to 1 for automatic runs.
  2502 cores available. The option is implicitly set to 1 for automatic runs.
  2503 
  2503 
  2504 \nopagebreak
  2504 \nopagebreak
  2508 
  2508 
  2509 \subsection{Timeouts}
  2509 \subsection{Timeouts}
  2510 \label{timeouts}
  2510 \label{timeouts}
  2511 
  2511 
  2512 \begin{enum}
  2512 \begin{enum}
  2513 \opdefault{timeout}{time}{$\mathbf{30}$}
  2513 \opdefault{timeout}{float\_or\_none}{\upshape 30}
  2514 Specifies the maximum number of seconds that the \textbf{nitpick} command should
  2514 Specifies the maximum number of seconds that the \textbf{nitpick} command should
  2515 spend looking for a counterexample. Nitpick tries to honor this constraint as
  2515 spend looking for a counterexample. Nitpick tries to honor this constraint as
  2516 well as it can but offers no guarantees. For automatic runs,
  2516 well as it can but offers no guarantees. For automatic runs,
  2517 \textit{timeout} is ignored; instead, Auto Quickcheck and Auto Nitpick share
  2517 \textit{timeout} is ignored; instead, Auto Quickcheck and Auto Nitpick share
  2518 a time slot whose length is specified by the ``Auto Counterexample Time
  2518 a time slot whose length is specified by the ``Auto Counterexample Time
  2519 Limit'' option in Proof General.
  2519 Limit'' option in Proof General.
  2520 
  2520 
  2521 \nopagebreak
  2521 \nopagebreak
  2522 {\small See also \textit{max\_threads} (\S\ref{optimizations}).}
  2522 {\small See also \textit{max\_threads} (\S\ref{optimizations}).}
  2523 
  2523 
  2524 \opdefault{tac\_timeout}{time}{$\mathbf{0.5}$}
  2524 \opdefault{tac\_timeout}{float\_or\_none}{\upshape 0.5}
  2525 Specifies the maximum number of seconds that the \textit{auto} tactic should use
  2525 Specifies the maximum number of seconds that the \textit{auto} tactic should use
  2526 when checking a counterexample, and similarly that \textit{lexicographic\_order}
  2526 when checking a counterexample, and similarly that \textit{lexicographic\_order}
  2527 and \textit{size\_change} should use when checking whether a (co)in\-duc\-tive
  2527 and \textit{size\_change} should use when checking whether a (co)in\-duc\-tive
  2528 predicate is well-founded. Nitpick tries to honor this constraint as well as it
  2528 predicate is well-founded. Nitpick tries to honor this constraint as well as it
  2529 can but offers no guarantees.
  2529 can but offers no guarantees.