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. |