Extending Nunchaku to Dependent Type Theory

Nunchaku is a new higher-order counterexample generator based on a sequence of transformations from polymorphic higher-order logic to first-order logic. Unlike its predecessor Nitpick for Isabelle, it is designed as a stand-alone tool, with frontends for various proof assistants. In this short paper, we present some ideas to extend Nunchaku with partial support for dependent types and type classes, to make frontends for Coq and other systems based on dependent type theory more useful.

[1]  Daniel Jackson Nitpick: A Checkable Specification Language , 1996 .

[2]  Viktor Kuncak,et al.  Relational analysis of algebraic datatypes , 2005, ESEC/FSE-13.

[3]  Benjamin C. Pierce,et al.  Foundational Property-Based Testing , 2015, ITP.

[4]  Stephan Merz,et al.  TLA + Proofs , 2012, FM.

[5]  Matthieu Sozeau,et al.  First-Class Type Classes , 2008, TPHOLs.

[6]  Panagiotis Manolios Counterexample Generation Meets Interactive Theorem Proving: Current Results and Future Opportunities , 2013, ITP.

[7]  Tobias Nipkow,et al.  Proof Synthesis and Reflection for Linear Arithmetic , 2008, Journal of Automated Reasoning.

[8]  Alexander Leitsch,et al.  Automated Model Building , 2010 .

[9]  Arnaud Gotlieb,et al.  A First Step in the Design of a Formally Verified Constraint-Based Testing Tool: FocalTest , 2012, TAP@TOOLS.

[10]  Georg Struth,et al.  Automating Algebraic Methods in Isabelle , 2011, ICFEM.

[11]  N. S. Barnett,et al.  Private communication , 1969 .

[12]  Cezary Kaliszyk,et al.  Hammering towards QED , 2016, J. Formaliz. Reason..

[13]  Andriy Dunets,et al.  Automated Flaw Detection in Algebraic Specifications , 2010, Journal of Automated Reasoning.

[14]  Viktor Kuncak,et al.  Satisfiability Modulo Recursive Programs , 2011, SAS.

[15]  Markus Wenzel,et al.  Type Classes and Overloading in Higher-Order Logic , 1997, TPHOLs.

[16]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2011, SIGP.

[17]  Tjark Weber,et al.  SAT-based finite model generation for higher-order logic , 2008 .

[18]  John K. Slaney,et al.  FINDER: Finite Domain Enumerator - System Description , 1994, CADE.

[19]  Konstantin Korovin Non-cyclic Sorts for First-Order Satisfiability , 2013, FroCos.

[20]  Colin Runciman,et al.  Smallcheck and lazy smallcheck: automatic exhaustive testing for small values , 2008, Haskell '08.

[21]  Wolfgang Reif,et al.  Flaw Detection in Formal Specifications , 2001, IJCAR.

[22]  Koen Claessen,et al.  New techniques that improve mace-style model nding , 2003 .

[23]  Daniel Jackson,et al.  Software Abstractions - Logic, Language, and Analysis , 2006 .

[24]  Harald Ganzinger,et al.  Resolution Theorem Proving , 2001, Handbook of Automated Reasoning.

[25]  S. Owre Random Testing in PVS , 2006 .

[26]  Jasmin Christian Blanchette,et al.  A Decision Procedure for (Co)datatypes in SMT Solvers , 2016, Journal of Automated Reasoning.

[27]  Susmit Sarkar,et al.  Nitpicking c++ concurrency , 2011, PPDP.

[28]  Cesare Tinelli,et al.  Model Finding for Recursive Functions in SMT , 2016, IJCAR.

[29]  Peter Dybjer,et al.  Combining Testing and Proving in Dependent Type Theory , 2003, TPHOLs.

[30]  Hantao Zhang,et al.  SEM: a System for Enumerating Models , 1995, IJCAI.

[31]  Jasmin Christian Blanchette,et al.  Automatic proofs and refutations for higher-order logic , 2012 .

[32]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[33]  Emina Torlak,et al.  Kodkod: A Relational Model Finder , 2007, TACAS.

[34]  Cesare Tinelli,et al.  Quantifier Instantiation Techniques for Finite Model Finding in SMT , 2013, CADE.

[35]  Lukas Bulwahn,et al.  The New Quickcheck for Isabelle - Random, Exhaustive and Symbolic Testing under One Roof , 2012, CPP.

[36]  Yves Bertot,et al.  Interactive Theorem Proving and Program Development: Coq'Art The Calculus of Inductive Constructions , 2010 .

[37]  Peter Baumgartner,et al.  Computing finite models by reduction to function-free clause logic , 2009, J. Appl. Log..

[38]  W. McCune A Davis-Putnam program and its application to finite-order model search: Quasigroup existence problems , 1994 .

[39]  Bart Jacobs,et al.  Translating Dependent Type Theory into Higher Order Logic , 1993, TLCA.

[40]  Andreas Lochbihler,et al.  Animating the Formalised Semantics of a Java-Like Language , 2011, ITP.

[41]  Koen Claessen,et al.  QuickCheck: a lightweight tool for random testing of Haskell programs , 2000, ICFP.

[42]  Fredrik Lindblad Property Directed Generation of First-Order Test Data , 2007, Trends in Functional Programming.

[43]  Tobias Nipkow,et al.  Nitpick: A Counterexample Generator for Higher-Order Logic Based on a Relational Model Finder , 2010, ITP.