Initial Report on a Lisp Programmer's Apprentice
- 1 November 1978
- journal article
- Published by Institute of Electrical and Electronics Engineers (IEEE) in IEEE Transactions on Software Engineering
- Vol. SE-4 (6) , 456-467
- https://doi.org/10.1109/tse.1978.233869
Abstract
This paper reports on the initial design and partial implementation of an interactive programming environment to be used by expert programmers. The system is based on three forms of program description: 1) definition of structured data objects, their parts, properties, and relations between them, 2) input–output specification of the behavior of program segments, and 3) a hierarchical representation of the internal structure of programs (plans). The plan representation is of major theoretical interest because it includes not only data flow and control flow relationships between subsegments of a program, but also goal-subgoal, prerequisite, and other logical dependencies between the specifications of the subsegments. Plans are utilized both for describing particular programs and in the compilation of a knowledge base of more abstract knowledge about programming, such as the concept of a loop and various specializations, such as enumeration loops and search loops. We also describe a deductive system which can verify the correctness of plans involving side effects on complex data with structure sharing.Keywords
This publication has 12 references indexed in Scilit:
- Abstraction mechanisms in CLUCommunications of the ACM, 1977
- An Introduction to Proving the Correctness of ProgramsACM Computing Surveys, 1976
- Symbolic execution and program testingCommunications of the ACM, 1976
- Towards a programming apprenticeIEEE Transactions on Software Engineering, 1975
- Breaking the complexity barrier againPublished by Association for Computing Machinery (ACM) ,1973
- Proof of correctness of data representationsActa Informatica, 1972
- Proving Programs to be CorrectIEEE Transactions on Computers, 1971
- Proof of a programCommunications of the ACM, 1971
- An axiomatic basis for computer programmingCommunications of the ACM, 1969
- Assigning meanings to programsPublished by American Mathematical Society (AMS) ,1967