| author | blanchet | 
| Fri, 05 Sep 2014 00:41:01 +0200 | |
| changeset 58187 | d2ddd401d74d | 
| parent 52098 | 6c38df1d294a | 
| child 60716 | 8e82a83757df | 
| 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><!------------------------------------------------------------------------> | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 2 | <H2>Nitpick 2013</H2> | 
| 
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 | |
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 54 | Thanks to Kodkod's amazing power, we expect that Nitpick will beat both Satallax | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 55 | and Refute with its hands tied behind its back in the TNT category. | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 56 | |
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 57 | <H3>References</H3> | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 58 | <DL> | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 59 | <DT> BK11 | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 60 | <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 | 61 | <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 | 62 | <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 | 63 | <DT> BN10 | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 64 | <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 | 65 | <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 | 66 | 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 | 67 | <DT> BWB+11 | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 68 | <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 | 69 | <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 | 70 | 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 | 71 | <DT> NPW13 | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 72 | <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 | 73 | <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 | 74 | <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 | 75 | <DT> TJ07 | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 76 | <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 | 77 | <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 | 78 | <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 | 79 | </DL> | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 80 | <P> | 
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 81 | |
| 
6c38df1d294a
added CASC-related files, to keep a public record of the Isabelle submission at the competition
 blanchet parents: diff
changeset | 82 | <HR><!------------------------------------------------------------------------> |