src/HOL/TPTP/CASC/SysDesc_Nitpick.html
author blanchet
Tue, 21 May 2013 11:01:14 +0200
changeset 52098 6c38df1d294a
child 60716 8e82a83757df
permissions -rw-r--r--
added CASC-related files, to keep a public record of the Isabelle submission at the competition
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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&auml;t M&uuml;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 &sigma; to &tau; 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 |&sigma;| arguments of type &tau; 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&ndash;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&ndash;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&ndash;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&ndash;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><!------------------------------------------------------------------------>