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 technique involves transforming the specifications by a collection of rules, summoned by pattern-directed function invocation. Some of these transformation rules express the semantics of the subject domain; others represent more general programming techniques. The rules that introduce conditional expressions and recursive calls into the program are discussed in some detail. The deductive techniques described are embedded in a running system called SYNSYS. This system accepts specifications expressed in high-level descriptive language and attempts to transform them into a corresponding LISP program. The transformation rules are expressed in the QLISP programming language. The synthesis of two programs performed by the system are presented. This research was supported in part by the Advanced Research Projects Agency of the Department of Defense under Contract MDA903-76-C-0206, by the National Science Foundation under Grant DCR72-03737 A01, by the Office of Naval Research under Contracts N00014-76-C-0687 and N00014-75-C-0816; and by a grant from the United States-Israel Binational Science Foundation (BSF), Jerusalem, Israel. The views and conclusions contained in this document are those of the authors and should not be interpreted as necessarily representing the official policies, either expressed or implied, of Stanford University, Stanford Research Institute, or the U.S. Government.
{"title":"The automatic synthesis of recursive programs","authors":"Z. Manna, R. Waldinger","doi":"10.1145/800228.806929","DOIUrl":"https://doi.org/10.1145/800228.806929","url":null,"abstract":"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 technique involves transforming the specifications by a collection of rules, summoned by pattern-directed function invocation. Some of these transformation rules express the semantics of the subject domain; others represent more general programming techniques. The rules that introduce conditional expressions and recursive calls into the program are discussed in some detail.\u0000 The deductive techniques described are embedded in a running system called SYNSYS. This system accepts specifications expressed in high-level descriptive language and attempts to transform them into a corresponding LISP program. The transformation rules are expressed in the QLISP programming language. The synthesis of two programs performed by the system are presented.\u0000 This research was supported in part by the Advanced Research Projects Agency of the Department of Defense under Contract MDA903-76-C-0206, by the National Science Foundation under Grant DCR72-03737 A01, by the Office of Naval Research under Contracts N00014-76-C-0687 and N00014-75-C-0816; and by a grant from the United States-Israel Binational Science Foundation (BSF), Jerusalem, Israel. \u0000 The views and conclusions contained in this document are those of the authors and should not be interpreted as necessarily representing the official policies, either expressed or implied, of Stanford University, Stanford Research Institute, or the U.S. Government.","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":"123565001","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}
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 heuristically optimized code and has been successfully used in a system for proving that programs written in a subset of LISP are correctly translated to assembly language.
{"title":"A normal form for compiler testing","authors":"H. Samet","doi":"10.1145/800228.806945","DOIUrl":"https://doi.org/10.1145/800228.806945","url":null,"abstract":"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 heuristically optimized code and has been successfully used in a system for proving that programs written in a subset of LISP are correctly translated to assembly language.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"193 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":"129422089","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}
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 with this problem based on making some knowledge which is usually implicitly part of an expert problem solver explicit, thus allowing this knowledge about control to be manipulated and reasoned about. The basic components of this approach involve using explicit representations of the control structure of the problem solver, and linking this and other knowledge manipulated by the expert by means of explicit data dependencies.
{"title":"AMORD explicit control of reasoning","authors":"J. Kleer, J. Doyle, G. Steele, G. Sussman","doi":"10.1145/800228.806940","DOIUrl":"https://doi.org/10.1145/800228.806940","url":null,"abstract":"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 with this problem based on making some knowledge which is usually implicitly part of an expert problem solver explicit, thus allowing this knowledge about control to be manipulated and reasoned about. The basic components of this approach involve using explicit representations of the control structure of the problem solver, and linking this and other knowledge manipulated by the expert by means of explicit data dependencies.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"8 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":"130572215","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}
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. Analysis of the input program fragments using a model of a human “reader” of specifications has been found to be a very successful adjunct to conventional “planning” methodologies. Natural language descriptions of programs can frequently be characterized as “rubble”—a very loosely organized set of almost independent description fragments [Schwartz]. Such specifications are often quite robust, due to a large degree of redundancy; they are also frequently quite concise, due to reliance on the readers' innate knowledge and their knowledge of the application domain. This paper discusses a paradigm for structuring the portion of “rubble” program descriptions which maps into conventional programming language control constructs and definition facilities.
{"title":"Automated derivation of program control structure from natural language program descriptions","authors":"D. Wile, R. Balzer, N. Goldman","doi":"10.1145/800228.806935","DOIUrl":"https://doi.org/10.1145/800228.806935","url":null,"abstract":"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. Analysis of the input program fragments using a model of a human “reader” of specifications has been found to be a very successful adjunct to conventional “planning” methodologies.\u0000 Natural language descriptions of programs can frequently be characterized as “rubble”—a very loosely organized set of almost independent description fragments [Schwartz]. Such specifications are often quite robust, due to a large degree of redundancy; they are also frequently quite concise, due to reliance on the readers' innate knowledge and their knowledge of the application domain. This paper discusses a paradigm for structuring the portion of “rubble” program descriptions which maps into conventional programming language control constructs and definition facilities.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"47 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":"126854861","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}
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 and programming languages.
{"title":"A knowledge-based code generator generator","authors":"C. Fraser","doi":"10.1145/800228.806941","DOIUrl":"https://doi.org/10.1145/800228.806941","url":null,"abstract":"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 and programming languages.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"110 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":"117232020","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}
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 “marking” algorithms and formulating a single abstract algorithm and set of abstract specifications that can be instantiated to each of the four concrete cases. An intermediate assertion, as well as sufficient conditions for correct initialization, invariance, and correctness at termination are given at the abstract level. Proofs at the concrete level are then given by exhibiting appropriate mapping functions (from the concrete state vector to the abstract variables), and showing that the sufficient conditions are true. Proofs of termination are given by instantiating “termination schemas”.
{"title":"Abstractions, instantiations, and proofs of marking algorithms","authors":"L. Yelowitz, A. G. Duncan","doi":"10.1145/800228.806927","DOIUrl":"https://doi.org/10.1145/800228.806927","url":null,"abstract":"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 “marking” algorithms and formulating a single abstract algorithm and set of abstract specifications that can be instantiated to each of the four concrete cases. An intermediate assertion, as well as sufficient conditions for correct initialization, invariance, and correctness at termination are given at the abstract level. Proofs at the concrete level are then given by exhibiting appropriate mapping functions (from the concrete state vector to the abstract variables), and showing that the sufficient conditions are true. Proofs of termination are given by instantiating “termination schemas”.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"13 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":"131635169","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}
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 intelligence, programming methodology, and language design in recent years: (1) Abstraction semantics improving denotational semantics by describing the semantics of programming language constructs uniformly in terms of operational abstractions [1,2]. (2) Some features of CSSA have been inspired by the actor concept of PLASMA [3].(3) Programming in terms of control and data abstractions. (4) Heirarchical control structures (dynamic generation and manipulation of actor nets). (5) Definable access operations and access control to shared data [4]. (6) Data driven and goal directed computation.
CSSA (Computing System for Societies of Actors)是一种实验性的程序设计语言,源于近年来在程序设计语言语义、人工智能、程序设计方法论、语言设计等领域发展起来的各种新思想的结合。(1)抽象语义(abstract semantics)通过用操作抽象统一描述编程语言结构的语义来改进指称语义[1,2]。(2) CSSA的一些特性受到了PLASMA[3]的actor概念的启发。(3)在控制和数据抽象方面的编程。(4)层级控制结构(行动者网络的动态生成和操纵)。(5)对共享数据[4]可定义的访问操作和访问控制。(6)数据驱动和目标导向计算。
{"title":"CSSA: Language concepts and programming methodology","authors":"H. P. Böhm, H. Fischer, P. Raulefs","doi":"10.1145/800228.806938","DOIUrl":"https://doi.org/10.1145/800228.806938","url":null,"abstract":"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 intelligence, programming methodology, and language design in recent years: (1) Abstraction semantics improving denotational semantics by describing the semantics of programming language constructs uniformly in terms of operational abstractions [1,2]. (2) Some features of CSSA have been inspired by the actor concept of PLASMA [3].(3) Programming in terms of control and data abstractions. (4) Heirarchical control structures (dynamic generation and manipulation of actor nets). (5) Definable access operations and access control to shared data [4]. (6) Data driven and goal directed computation.","PeriodicalId":188914,"journal":{"name":"Artificial Intelligence and Programming Languages","volume":"130 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":"134292398","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}
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 representation is required would not necessarily be in the base, but should be a combination of base data structures. After describing this model of selection and its motivation, two aspects of the process are examined in more detail: a) The interaction with the user is treated by defining a language for the natural description of data structure requirements and b) two main types of combinations—hierarchical and cross-product—are analyzed, clarifying the relation between representations for component data structures and a representation for the combination.
{"title":"Selection of representations for data structures","authors":"S. Rosenschein, Shmuel Katz","doi":"10.1145/800228.806944","DOIUrl":"https://doi.org/10.1145/800228.806944","url":null,"abstract":"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 representation is required would not necessarily be in the base, but should be a combination of base data structures.\u0000 After describing this model of selection and its motivation, two aspects of the process are examined in more detail: a) The interaction with the user is treated by defining a language for the natural description of data structure requirements and b) two main types of combinations—hierarchical and cross-product—are analyzed, clarifying the relation between representations for component data structures and a representation for the combination.","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":"129697694","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}
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 analogy. There are three features which distinguish the approach. First the analogy formation evolves gradually with the synthesis of the new program. Secondly the formation of the analogy is directed by the correctness proof of the known program. Finally the output of the synthesis process produces a correctness proof for the synthesized program.
{"title":"Program synthesis by analogy","authors":"J. W. Ulrich, R. Moll","doi":"10.1145/800228.806928","DOIUrl":"https://doi.org/10.1145/800228.806928","url":null,"abstract":"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 analogy. There are three features which distinguish the approach. First the analogy formation evolves gradually with the synthesis of the new program. Secondly the formation of the analogy is directed by the correctness proof of the known program. Finally the output of the synthesis process produces a correctness proof for the synthesized program.","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":"131343738","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}
L. Travis, Masahiro Honda, R. LeBlanc, Stephen Zeigler
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-level constructs. Among the many capabilities of TELOS are those intended to make it especially suitable for systematic AI model building, for example, in the areas of knowledge representation, planning, and reasoning. An event facility is provided which unifies the handling of conditional interrupts (demons), process suspension, process communication and execution faults. The context-dependent TELOS data base is referenceable either associatively or directly.
{"title":"Design rationale for TELOS, a PASCAL-based AI language","authors":"L. Travis, Masahiro Honda, R. LeBlanc, Stephen Zeigler","doi":"10.1145/800228.806934","DOIUrl":"https://doi.org/10.1145/800228.806934","url":null,"abstract":"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-level constructs. Among the many capabilities of TELOS are those intended to make it especially suitable for systematic AI model building, for example, in the areas of knowledge representation, planning, and reasoning. An event facility is provided which unifies the handling of conditional interrupts (demons), process suspension, process communication and execution faults. The context-dependent TELOS data base is referenceable either associatively or directly.","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":"129411914","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}