scispace - formally typeset
Search or ask a question

Showing papers on "Functional logic programming published in 1975"


Journal ArticleDOI
TL;DR: Concurrent Pascal as discussed by the authors is a programming language for structured programming of computer operating systems that extends the sequential programming language Pascal with concurrent programming tools called processes and monitors, which can be expressed informally by means of pictures illustrating a hierarchical design of a simple spooling system.
Abstract: Describes a new programming language for structured programming of computer operating systems. It extends the sequential programming language Pascal with concurrent programming tools called processes and monitors. Section I explains these concepts informally by means of pictures illustrating a hierarchical design of a simple spooling system. Section II uses the same example to introduce the language notation. The main contribution of Concurrent Pascal is to extend the monitor concept with an explicit hierarchy of access rights to shared data structures that can be stated in the program text and checked by a compiler.

576 citations


Journal ArticleDOI
TL;DR: The deduction system herein is shown to be consistent and also deduction complete with respect to Hoare's system and a subgoaler for the deduction system is described whose input is a significant subset of Pascal programs plus inductive assertions.
Abstract: Defining the semantics of programming languages by axioms and rules of inference yields a deduction system within which proofs may be given that programs satisfy specifications. The deduction system herein is shown to be consistent and also deduction complete with respect to Hoare's system. A subgoaler for the deduction system is described whose input is a significant subset of Pascal programs plus inductive assertions. The output is a set of verification conditions or lemmas to be proved. Several non-trivial arithmetic and sorting programs have been shown to satisfy specifications by using an interactive theorem prover to automatically generate proofs of the verification conditions. Additional components for a more powerful verification system are under construction.

157 citations


Journal ArticleDOI
TL;DR: The Planner Project is constructing a programming apprentice to assist in knowledge based programming designed for interactive use by expert programmers in the meta-evaluation of implementations in the context of their contracts and background knowledge.
Abstract: The Planner Project is constructing a programming apprentice to assist in knowledge based programming. The programming apprentice is designed for interactive use by expert programmers in the meta-evaluation of implementations in the context of their contracts and background knowledge. Meta-evaluation produces a justification which makes explicit exactly how the module depends on the contracts of other modules and on the background knowledge. The justification is used in answering questions on the behavioral dependencies between modules and in analyzing the implications of perturbations in specifications and/or implementation.

80 citations


Journal ArticleDOI
Niklaus Wirth1
TL;DR: The programming language PASCAL is assessed in the light of “reliable programming” and with the background of five years of experience with the language, and some features are selected to point out remaining problems.
Abstract: The programming language PASCAL is assessed in the light of “reliable programming” and with the background of five years of experience with the language. Some features are selected to point out remaining problems, either inherent or specific, from which some guidelines for the design or choice of languages for reliable programming are derived. Among the discussed features are the concept of data type, the sequential file structure, and the type union.

56 citations


Proceedings ArticleDOI
19 May 1975
TL;DR: What is extensibility?
Abstract: What is extensibility? What is it good for, if anything? Is it worth bothering about when designing a programming language?

51 citations


