Mechanically Verifying the Correctness of an Offline Partial Evaluator

We show that using deductive systems to specify an offline partial evaluator allows one to specify, prototype, and mechanically verify correctness via meta-programming — all within a single framework.

[1]  F. Pfenning Logic programming in the LF logical framework , 1991 .

[2]  Yves Bertot,et al.  Reasoning with Executable Specifications , 1995, TAPSOFT.

[3]  Olivier Danvy,et al.  Continuation-based partial evaluation , 1994, LFP '94.

[4]  John Hannan,et al.  Extended natural semantics , 1993, Journal of Functional Programming.

[5]  David Sands,et al.  Total correctness by local improvement in program transformation , 1995, POPL '95.

[6]  Frank Pfenning,et al.  Implementing the Meta-Theory of Deductive Systems , 1992, CADE.

[7]  Frank Pfenning,et al.  A modal analysis of staged computation , 1996, POPL '96.

[8]  Frank Pfenning,et al.  A Proof of the Church-Rosser Theorem and its Representation in a Logical Framework , 1992 .

[9]  Neil D. Jones,et al.  A partial evaluator for the untyped lambda-calculus , 1991, Journal of Functional Programming.

[10]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[11]  Robert Glück,et al.  Towards Unifying Partial Evaluation, Deforestation, Supercompilation, and GPC , 1994, ESOP.

[12]  Forbes AvenuePittsburgh,et al.  Compiler Veriication in Lf , 1992 .

[13]  Morten Welinder,et al.  Partial Evaluation and Correctness , 1997 .

[14]  Tobias Nipkow Winskel is (Almost) Right: Towards a Mechanized Semantics Textbook , 1996, FSTTCS.

[15]  Torben Æ. Mogensen Self-applicable Partial Evaluation for Pure Lambda Calculus , 1992, PEPM.

[16]  Sandrine Blazy,et al.  Formal Specification and Prototyping of a Program Specializer , 1995, TAPSOFT.

[17]  Frank Pfenning,et al.  Higher-order abstract syntax , 1988, PLDI '88.

[18]  Flemming Nielson,et al.  Abstract interpretation: a semantics-based tool for program analysis , 1995, LICS 1995.

[19]  Andrew D. Gordon Bisimilarity as a theory of functional programming , 1995, MFPS.

[20]  Robert D. Tennent,et al.  Semantics of programming languages , 1991, Prentice Hall International Series in Computer Science.

[21]  Graham Collins A Proof Tool for Reasoning About Functional Programs , 1996, TPHOLs.

[22]  Jens Palsberg,et al.  Correctness of binding-time analysis , 1993, Journal of Functional Programming.

[23]  John Hannan,et al.  Compiler verification in LF , 1992, [1992] Proceedings of the Seventh Annual IEEE Symposium on Logic in Computer Science.

[24]  Dale Miller,et al.  Deriving Mixed Evaluation from Standard Evaluation for a Simple Functional Language , 1989, MPC.

[25]  Carl A. Gunter Semantics of programming languages: structures and techniques , 1993, Choice Reviews Online.

[26]  Olivier Danvy,et al.  Tutorial notes on partial evaluation , 1993, POPL '93.

[27]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[28]  Furio Honsell,et al.  A framework for defining logics , 1993, JACM.

[29]  Joëlle Despeyroux,et al.  Proof of Translation in Natural Semantics , 1986, LICS.

[30]  W. V. Quine,et al.  Natural deduction , 2021, An Introduction to Proof Theory.

[31]  Mogens Nielsen,et al.  TAPSOFT '95: Theory and Practice of Software Development , 1995, Lecture Notes in Computer Science.

[32]  Olivier Danvy,et al.  A computational formalization for partial evaluation , 1996, Mathematical Structures in Computer Science.

[33]  Mitchell Wand,et al.  Specifying the correctness of binding-time analysis , 1993, POPL '93.

[34]  Carsten K. Gomard A self-applicable partial evaluator for the lambda calculus: correctness and pragmatics , 1992, TOPL.

[35]  Frank Pfenning,et al.  Natural Semantics and Some of Its Meta-Theory in Elf , 1992, ELP.

[36]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .