scispace - formally typeset
Search or ask a question
Journal ArticleDOI

The Cornell program synthesizer: a syntax-directed programming environment

01 Sep 1981-Communications of The ACM (ACM)-Vol. 24, Iss: 9, pp 563-573
TL;DR: The Cornell Program Synthesizer demands a structural perspective at all stages of program development and its separate features are unified by a common foundation: a grammar for the programming language.
Abstract: Programs are not text; they are hierarchical compositions of computational structures and should be edited, executed, and debugged in an environment that consistently acknowledges and reinforces this viewpoint. The Cornell Program Synthesizer demands a structural perspective at all stages of program development. Its separate features are unified by a common foundation: a grammar for the programming language. Its full-screen derivation-tree editor and syntax-directed diagnostic interpreter combine to make the Synthesizer a powerful and responsive interactive programming tool.
Citations
More filters
Book ChapterDOI
26 Sep 2005
TL;DR: This work integrates prior results to connect feature models, grammars, and propositional formulas, which allows arbitrary propositional constraints to be defined among features and enables off-the-shelf satisfiability solvers to debug feature models.
Abstract: Feature models are used to specify members of a product-line. Despite years of progress, contemporary tools often provide limited support for feature constraints and offer little or no support for debugging feature models. We integrate prior results to connect feature models, grammars, and propositional formulas. This connection allows arbitrary propositional constraints to be defined among features and enables off-the-shelf satisfiability solvers to debug feature models. We also show how our ideas can generalize recent results on the staged configuration of feature models.

1,231 citations


Cites background from "The Cornell program synthesizer: a ..."

  • ...This connection enables general-purpose, light-weight, and efficient logic truth maintenance systems (LTMSs)[15] to propagate constraints as users select features so that inconsistent product specifications are avoided — much like syntax-directed editors guarantee compilable programs [26]....

    [...]

Book
01 Apr 1986
TL;DR: This ebook presents full variant of this ebook in DjVu, PDF, ePub, doc, txt forms, and on the website you may read guides and different art eBooks online, either downloading or downloading.
Abstract: If looking for the ebook Implementing Mathematics with The Nuprl Proof Development System by R L Constable in pdf form, in that case you come on to the right site. We present full variant of this ebook in DjVu, PDF, ePub, doc, txt forms. You can reading Implementing Mathematics with The Nuprl Proof Development System online by R L Constable either downloading. Additionally to this ebook, on our website you may read guides and different art eBooks online, either download their. We wish to invite your note what our site does not store the book itself, but we grant url to website wherever you may load either reading online. So that if want to load pdf Implementing Mathematics with The Nuprl Proof Development System by R L Constable, then you have come on to correct website. We have Implementing Mathematics with The Nuprl Proof Development System txt, ePub, PDF, doc, DjVu forms. We will be pleased if you go back afresh.

1,186 citations

Journal ArticleDOI
TL;DR: A taxonomy of languages and environments designed to make programming more accessible to novice programmers of all ages, organized by their primary goal, either to teach programming or to use programming to empower their users.
Abstract: Since the early 1960's, researchers have built a number of programming languages and environments with the intention of making programming accessible to a larger number of people. This article presents a taxonomy of languages and environments designed to make programming more accessible to novice programmers of all ages. The systems are organized by their primary goal, either to teach programming or to use programming to empower their users, and then, by each system's authors' approach, to making learning to program easier for novice programmers. The article explains all categories in the taxonomy, provides a brief description of the systems in each category, and suggests some avenues for future work in novice programming environments and languages.

901 citations


Cites background from "The Cornell program synthesizer: a ..."

  • ...CORNELL PROGRAM SYNTHESIZER: CORNELL UNIVERSITY, 1981 [Reps and Teitelbaum 1989; Teitelbaum and Reps 1981]....

    [...]

  • ...CORNELL PROGRAM SYNTHESIZER:CORNELL UNIVERSITY, 1981 [Reps and Teitelbaum 1989; Teitelbaum and Reps 1981]....

    [...]

Proceedings ArticleDOI
03 Nov 1988
TL;DR: This paper describes the organization of the CENTAUR system and its main components, which are a database component that provides standardized representation and access to formal objects and their persistent storage; a logical engine that is used to execute formal specifications; an object-oriented man-machine interface that gives easy access to the system's functions.
Abstract: This paper describes the organization of the CENTAUR system and its main components. The system is a generic interactive environment. When given the formal specification of a particular programming language-including syntax and semantics — it produces a language specific environment. This resulting environment includes a structure editor, an interpreter/debugger and other tools, all of which have graphic interfaces. CENTAUR is made of three parts: a database component, that provides standardized representation and access to formal objects and their persistent storage; a logical engine that is used to execute formal specifications; an object-oriented man-machine interface that gives easy access to the system's functions. CENTAUR is essentially written in Lisp (Le_Lisp). The logical engine is Prolog (Mu-Prolog). The man-machine interface is built on top of the virtual graphics facility of Le_Lisp, itself primarily implemented on top of X-Windows.