Proceedings ArticleDOI
Niklaus Wirth1
01 Jan 1975
TL;DR: The programming language Pascal is assessed in the light of `reliable programming' and with the background of five years of experience with the language, and some features are selected to point out remaining problems.
Abstract: The programming language PASCAL is assessed in the light of “reliable programming” and with the background of five years of experience with the language. Some features are selected to point out remaining problems, either inherent or specific, from which some guidelines for the design or choice of languages for reliable programming are derived. Among the discussed features are the concept of data type, the sequential file structure, and the type union.

30 citations


Journal ArticleDOI
TL;DR: Some social aspects of pro gramming are illuminated through analogies with similar aspects of mathematics and natural languages, and it is suggested that Fortran and Cobol will remain dominant for a long time to come.
Abstract: Some social aspects of pro gramming are illuminated through analogies with similar aspects of mathematics and natural languages. The split between pure and applied mathematics is found similarly in programming. The development of natural languages toward flexionless, word-order based language types speaks for programming language design based on general, abstract constructs. By analogy with incidents of the history of artificial, auxiliary languages it is suggested that Fortran and Cobol will remain dominant for a long time to come. The most promising avenues for further work of wide influence are seen to be high quality program literature (i.e. programs) of general utility and studies of questions related to program style.

29 citations


Proceedings Article
Richard Fikes1
03 Sep 1975
TL;DR: The use of a 3 valued logic, generator functions to deduce answers to model queries, the saving and maintaining of derived results, and new facilities for modeling changes produced by the occurrence of events are discussed.
Abstract: This paper presents some programming facilities for modeling the semantics of a task domain and for describing the situations that occur in that domain as a task is being carried out Each such description models a "state" of the task environment, and any given state can be transformed into a new state by the occurrence of an event that aIters the environment Such modeling systems are vital in many Al systems, particularly those that do question answering and those that do automatic generation and execution monitoring of plans The modeling mechanisms described are basically extensions and modifications of facilities typically found in Al programming languages such as PLANNER, CONN1VER, and QA4 In particular, we discuss our use of a 3 valued logic, generator functions to deduce answers to model queries, the saving and maintaining of derived results, and new facilities for modeling stntc changes produced by the occurrence of events

29 citations


Proceedings ArticleDOI
F. T. Baker1
01 Jan 1975
TL;DR: How structured programming methodology has been introduced into a large production programming organization using an integrated but flexible approach is discussed and recommendations based on this generally successful experience are made.
Abstract: This paper discusses how structured programming methodology has been introduced into a large production programming organization using an integrated but flexible approach. It next analyzes the advantages and disadvantages of each component of the methodology and presents some quantitative results on its use. It concludes with recommendations based on this generally successful experience, which could be useful to other organizations interested in improving reliability and productivity.

27 citations


Journal ArticleDOI

21 citations



Proceedings ArticleDOI
01 Jan 1975
TL;DR: By analogy with incidents of the history of artificial, auxiliary languages it is suggested that Fortran and Cobol will remain dominant for a long time to come in programming.
Abstract: Some social aspects of programming are illuminated through analogies with similar aspects of mathematics and natural languages. The split between pure and applied mathematics is found similarly in programming. The development of natural languages toward flexionless, word-order based language types speaks for programming language design based on general, abstract constructs. By analogy with incidents of the history of artificial, auxiliary languages it is suggested that Fortran and Cobol will remain dominant for a long time to come. The most promising avenues for further work of wide influence is seen to be high quality program literature (i.e. programs) of general utility and studies of questions related to program style.

Proceedings ArticleDOI
19 May 1975
TL;DR: The past few years have witnessed an increased understanding of the relationship between programming languages and problem solving, and it has been observed that certain languages and language features are particularly well suited for the use of systematic programming techniques, while others hinder or discourage such discipline.
Abstract: The past few years have witnessed an increased understanding of the relationship between programming languages and problem solving. Programming is now understood to be a rather difficult task which requires the simultaneous application of principles, skills, and art. Computer scientists have recognized that the features of a programming language can have a significant effect upon the ease with which reliable programs can be developed. It has also been observed that certain languages and language features are particularly well suited for the use of systematic programming techniques, while others hinder or discourage such discipline. Of course, it is possible to write well-structured, clearly organized programs in any programming language, but such programs have often been the exception rather than the rule.



Journal ArticleDOI
TL;DR: This paper proposes that the steps be expressed as proofs of a program for the eight queens problem, and the proof method is applied across two of the steps of the development.
Abstract: Wirth (1971) has proposed a method of `stepwise refinement' for writing computer programs. This paper proposes that the steps be expressed as proofs. A program for the eight queens problem is developed, and the proof method is applied across two of the steps of the development. The strengths and weaknesses of the method, and its implications for the programming process and programming language design are discussed.

Journal ArticleDOI
TL;DR: A simple correspondence is presented between the elementary constructs of programming languages and the lambda-calculus, using intuitive, functional interpretations of programming language constructs, completely avoiding the notions of machine memory and address.

