Program Extraction from Nested Definitions

Minlog is a proof assistant which automatically extracts computational content in an extension of Godel's T from formalized proofs. We report on extending Minlog to deal with predicates defined using a particular combination of induction and coinduction, via so-called nested definitions. In order to increase the efficiency of the extracted programs, we have also implemented a feature to translate terms into Haskell programs. To illustrate our theory and implementation, a formalisation of a theory of uniformly continuous functions due to Berger is presented.

[1]  Ulrich Berger,et al.  Proofs, Programs, Processes , 2010, CiE.

[2]  Richard S. Bird,et al.  Nested Datatypes , 1998, MPC.

[3]  Sam Lindley,et al.  Extensional Rewriting with Sums , 2007, TLCA.

[4]  Nick Bezhanishvili,et al.  Finitely generated free Heyting algebras via Birkhoff duality and coalgebra , 2011, Log. Methods Comput. Sci..

[5]  Dirk Pattinson,et al.  Continuous Functions on Final Coalgebras , 2006, CMCS.

[6]  Helmut Schwichtenberg,et al.  Proofs and Computations , 2012, Perspectives in logic.

[7]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[8]  Pierre Letouzey Extraction in Coq: An Overview , 2008, CiE.

[9]  Bas Spitters,et al.  Type classes for efficient exact real arithmetic in Coq , 2011, Log. Methods Comput. Sci..

[10]  Maribel Fernández,et al.  Curry-Style Types for Nominal Terms , 2006, TYPES.

[11]  Dirk Pattinson,et al.  Representations of Stream Processors Using Nested Fixed Points , 2009, Log. Methods Comput. Sci..

[12]  Douglas S. Bridges,et al.  Constructivity in Mathematics , 2004 .

[13]  John Longley Interpreting Localized Computational Effects Using Operators of Higher Type , 2008, CiE.

[14]  D. Dalen Review: Georg Kreisel, Godel's Intepretation of Heyting's Arithmetic; G. Kreisel, Relations Between Classes of Constructive Functionals; Georg Kreisel, A. Heyting, Interpretation of Analysis by Means of Constructive Functionals of Finite Types , 1971 .

[15]  Dana S. Scott,et al.  Some Domain Theory and Denotational Semantics in Coq , 2009, TPHOLs.

[16]  Ulrich Berger,et al.  Program Extraction from Normalization Proofs , 2006, Stud Logica.

[17]  Freek Wiedijk,et al.  The Seventeen Provers of the World , 2006 .

[18]  Edwin Wiedmer Exaktes Rechnen mit reellen Zahlen und anderen unendlichen Objekten , 1977 .

[19]  Freek Wiedijk,et al.  The Seventeen Provers of the World, Foreword by Dana S. Scott , 2006, The Seventeen Provers of the World.

[20]  Alberto Ciaffaglione,et al.  A Co-inductive Approach to Real Numbers , 1999, TYPES.

[21]  HELMUT SCHWICHTENBERG,et al.  CONSTRUCTIVE ANALYSIS WITH WITNESSES , 2007 .

[22]  E. Wiedmer,et al.  Computing with Infinite Objects , 1980, Theor. Comput. Sci..

[23]  Bart Jacobs,et al.  An introduction to (co)algebra and (co)induction , 2011, Advanced Topics in Bisimulation and Coinduction.

[24]  Thorsten Altenkirch,et al.  Mixing Induction and Coinduction , 2009 .

[25]  Ulrich Berger,et al.  From coinductive proofs to exact real arithmetic: theory and applications , 2011, Log. Methods Comput. Sci..

[26]  Tobias Nipkow,et al.  Executing Higher Order Logic , 2000, TYPES.

[27]  Tarmo Uustalu,et al.  Resumptions, Weak Bisimilarity and Big-Step Semantics for While with Interactive I/O: An Exercise in Mixed Induction-Coinduction , 2010, SOS.

[28]  E. Bishop Foundations of Constructive Analysis , 2012 .