General branch and bound, and its relation to A* and AO*
Artificial Intelligence
Logic for problem-solving
A problem simplification approach that generates heuristics for constraint-satisfaction problems
Machine intelligence 11
Proving Theorems about LISP Functions
Journal of the ACM (JACM)
Program Improvement by Source-to-Source Transformation
Journal of the ACM (JACM)
Structured Programming with go to Statements
ACM Computing Surveys (CSUR)
Program Transformation Systems
ACM Computing Surveys (CSUR)
Program developments: formal explanations of implementations
Communications of the ACM
Learning and reasoning by analogy
Communications of the ACM
Syntactic source to source transforms and program manipulation
Communications of the ACM
Notes on recursion elimination
Communications of the ACM
Communications of the ACM
Correctness-preserving program transformations
POPL '75 Proceedings of the 2nd ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The Evolution of Programs
Knowledgebased Pgm Constr
Algorithms + Data Structures = Programs
Algorithms + Data Structures = Programs
A Computer Model of Skill Acquisition
A Computer Model of Skill Acquisition
A Discipline of Programming
Derivation of efficient DAG marking algorithms
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
The evolution of list-copying algorithms and the need for structured program verification
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Studies in Abstract/Concrete Mappings in Proving Algorithm Correctness
Proceedings of the 6th Colloquium, on Automata, Languages and Programming
One Abstract Accepting Algorithm for all Kinds of Parsers
Proceedings of the 6th Colloquium, on Automata, Languages and Programming
Improving and refining programs by program manipulation
ACM '76 Proceedings of the 1976 annual conference
Transformations of FP program schemes
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Abstractions, instantiations, and proofs of marking algorithms
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Proceedings of the 1977 symposium on Artificial intelligence and programming languages
Programming as an evolutionary process
ICSE '76 Proceedings of the 2nd international conference on Software engineering
Knowledge about programs: A model and case study
Proceedings of the international conference on Reliable software
Human Problem Solving
Generic implementation via analogies in the Ada programming languages
ACM SIGAda Ada Letters
PARIS: a system for reusing partially interpreted schemas
ICSE '87 Proceedings of the 9th international conference on Software Engineering
Analogical approach to specification derivation
IWSSD '89 Proceedings of the 5th international workshop on Software specification and design
Automatic Derivation of Formal Software Specifications from Informal Descriptions
IEEE Transactions on Software Engineering
Program transformation for the longest upsequence set problem
SAC '93 Proceedings of the 1993 ACM/SIGAPP symposium on Applied computing: states of the art and practice
Proceedings of the 21st international conference on Software engineering
A taxonomy for identifying a software component for uncertain and partial specifications
SAC '96 Proceedings of the 1996 ACM symposium on Applied Computing
An automated method of referencing Ada reusable code using lil
WADAS '87 Proceedings of the Joint Ada conference fifth national conference on Ada technology and fourth Washington Ada Symposium
IEEE Transactions on Knowledge and Data Engineering
Hi-index | 0.00 |
Our goal is to develop formal methods for abstracting a given set of programs into a program schemaand for instantiating a given schema to satisfy concrete specifications. Abstraction and instantiationare two important phases in software development which allow programmers to apply knowledgelearned in the solutions of past problems when faced with new situations. For example, from twoprograms using a linear (or binary) search technique, an abstract schema can be derived that embodiesthe shared idea and that can be instantiated to solve similar new problems. Along similar lines, thedevelopment and application of program transformations are considered.We suggest the formulation of analogies as a basic tool in program abstraction. An analogy is firstsought between the specifications of the given programs; this yields an abstract specification thatmay be instantiated to any of the given concrete specifications. The analogy is then used as a basisfor transforming the existing programs into an abstract schema that represents the embeddedtechnique, with the invariant assertions and correctness proofs of the given programs helping toverify and complete the analogy. A given concrete specification of a new problem may then becompared with the abstract specification of the schema to suggest an instantiation of the schemathat yields a correct program.