Proceedings ArticleDOI
01 Apr 1975
TL;DR: The main topic of the paper is to introduce a concept for structured display programming in interactive computer graphics and to discuss the suitability of FORTRAN, ALGOL, PL/I, and APL as the host language for such a programming system.
Abstract: The main topic of the paper is to introduce a concept for structured display programming in interactive computer graphics and to discuss the suitability of FORTRAN, ALGOL, PL/I, and APL as the host language for such a programming system. To this end, the interrelationship between picture structures, data structures, and language structures is first established. Based on the obtained conclusions, a model language for interactive display programming (GRIP) is introduced. The suitability of the above mentioned languages is discussed, and experiences with the implementation of the GRIP philosophy in some of these languages are communicated.


Proceedings ArticleDOI
01 Jan 1975
TL;DR: The outline of an introductory FORTRAN programming course based on structured programming is presented, using the language IFTRAN as a FORTRan preprocessor to teach program development by means of top-down stepwise refinement.
Abstract: The outline of an introductory FORTRAN programming course based on structured programming is presented. The language IFTRAN was used as a FORTRAN preprocessor, allowing regular FORTRAN statements plus more powerful conditional and looping statements. Program development was taught in the course by means of top-down stepwise refinement. Students were well motivated and developed a professional attitude towards programming.

Journal ArticleDOI
Peter Kugel1
TL;DR: This paper proposes to focus on systems that "do more" than such systems in the sense that they require less complete information about the programs they are to generate.
Abstract: An automatic programming system is a system (usually a programmed computer) that generates a program from partial information about that program (Figure 1). Looked at in this general way, automatic programming systems are hardly new. Assemblers are automatic programming systems. So are compilers, debugging systems, and even loaders. In this paper, I propose to focus on systems that "do more" than such systems in the sense that they require less complete information about the programs they are to generate.


Proceedings Article
03 Sep 1975
TL;DR: An Interpreter for the programming language predicate logic is described and some topics are; syntax and proof procedure, procedure evocation, function transformation, goal variation and interactive computational control.
Abstract: We describe an Interpreter for the programming language predicate logic. Some topics are; syntax and proof procedure, procedure evocation, function transformation, goal variation and interactive computational control.

Journal ArticleDOI
TL;DR: This work shows how the concept of abstract data type as realize d in CLU-can simplify the construction of provably correct programs.
Abstract: Concepts of good program structure can and should be reflected in th e design of programming languages. Thus we have two criteria for use by language designers : First, work in the area of formal proof of program correctnes s has shown that program proofs are greatly simplified if certain features are absent from the language in which the programs are expressed-for example, n o goto's, or the absence of side effects in the execution of procedures. Second : the closeness of the language to the problem domain affects the ease with whic h the programmer may express a problem solution-in particular, the data type s of the language should provide a convenient match to the abstractions of th e problem. A programming language should provide tools for building abstraction s that are natural for the problem at hand. These two design criteria are being applied to the concept of data type i n the design of the programming language CLU being developed by Professor Lisko v and colleagues at MIT[1]. I would like to show how the concept of abstract data type as realize d in CLU-can simplify the construction of provably correct programs. To thi s end we will consider the development of a program by \"stepwise refinement \" i n PASCAL and in CLU. The problem to be solved is the sequence problem studied by Niklaus Wirth[2] : On the set containing the integers 1, 2 and 3, construct a sequence o f length N containing no adjacent equal subsequences. The strategy of solution is to generate a series of candidate sequences such that :-Every sequence that could be a Good sequence is generated. It is easy to check that a candidate is a Good sequence. We start with an initial candidate-the empty sequence and form new candidates (Figure 1) by means of two operations : Extend and Change. .

Journal ArticleDOI
TL;DR: The process of designing and evolving a programming system cannot be characterized as either top-down or bottom-up or any other well-structured process, and any combination of the two is compatible with a structured programming philosophy.
Abstract: The process of designing and evolving a programming system cannot be characterized as either top-down or bottom-up or any other well-structured process. The results, however, is a well-structured program. Since both approaches have the same goal either approach or a combination of the two is compatible with a structured programming philosophy.

