Adam Brooks Webber

Learn More
In their study of algorithms for reasoning about intervals, Golumbic and Shamir conjectured that a certain class of interval inference problems is intractable GS93]. The conjecture is correct; this paper proves the NP-completeness of the interval satissability (ISAT) problem for the domain of relations known as 5. s be the start of an interval x and let x e(More)
INTRODUCTION For the past three semesters I have taught programming to beginners using a new software system called the Pascal Trainer. In closed labs the students solve a carefully planned sequence of well over a hundred simple programming exercises. The most elementary of these exercises require the student to write simple expressions; later exercises(More)
We describe a new technique for optimizing first-order functional programs. Programs are represented as graph grammars, and optimization proceeds by counterexample: when a graph generated by the grammar is found to contain an unnecessary computation, the optimizer attempts to reformulates the grammar so that it never again generates any graph that contains(More)
This paper is a progress report on our research into the problem of automatically identifying and using class invariants in object-oriented programs. We introduce an example of a class invariant in Java, and review applications for class invariants in software engineering tools and in compiler optimization. We then focus on an elementary problem of(More)
This paper presents a method called <i>relational constraint</i> for finding binary relations among the variables and constants of a program. The method constructs a table of binary relations and treats the program as a collection of constraints on tuples of relations in the table. An experimental optimizer called Thinner uses this method to analyze(More)
Class invariants can be used for compiler optimization, verification and program understanding. Finding class invariants is not a trivial task. In this thesis work we focus on the identification of class invariants that describe the shapes of linked data structures manipulated by the program (an unannotated Java program). We combine two techniques in order(More)
  • 1