Dennis F. Kibler, J. Neighbors, Thomas A. Standish
{"title":"Program manipulation via an efficient production system","authors":"Dennis F. Kibler, J. Neighbors, Thomas A. Standish","doi":"10.1145/800228.806946","DOIUrl":"https://doi.org/10.1145/800228.806946","url":null,"abstract":"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 possibly inefficient program descriptions into efficient but possibly less legible underlying concrete realizations. One problem, mentioned by Loveman [Loveman] is that of chaining together many low-level simple transformations to achieve high-level goals. For example, we may wish to chain together low-level transformations such as constant propagation, performing arithmetic at transformation time, dead variable elimination, empty statement removal and the like, to achieve the high-level goal of program simplification. This paper shows one technique for organizing sequences of low-level program transformations within an interactive programming medium to achieve nearly automatic global program improvements with low search times and minimal human intervention and guidance.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"40 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"116050014","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Automatic synthesis of optimal invariant assertions: Mathematical foundations","authors":"P. Cousot, R. Cousot","doi":"10.1145/800228.806926","DOIUrl":"https://doi.org/10.1145/800228.806926","url":null,"abstract":"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].\u0000 In section 2 we establish the lattice theoric foundations upon which the synthesis of invariant assertions is based. We study the resolution of a fixpoint system of equations by Jacobi's successive approximations method. Under continuity hypothesis we show that any chaotic iterative method converges to the optimal solution. In section 3 we study the deductive semantics of programs. We show that a system of logical forward equations can be associated with a program using the predicate transformer rules which define the semantics of elementary instructions. The resolution of this system of semantic equations by chaotic iterations leads to the optimal invariants which exactly define the semantics of this program. Therefore these optimal invariants can be used for total correctness proofs (section 4). Next we show that usually a system of inequations is used as a substitute for the system of equations. Hence the solutions to this system of inequations are approximate invariants which can only be used for proofs of partial correctness (section 5). In section 6 we show that symbolic execution of programs consists in fact in solving the semantic equations associated with this program. The construction of the symbolic execution tree corresponds to the chaotic successive approximations method. Therefore symbolic execution permits optimal invariant assertions to be discovered provided that one can pass to the limit, that is consider infinite paths in the symbolic execution tree. Induction nrinciDles can be used for that purpose. In section 7 we show how difference equations can be utilized to discover the general term of the sequence of successive approximations so that optimal invariants are obtained by a mere passage to the limit. In section 8 we show that an approximation of the optimal solution to a fixpoint system of equations can be obtained by strengthening the term of a chaotic iteration sequence. This formalizes the synthesis of approximate invariants by heuristic methods. Various examples provide a helpful intuitive support to the technical sections.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"19 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"115387111","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Control requirements for the design of production system architectures","authors":"M. Rychener","doi":"10.1145/800228.806930","DOIUrl":"https://doi.org/10.1145/800228.806930","url":null,"abstract":"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 presents examples to illustrate the unusual position taken by production systems on a number of control and pattern-matching issues. Examples are chosen to illustrate certain powerful features and to provide critical tests which might be used to evaluate the effectiveness of new designs.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"1 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130182329","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"What the nature of natural language tells us about how to make natural-language-like programming languages more natural","authors":"Jerry R. Hobbs","doi":"10.1145/800228.806936","DOIUrl":"https://doi.org/10.1145/800228.806936","url":null,"abstract":"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 languages are designed for algorithm specification while English is only pressed into its service. If the English is easier to understand, it is likely that it has many features that would ease programming itself. This paper investigates some of these features.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"15 33","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"120971333","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Prolog - the language and its implementation compared with Lisp","authors":"D. Warren, L. Pereira, Fernando C Pereira","doi":"10.1145/800228.806939","DOIUrl":"https://doi.org/10.1145/800228.806939","url":null,"abstract":"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 compare it especially with pure Lisp. The remainder of the paper discusses techniques for implementing Prolog efficiently; in particular we describe how to compile the patterns involved in the matching process. These techniques are as incorporated in our DECsystem-10 Prolog compiler (written in Prolog). The code it generates is comparable in speed with that produced by existing DEC10 Lisp compilers. We argue that pattern matching is a better method for expressing operations on structured data than conventional selectors and constructors - both for the user and for the implementor.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"87 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"134436186","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Macaroni is better than spaghetti","authors":"G. Steele","doi":"10.1145/800228.806933","DOIUrl":"https://doi.org/10.1145/800228.806933","url":null,"abstract":"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 is that no unnecessary control stack is retained for certain important constructions such as “upward funargs” and coroutines. We also discuss the correct treatment of exit functions, and the need for “entry functions” if dynamic switching of control contexts is to be consistent.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"4 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"132953547","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"The PSI Program Model Builder - synthesis of very high-level programs","authors":"B. P. McCune","doi":"10.1145/800228.806942","DOIUrl":"https://doi.org/10.1145/800228.806942","url":null,"abstract":"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 (&psgr;) program synthesis system. PMB builds a complete and consistent program model from small chunks of program specification received from other (&psgr;) experts. PMB must deal with the fact that these program fragments often omit details and may be incomplete, ambiguous, inconsistent, nonspecific, and arbitrarily ordered. The initial version of PMB has successfully synthesized a few program models from fragments. This work includes the evolution of a very high-level program modelling language, the identification and codification of useful very high-level programming knowledge including equivalence transformations, and the implementation of a rule-based problem solving system embodying this knowledge.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"131386122","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Generalized procedure calling and content-directed invocation","authors":"Randall Davis","doi":"10.1145/800228.806931","DOIUrl":"https://doi.org/10.1145/800228.806931","url":null,"abstract":"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, a means of encoding strategies that has been implemented in a program called TEIRESIAS, and explore their utility and contribution to problem solving performance.\u0000 Meta rules are also considered in the broader context of a tool for programming. We show that they can be considered a medium for expressing the criteria for retrieval of knowledge sources in a program, and hence can be used to define control regimes. The utility of this as a programming mechanism is considered.\u0000 Finally, we describe the technique of content-directed invocation used by meta rules, and consider its use as a way of implementing strategies. It is also considered in historical perspective as a knowledge source invocation technique, and its advantage over some existing mechanisms like goal-directed invocation is considered.\u0000 This work was supported in part by the Bureau of Health Sciences Research and Evaluation of HEW under Grant HS-01544 and by the Advanced Research Projects Agency under ARPA Order 2494. It was carried out on the SUMEX Computer System, supported by the NIH under Grant RR-00785. The views expressed are solely those of the author.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"14 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130326947","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"The incremental garbage collection of processes","authors":"H. Baker, C. Hewitt","doi":"10.1145/800228.806932","DOIUrl":"https://doi.org/10.1145/800228.806932","url":null,"abstract":"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 process (called a “future”) dedicated to the evaluation of the corresponding argument. This mechanism allows the fully parallel evaluation of arguments to a function, and has been shown to augment the expressive power of a language. \u0000 We discuss an approach to a problem that arises in this context: futures which were thought to be relevant when they were created become irrelevant through being ignored in the body of the expression where they were bound. The problem of irrelevant processes also appears in multiprocessing problem-solving systems which start several processors working on the same problem but with different methods, and return with the solution which finishes first. This parallel method strategy has the drawback that the processes which are investigating the losing methods must be identified, stopped, and re-assigned to more useful tasks.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"16 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"130601757","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}
{"title":"Self-redefinition as a program manipulation strategy","authors":"Philippe Chatelin","doi":"10.1145/800228.806947","DOIUrl":"https://doi.org/10.1145/800228.806947","url":null,"abstract":"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 compositions. Second part, in a more abstract way, presents three basic “forms” and their associated “transforms” constructed with this strategy in a hierarchical order ; they may serve as goals of transformations. Last part associates self-redefinition to mixed strategies for program composition: symbolic macro replacement, logarithmic speed up, resolution of formal recurrences. Each situation, where technique and method apply, is depicted on examples and open problems are evoked.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"3 1","pages":"0"},"PeriodicalIF":0.0,"publicationDate":"1977-08-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":null,"resultStr":null,"platform":"Semanticscholar","paperid":"126533535","PeriodicalName":null,"FirstCategoryId":null,"ListUrlMain":null,"RegionNum":0,"RegionCategory":"","ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":"","EPubDate":null,"PubModel":null,"JCR":null,"JCRName":null,"Score":null,"Total":0}