No abstract available.
Automatic synthesis of optimal invariant assertions: Mathematical foundations
The problem of discovering invariant assertions of programs is explored in light of the fixpoint approach in the static analysis of programs, Cousot [1977a], Cousot[1977b].
In section 2 we establish the lattice theoric foundations upon which the ...
Abstractions, instantiations, and proofs of marking algorithms
A detailed look is taken at the problem of factoring program proofs into a proof of the underlying algorithm, followed by a proof of correct implementation of abstract variables at the concrete level. We do this considering four different concrete “...
Program synthesis by analogy
By extending a given analogy, a known program which solves a given problem is converted to a program which solves a different but analogous problem. The domains of the two problems need not be the same but they must be related by an initial specified ...
The automatic synthesis of recursive programs
We describe a deductive technique for the automatic construction of recursive programs to meet given input-output specifications. These specifications express what conditions the output of the desired program is expected to satisfy. The deductive ...
Control requirements for the design of production system architectures
Programs in the artificial intelligence domain impose unusual requirements on control structures. Production systems are a control structure with promising attributes for building, generally intelligent systems with large knowledge bases. This paper ...
Generalized procedure calling and content-directed invocation
We suggest that the concept of a strategy can profitably be viewed as knowledge about how to select from among a set of plausibly useful knowledge sources, and explore the framework for knowledge organization which this implies. We describe meta rules, ...
The incremental garbage collection of processes
This paper investigates some problems associated with an argument evaluation order that we call “future” order, which is different from both call-by-name and call-by-value, In call-by-future, each formal parameter of a function is bound to a separate ...
Macaroni is better than spaghetti
We present a stack implementation of multiple environments similar in principle to that of Bobrow and Wegbreit, but based on a model which provides both static and dynamic scoping. We note some of the pragmatic consequences of this choice of models; one ...
Design rationale for TELOS, a PASCAL-based AI language
TELOS is a PASCAL-based AI language intended to facilitate efficient development of efficient, well-structured programs. The design emphasizes powerful data abstraction and control abstraction mechanisms rather than the provision of particular high-...
Automated derivation of program control structure from natural language program descriptions
This paper describes a system which organizes a natural language description of a program into a conventional program control structure, as a part of a larger system for converting informal natural language program specifications into running programs. ...
What the nature of natural language tells us about how to make natural-language-like programming languages more natural
When a student is learning an algorithm from a textbook, his first approach is frequently through an English description. This is normally easier to understand than raw code, and sometimes easier than a flow chart, in spite of the fact that programming ...
Language facilities for programmable backtracking
Most languages intended for artificial intelligence applications include a search and backtracking facility. While built-in backtracking facilities are convenient, they are often too inflexible for use beyond a limited range of applicability. Other ...
CSSA: Language concepts and programming methodology
CSSA (Computing System for Societies of Actors) is an experimental programming language that originated from an attempt to design a language combining various new ideas having evolved from the fields of semantics of programming languages, artificial ...
Prolog - the language and its implementation compared with Lisp
Prolog is a simple but powerful programming language founded on symbolic logic. The basic computational mechanism is a pattern matching process (“unification”) operating on general record structures (“terms” of logic). We briefly review the language and ...
AMORD explicit control of reasoning
The construction of expert problem-solving systems requires the development of techniques for using modular representations of knowledge without encountering combinatorial explosions in the solution effort. This report describes an approach to dealing ...
A knowledge-based code generator generator
XGEN is a program that accepts a machine description and produces a good local code generator for an ALGOL-like language. It is organized as a production system of rules codifying previously acquired human skills for dealing with computer architecture ...
The PSI Program Model Builder - synthesis of very high-level programs
A system called the Program Model Builder (PMB) is being designed and implemented to perform the basic operations required to synthesize and modify programs. PMB plays a central role as one of the expert modules of the PSI (ψ) program synthesis system. ...
The selection of efficient implementations for a high-level language
This paper considers the problem of identifying an efficient set of implementations for the abstract constructs in a very high level program description. LIBRA is a system that prunes and expands a tree of partially implemented program descriptions, ...
Selection of representations for data structures
The process of selecting representations for data structures is considered. The model of the selection process we suggest is centered around a base of known abstract data structures and their representations. The abstract data structure for which a ...
A normal form for compiler testing
A formalism is presented for obtaining a normal form to be used in representing programs for compiler testing. Examples are used to motivate the features that must be considered when developing such a formalism. It is particularly suitable for ...
Program manipulation via an efficient production system
Systems for program transformation have been suggested by many authors [Knuth, Wegbreit, Loveman, Balzer, Standish2, Burstall & Darlington]. Several of these authors note that such transformation systems could be used to transform lucid, high-level, but ...
Self-redefinition as a program manipulation strategy
This is an exploration of a constructive strategy for program improvement and synthesis. A first part recalls unfolding-folding style of manipulations initiated by BURSTALL and DARLINGTON with an application to proofs of equivalence of certain function ...
Index Terms
Proceedings of the 1977 symposium on Artificial intelligence and programming languages