403 citations


Cites methods from "The Cornell program synthesizer: a ..."

  • ...For example, adding a menu-driven mode of input, in the style of the Cornell Program Synthesizer [ 25 ], is the matter of one or two pages of code....

    [...]

Journal ArticleDOI
25 Apr 1984
TL;DR: The Synthesizer Generator is a tool for creating full-screen editors for manipulating programs in the language from language descriptions, specifying the desired relationships and the feedback to be given when they are violated.
Abstract: Programs are hierarchical compositions of formulae satisfying structural and extra-structural relationships. A program editor can use knowledge of such relationships to detect and provide immediate feedback about violations of them. The Synthesizer Generator is a tool for creating such editors from language descriptions. An editor designer specifies the desired relationships and the feedback to be given when they are violated, as well as a user interface; from the specification, the Synthesizer Generator creates a full-screen editor for manipulating programs in the language.

387 citations

References
More filters
Proceedings ArticleDOI
13 Oct 1975
TL;DR: The purpose of this paper is to introduce a single geometric structure, called the Voronoi diagram, which can be constructed rapidly and contains all of the relevant proximity information in only linear space, and is used to obtain O(N log N) algorithms for most of the problems considered.
Abstract: A number of seemingly unrelated problems involving the proximity of N points in the plane are studied, such as finding a Euclidean minimum spanning tree, the smallest circle enclosing the set, k nearest and farthest neighbors, the two closest points, and a proper straight-line triangulation. For most of the problems considered a lower bound of O(N log N) is shown. For all of them the best currently-known upper bound is O(N2) or worse. The purpose of this paper is to introduce a single geometric structure, called the Voronoi diagram, which can be constructed rapidly and contains all of the relevant proximity information in only linear space. The Voronoi diagram is used to obtain O(N log N) algorithms for all of the problems.

1,140 citations

Journal ArticleDOI
TL;DR: Algorithms that count the number of pairwise intersections among a set of N objects in the plane and algorithms that report all such intersections are given.
Abstract: An interesting class of "geometric intersection problems" calls for dealing with the pairwise intersections among a set of N objects in the plane, These problems arise in many applications such as printed circuit design, architectural data bases, and computer graphics. Shamos and Hoey have described a number of algorithms for detecting whether any two objects in a planar set intersect. In this paper we extend their work by giving algorithms that count the number of such intersections and algorithms that report all such intersections.

1,062 citations

Proceedings ArticleDOI
09 Dec 1968
TL;DR: In this article, a multisponsor research center at Stanford Research Institute in man-computer interaction is described, where the authors describe a multiscale multi-modal system.
Abstract: This paper describes a multisponsor research center at Stanford Research Institute in man-computer interaction.

664 citations

Proceedings ArticleDOI
25 Oct 1976
TL;DR: An O(N log N) algorithm is given to determine whether any two intersect and use it to detect whether two simple plane polygons intersect and to show that the Simplex method is not optimal.
Abstract: We develop optimal algorithms for forming the intersection of geometric objects in the plane and apply them to such diverse problems as linear programming, hidden-line elimination, and wire layout. Given N line segments in the plane, finding all intersecting pairs requires O(N2) time. We give an O(N log N) algorithm to determine whether any two intersect and use it to detect whether two simple plane polygons intersect. We employ an O(N log N) algorithm for finding the common intersection of N half-planes to show that the Simplex method is not optimal. The emphasis throughout is on obtaining upper and lower bounds and relating these results to other problems in computational geometry.

473 citations

Journal ArticleDOI
TL;DR: This paper investigates the problem of reporting all intersecting pairs in a set of n rectilinearly oriented rectangles in the plane and describes an algorithm that solves this problem in worst case time proportional to n lg n + k, where k is the number of interesecting pairs found.
Abstract: In this paper we investigate the problem of reporting all intersecting pairs in a set of n rectilinearly oriented rectangles in the plane. This problem arises in applications such as design rule checking of very large-scale integrated (VLSI) circuits and architectural databases. We describe an algorithm that solves this problem in worst case time proportional to n lg n + k, where k is the number of interesecting pairs found. This algorithm is optimal to within a constant factor. As an intermediate step of this algorithm, we solve a problem related to the range searching problem that arises in database applications. Although the algorithms that we describe are primarily theoretical devices (being very difficult to code), they suggest other algorithms that are quite practical.

258 citations