author | blanchet |
Mon, 13 Jul 2015 16:54:27 +0200 | |
changeset 60716 | 8e82a83757df |
parent 52098 | 6c38df1d294a |
child 64561 | a7664ca9ffc5 |
permissions | -rw-r--r-- |
52098
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
1 |
<HR><!------------------------------------------------------------------------> |
60716 | 2 |
<H2>Nitpick 2015</H2> |
52098
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
3 |
Jasmin C. Blanchette<BR> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
4 |
Technische Universität München, Germany <BR> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
5 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
6 |
<H3>Architecture</H3> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
7 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
8 |
Nitpick [<A HREF="#References">BN10</A>] is an open source counterexample |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
9 |
generator for Isabelle/HOL [<A HREF="#References">NPW13</A>]. It builds on |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
10 |
Kodkod [<A HREF="#References">TJ07</A>], a highly optimized first-order |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
11 |
relational model finder based on SAT. The name Nitpick is appropriated from a |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
12 |
now retired Alloy precursor. In a case study, it was applied successfully to a |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
13 |
formalization of the C++ memory model [<A HREF="#References">BWB+11</A>]. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
14 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
15 |
<H3>Strategies</H3> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
16 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
17 |
<p> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
18 |
Nitpick employs Kodkod to find a finite model of the negated conjecture. The |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
19 |
translation from HOL to Kodkod's first-order relational logic (FORL) is |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
20 |
parameterized by the cardinalities of the atomic types occurring in it. Nitpick |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
21 |
enumerates the possible cardinalities for each atomic type, exploiting |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
22 |
monotonicity to prune the search space [<A HREF="#References">BK11</A>]. If a |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
23 |
formula has a finite counterexample, the tool eventually finds it, unless it |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
24 |
runs out of resources. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
25 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
26 |
<p> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
27 |
SAT solvers are particularly sensitive to the encoding of problems, so special |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
28 |
care is needed when translating HOL formulas. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
29 |
As a rule, HOL scalars are mapped to FORL singletons and functions are mapped to |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
30 |
FORL relations accompanied by a constraint. More specifically, |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
31 |
an <i>n</i>-ary first-order function (curried or not) can be coded as an |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
32 |
(<i>n</i> + 1)-ary relation accompanied by a constraint. However, if the return |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
33 |
type is the type of Booleans, the function is more efficiently coded as an |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
34 |
unconstrained <i>n</i>-ary relation. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
35 |
Higher-order quantification and functions bring complications of their own. A |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
36 |
function from σ to τ cannot be directly passed as an argument in FORL; |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
37 |
Nitpick's workaround is to pass |σ| arguments of type τ that encode a |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
38 |
function table. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
39 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
40 |
<H3>Implementation</H3> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
41 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
42 |
<p> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
43 |
Nitpick, like most of Isabelle/HOL, is written in Standard ML. Unlike Isabelle |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
44 |
itself, which adheres to the LCF small-kernel discipline, Nitpick does not |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
45 |
certify its results and must be trusted. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
46 |
<P> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
47 |
Nitpick is available as part of Isabelle/HOL for all major platforms under a |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
48 |
BSD-style license from |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
49 |
<PRE> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
50 |
<A HREF="http:////www.cl.cam.ac.uk/research/hvg/Isabelle/">http://www.cl.cam.ac.uk/research/hvg/Isabelle</A></PRE> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
51 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
52 |
<H3>Expected Competition Performance</H3> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
53 |
|
60716 | 54 |
<P> |
52098
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
55 |
Thanks to Kodkod's amazing power, we expect that Nitpick will beat both Satallax |
60716 | 56 |
and Refute with its hands tied behind its back. |
52098
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
57 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
58 |
<H3>References</H3> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
59 |
<DL> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
60 |
<DT> BK11 |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
61 |
<DD> Blanchette J. C., Krauss A. (2011), |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
62 |
<STRONG>Monotonicity Inference for Higher-Order Formulas</STRONG>, |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
63 |
<EM>J. Autom. Reasoning</EM> 47(4), pp. 369–398, 2011. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
64 |
<DT> BN10 |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
65 |
<DD> Blanchette J. C., Nipkow T. (2010), |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
66 |
<STRONG>Nitpick: A Counterexample Generator for Higher-Order Logic Based on a Relational Model Finder</STRONG>, |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
67 |
ITP 2010, <EM>LNCS</EM> 6172, pp. 131–146, Springer. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
68 |
<DT> BWB+11 |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
69 |
<DD> Blanchette J. C., Weber T., Batty M., Owens S., Sarkar S. (2011), |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
70 |
<STRONG>Nitpicking C++ Concurrency</STRONG>, |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
71 |
PPDP 2011, pp. 113–124, ACM Press. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
72 |
<DT> NPW13 |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
73 |
<DD> Nipkow T., Paulson L. C., Wenzel M. (2013), |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
74 |
<STRONG>Isabelle/HOL: A Proof Assistant for Higher-Order Logic</STRONG>, |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
75 |
<A HREF="http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle/doc/tutorial.pdf">http://www.cl.cam.ac.uk/research/hvg/Isabelle/dist/Isabelle/doc/tutorial.pdf</a>. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
76 |
<DT> TJ07 |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
77 |
<DD> Torlak E., Jackson D. (2007), |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
78 |
<STRONG>Kodkod: A Relational Model Finder</STRONG>, TACAS 2007, |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
79 |
<EM>LNCS</EM> 4424, pp. 632–647, Springer. |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
80 |
</DL> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
81 |
<P> |
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
82 |
|
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
blanchet
parents:
diff
changeset
|
83 |
<HR><!------------------------------------------------------------------------> |