Journal ArticleDOI
John A. Self1
TL;DR: This note describes a method of enabling non‐deterministic algorithms to be written in conventional deterministic programming languages through a dynamic manipulation of stack contents, and is contrasted with standard techniques of implementing non‐Deterministic Programming languages.
Abstract: This note describes a method of enabling non-deterministic algorithms to be written in conventional deterministic programming languages. The method involves a dynamic manipulation of stack contents, and is contrasted with standard techniques of implementing non-deterministic programming languages.


Journal ArticleDOI
TL;DR: Let the ma1n pr09ram 6e de5cr16ed 6y a 51mp1e f10wchart 0n a 51n~1e 5heet 0f paper, w1th each n0de 1a6e11ed 6Y a 5u6act10n5 may, 1n turn0 6e exp1a1ned 0f a 5heet0f 1t5 0wn (recur51ve1y).
Abstract: Let the ma1n pr09ram 6e de5cr16ed 6y a 51mp1e f10wchart 0n a 51n~1e 5heet 0f paper, w1th each n0de 1a6e11ed 6y a 5u6act10n. Each 0f the 5u6act10n5 may, 1n turn0 6e exp1a1ned 0n a 5heet 0f 1t5 0wn (recur51ve1y). N0 c0nnect0r5 6etween 5heet5 w111 0ccur. 7he re5u1t1n~ pr09ram 15 a tree 0f act10n5: each 5heet repre5ent5 0ne n0n-term1na1 n0de 5h0w1n9 the 1ahe15 0f the d1rect 5u6tree5 0f that n0de. 7he ma1n pr09ram 15 the r00t, and the 0ccurrence5 0f unde5cr16ed, pr1~:11t1ve act10n5 are t11e term1na1 n0de5. 50me advantaF.e5 0f 5uch a tree 5tructure are: 1.1. 7he 1nte11ectua1 eff0rt re4u1red t0 under5tand a pr09ram depend5 0n the num6er 0f 1nteract10n5 6etween 1t5 5u6act1cn5. 1n a f10wchart, each arc repre5ent5 5uch an 1nteract10n. 1n an unre5tr1cted f10wchart, t11e num6er 0f p055161e arc5 15 the 54uare 0f the num6er 0f vert1ce5. 7heref0re, the t1me re4u1red f0r under5tand1n9 tend5 t0 1ncrea5e w1th the 54uare 0f the Pr09ram 1en9th. 1n the tree-5tructured f10wchart de5cr16ed a60ve, there 15 an upper 60und t0 the num6er 0f vert1ce5 that can rea50na61y 6e drawn 0n a 5heet. 7hu5 the num6er 0f • p055161e arc5 15 pr0p0rt10na1 t0 the num6er 0f vert1ce5 (the pr0p0rt10na11ty fact0r 15 the 54uare 0f th15 60und). 7h15 fact 5upp0rt5 the w1de-5pread h0pe that the eff0rt re4u1red f0r under5tand1n9 a 5tructured pr0F.ram 5h0u1d 6e pr0p0rt10na1 t0 pr0F~ram 1en9th rather than t0 1t5 54uare. 1.2. 1ndented f0rmat5 can ea511y 6e u5ed t0 repre5ent tree5; f10wchart 1nput 15 c1um5y, at 6e5t. 1.3. 5u6tree5 repre5ent 5u6act10n5 1n a natura1 way, and can 6e 91ven mean1n9fu1 mnem0n1c name5. 1.~. Adaptat10n 0f Pr09ram5 thu5 6ec0me5 ea51er.

Proceedings ArticleDOI
01 Jan 1975
TL;DR: The implementation of a large compiler system is described, and conclusions are drawn about organization, time scales and the quality achieved.
Abstract: The implementation of a large compiler system is described, and conclusions are drawn about organization, time scales and the quality achieved.