Introduction to mathematical logic (3rd ed.)
Introduction to mathematical logic (3rd ed.)
Experiments with a Heuristic Compiler
Journal of the ACM (JACM)
A Machine-Oriented Logic Based on the Resolution Principle
Journal of the ACM (JACM)
Formalization of Properties of Functional Programs
Journal of the ACM (JACM)
Experiments with a deductive question-answering program
Communications of the ACM
An interpretation oriented theorem prover over integers
STOC '70 Proceedings of the second annual ACM symposium on Theory of computing
Translating recursion equations into flow charts
STOC '70 Proceedings of the second annual ACM symposium on Theory of computing
The use of theorem-proving techniques in question-answering systems
ACM '68 Proceedings of the 1968 23rd ACM national conference
Comparative Schematology
A program verifier
The application of theorem proving to question-answering systems
The application of theorem proving to question-answering systems
A situated-automata approach to the design of embedded agents
ACM SIGART Bulletin
Cost analysis of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Program synthesis based on Boyer-Moore theorem proving techniques
CSC '85 Proceedings of the 1985 ACM thirteenth annual conference on Computer Science
An Assessment of Techniques for Proving Program Correctness
ACM Computing Surveys (CSUR)
An improved program-synthesizing algorithm and its correctness
Communications of the ACM
Communications of the ACM
Cooperation of Formal Methods in an Engineering Based Software Development Process
IFM '00 Proceedings of the Second International Conference on Integrated Formal Methods
Contrasting translation, verification and synthesis in software and firmware engineering
MICRO 14 Proceedings of the 14th annual workshop on Microprogramming
Computer architecture for correct programming
ISCA '78 Proceedings of the 5th annual symposium on Computer architecture
DAC '73 Proceedings of the 10th Design Automation Workshop
Improving and refining programs by program manipulation
ACM '76 Proceedings of the 1976 annual conference
Reconstruction of algorithms from memory snapshots of their execution
ACM '76 Proceedings of the 1976 annual conference
On pattern recognition and description using many sorted predicate calculi
ACM '73 Proceedings of the ACM annual conference
A knowledge-based code generator generator
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
An overview of nonprocedural languages
Proceedings of the ACM SIGPLAN symposium on Very high level languages
Structured programming and automatic program synthesis
Proceedings of the ACM SIGPLAN symposium on Very high level languages
The use of examples in program construction and debugging
ACM '75 Proceedings of the 1975 annual conference
SYNVER: A system for the automatic synthesis and verification of synchronization processes
ACM '74 Proceedings of the 1974 annual conference - Volume 1
Combinatorial sketching for finite programs
Proceedings of the 12th international conference on Architectural support for programming languages and operating systems
Structured programming with go to statements
Classics in software engineering
From Predicates to Programs: The Semantics of a Method Language
Electronic Notes in Theoretical Computer Science (ENTCS)
Speeding up the Synthesis of Programs from Traces
IEEE Transactions on Computers
Theory of computing in computer science education
AFIPS '72 (Spring) Proceedings of the May 16-18, 1972, spring joint computer conference
A summary of progress toward proving program correctness
AFIPS '72 (Fall, part I) Proceedings of the December 5-7, 1972, fall joint computer conference, part I
The QA4 language applied to robot planning
AFIPS '72 (Fall, part II) Proceedings of the December 5-7, 1972, fall joint computer conference, part II
Algorithms and Architectures of Artificial Intelligence
Proceedings of the 2007 conference on Algorithms and Architectures of Artificial Intelligence
Challenge to artificial intelligence: programming problems to be solved
IJCAI'71 Proceedings of the 2nd international joint conference on Artificial intelligence
STRIPS: a new approach to the application of theorem proving to problem solving
IJCAI'71 Proceedings of the 2nd international joint conference on Artificial intelligence
Putting theories together to make specifications
IJCAI'77 Proceedings of the 5th international joint conference on Artificial intelligence - Volume 2
Concurrency in proof normalization and logic programming
IJCAI'85 Proceedings of the 9th international joint conference on Artificial intelligence - Volume 2
Automatic program synthesis from example problems
IJCAI'75 Proceedings of the 4th international joint conference on Artificial intelligence - Volume 1
Knowledge and reasoning in program synthesis
IJCAI'75 Proceedings of the 4th international joint conference on Artificial intelligence - Volume 1
Artificial intelligence and automatic programming in CAI
IJCAI'73 Proceedings of the 3rd international joint conference on Artificial intelligence
Automatic program synthesis in second-order logic
IJCAI'73 Proceedings of the 3rd international joint conference on Artificial intelligence
Program synthesis from natural deduction proofs
IJCAI'79 Proceedings of the 6th international joint conference on Artificial intelligence - Volume 1
From program verification to program synthesis
Proceedings of the 37th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A fold/unfold transformation framework for rewrite theories extended to CCT
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Behavioural specifications from class models
IFM'07 Proceedings of the 6th international conference on Integrated formal methods
PLDI '10 Proceedings of the 2010 ACM SIGPLAN conference on Programming language design and implementation
Path-based inductive synthesis for program inversion
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
Communications of the ACM
Comfusy: a tool for complete functional synthesis
CAV'10 Proceedings of the 22nd international conference on Computer Aided Verification
Bugs, moles and skeletons: symbolic reasoning for software development
IJCAR'10 Proceedings of the 5th international conference on Automated Reasoning
Program extrapolation with jennisys
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Synthesis modulo recursive functions
Proceedings of the 2013 ACM SIGPLAN international conference on Object oriented programming systems languages & applications
Hi-index | 48.27 |
An elementary outline of the theorem-proving approach to automatic program synthesis is given, without dwelling on technical details. The method is illustrated by the automatic construction of both recursive and iterative programs operating on natural numbers, lists, and trees.In order to construct a program satisfying certain specifications, a theorem induced by those specifications is proved, and the desired program is extracted from the proof. The same technique is applied to transform recursively defined functions into iterative programs, frequently with a major gain in efficiency.It is emphasized that in order to construct a program with loops or with recursion, the principle of mathematical induction must be applied. The relation between the version of the induction rule used and the form of the program constructed is explored in some detail.