Synthesis of Programs in Abstract Data Types
In this paper we propose a method for program synthesis from constructive proofs based on a particular proof strategy, we call dischargeable set construction. This proof-strategy allows to build proofs in which active patterns (sequences of application of rules with proper computational content) can be distinguished from correctness patterns (concerning correctness properties of the algorithm implicitly contained in the proof). The synthesis method associates with every active pattern of the proof a program schema (in an imperative language) translating only the computational content of the proof. One of the main features of our method is that it can be applied to a variety of theories formalizing ADT’s and classes of ADT’s. Here we will discuss the method and the computational content of some principles of particular interest in the context of some classes of ADT’s.
Unable to display preview. Download preview PDF.
- 1.A. Avellone. The algorithmic content of constructive proofs: translating proof s into programs and interpreting proofs as programs. PhD thesis, Dipartimento di Scienze dell’Informazione, Università degli Studi di Milano, Italy, 1998.Google Scholar
- 3.U. Berger and H. Schwichtenberg. The greatest common divisor: A case study for program extraction from classical proofs. Lecture Notes in Computer Science, 1158:36–46, 1996.Google Scholar
- 5.A. Bertoni, G. Mauri, P. Miglioli, and M. Ornaghi. Abstract data types and their extension within a constructive logic. In G. Kahn, D.B. MacQueen, and G. Plotkin, editors, Semantics of data types, LNCS 173, pages 177–195. Springer Verlag, 1984.Google Scholar
- 6.A. Bertoni, G. Mauri, P. Miglioli, and M. Wirsing. On different approaches to abstract data types and the existence of recursive models. EATCS bulletin, 9:47–57, 1979.Google Scholar
- 7.H. Ehrig and B. Mahr. Fundamentals of Algebraic Specifications 1. Berlin: Springer-Verlag, 1985.Google Scholar
- 8.C.A. Goad. Proofs as description of computation. In CADE 5, pages 39–52. Springer-Verlag, LNCS, 1980.Google Scholar
- 9.K.-K. Lau and M. Ornaghi. On specification frameworks and deductive synthesis of logic programs. In Logic Program Synthesis and Transformation. Proceedings of LOPSTR’94, Pisa, Italy, 1994.Google Scholar
- 10.K.-K. Lau and M. Ornaghi. Towards an object-oriented methodology for deductive synthesis of logic programs. Lecture Notes in Computer Science, 1048:152–169, 1996.Google Scholar
- 11.P. Miglioli, U. Moscato, and M. Ornaghi. Program specification and synthesis in constructive formal systems. In K.-K. Lau and T.P. Clement, editors, Logic Program Synthesis and Transformation, Manchester 1991, pages 13–26. Springer-Verlag, 1991. Workshops in Computing.Google Scholar
- 15.C.R. Murthy. Classical proofs as programs: How, what, and why. Lecture Notes in Computer Science, 613:71–88, 1992.Google Scholar
- 16.H. Schwichtenberg. Proofs as programs. In P. Aczel, H. Simmons, and S. S. Wainer, editors, Proof Theory. A selection of papers from the Leeds Proof Theory Programme 1990, pages 81–113. Cambridge University Press, 1993.Google Scholar