Network


Latest external collaboration on country level. Dive into details by clicking on the dots.

Hotspot


Dive into the research topics where Michael J. O'Donnell is active.

Publication


Featured researches published by Michael J. O'Donnell.


Journal of the ACM | 1982

Pattern Matching in Trees

Christoph M. Hoffmann; Michael J. O'Donnell

ABSTgACT. Tree pattern matching is an interesting special problem which occurs as a crucial step m a number of programmmg tasks, for instance, design of interpreters for nonprocedural programming languages, automatic implementations of abstract data types, code optimization m compilers, symbohc computation, context searching in structure editors, and automatic theorem provmg. As with the sorting problem, the variations in requirements and resources for each application seem to preclude a uniform, umversal solution to the tree-pattern-matching problem. Instead, a collection of well-analyzed techmques, from which specific applications may be selected and adapted, should be sought. Five new techniques for tree pattern matching are presented, analyzed for time and space complexity, and compared with previously known methods. Particularly important are applications where the same patterns are matched against many subjects and where a subject may be modified incrementally Therefore, methods which spend some tune preprocessmg patterns in order to improve the actual matching time are included


Archive | 1977

Computing in Systems Described by Equations

Michael J. O'Donnell

I: Introduction.- II: Syntax, semantics and proof theory for equational logic.- III: Subtree replacement systems.- IV: The confluence property and the Church-Rosser property.- V: Termination.- VI: Costs of reduction sequences.- VII: Schematic definitions of SRSs.- VIII: Recursively defined functions.- IX: Applications of SRS theory to LISP and lucid.- X: Another approach to confluence, termination, optimality.


ACM Transactions on Programming Languages and Systems | 1982

Programming with Equations

Christoph M. Hoffmann; Michael J. O'Donnell

Equations provide a convenient notation for defining many computations, for example, for programming language interpreters. This paper illustrates the usefulness of equational programs, describes the problems involved in implementing equational programs, and investigates practical solutions to those problems. The goal of the study is a system to automatically transform a set of equations into an efficient program which exactly implements the logical meaning of the equations. This logical meaning may be defined in terms of the traditional mathematical interpretation of equations, without using advanced computing concepts. _


international conference on functional programming | 1986

Exact real arithmetic: a case study in higher order programming

Hans-Juergen Boehm; Robert Cartwright; Mark Riggle; Michael J. O'Donnell

Two methods for implementing ezact real arithmetic are explored One method is based on formulating real numbers as functions that map rational tolerances to rational approximations. This approach, which was developed by constructive mathematicians as a concrete formalization of the real numbers, has lead to a surprisingly successful implementation. The second method formulates real numbers as potentially infinite sequences of digits, evaluated on demand. This approach has frequently been advocated by proponents of lazy functional languages in the computer science community Ironically, it leads to much less satisfactory implementations. We discuss the theoretical problems involved m both methods, give algortthms for the basic arithmetic operations, and give an empirical comparison of the two techniques. We conclude wtth some general observations about the lazy evaluation paradigm and its implementation.


Communications of The ACM | 1982

A critique of the foundations of Hoare style programming logics

Michael J. O'Donnell

Much recent discussion in computing journals has been devoted to arguments about the feasibility and usefulness of formal verification methods. Too little attention has been given to precise criticism of specific proposed systems for reasoning about programs. Whether such systems are to be used for formal verification, by hand or automatically, or as a rigorous foundation for informal reasoning, it is essential that they be logically sound. Several popular rules in the Hoare language are, in fact, not sound. These rules have been accepted because they have not been subjected to sufficiently strong standards of correctness. This paper attempts to clarify the different technical definitions of correctness of a logic, to show that only the strongest of these definitions is acceptable for Hoare logic, and to correct some of the unsound rules that have appeared in the literature. The corrected rules are given merely to show that it is possible to do so. Convenient and elegant rules for reasoning about certain programming constructs will probably require a more flexible notation than Hoares.


symposium on the theory of computing | 1979

A programming language theorem which is independent of Peano Arithmetic

Michael J. O'Donnell

Strongly typed programming languages contain a natural subrecursive part consisting of programs with no loops and no explicitly recursive (circular) function definitions. For languages with polymorphic type structure, such as Model, the termination of all loop-free nonrecursive programs is independent of Peano Arithmetic. An attempt to apply the same techniques to prove independence of the P@@@@NP problem can succeed only if NP complete problems have almost polynomial complexity.


symposium on principles of programming languages | 1979

An interpreter generator using tree pattern matching

Christoph M. Hoffmann; Michael J. O'Donnell

Equations provide a rich, intuitively understandable notation for describing nonprocedural computing languages such as LISP and Lucid. In this paper, we present techniques for automatically generating interpreters from equations, analagous to well-known techniques for generating parsers from context-free grammars. The interpreters so generated are exactly faithful to the simple traditional mathematical meaning of the equations-no lattice-theoretic or fixpoint ideas are needed to explain the correspondence. The main technical problem involved is the extension of efficient practical string matching algorithms to trees. We present some new efficient table-driven matching techniques for a large class of trees, and point out unsolved problems in extending this class. We believe that the techniques of this paper form the beginnings of a useful discipline of interpreting, comparable to the existing discipline of parsing.


IEEE Transactions on Computers | 1985

Lower Bounds for Sorting with Realistic Instruction Sets

Eric Dittert; Michael J. O'Donnell

¿(n log n) time is required to sort n integers using comparison, addition, subtraction, multiplication, division, indirect addressing, and mildly restricted truncation.


SIAM Journal on Computing | 1986

Collections of functions for perfect hashing

Francine Berman; Mary Ellen Bock; Eric Dittert; Michael J. O'Donnell

Hashing techniques for accessing a table without searching it are usually designed to perform efficiently on the average over all possible contents of the table. If the table contents are known in advance, we might be able to choose a hashing function with guaranteed efficient (worst-case) performance. Such a technique has been called “perfect hashing” by Sprugnoli and others. In this paper, we address the question of whether perfect hashing is feasible in principle as a general technique, or whether it must rely on special qualities of the table contents. We approach the question by counting the number of functions which must be searched to be sure of finding a perfect hashing function. We present upper and lower bounds on the size of this search space, with attention to the tradeoff between the size of the search space and the size of the hash table.


rewriting techniques and applications | 1987

Term-rewriting implementation of equational logic programming

Michael J. O'Donnell

In 1975 I started a small project to explore the consequences of implementing equational programs with no semantic compromises. Latest results include a compiler that executes exactly the logical consequences of an equational program, with run-time speed comparable to compiled Franz LISP. This paper describes the accomplishments of the project very briefly, concentrating on shortcomings and directions for future work.

Collaboration


Dive into the Michael J. O'Donnell's collaboration.

Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Eric Dittert

New Mexico State University

View shared research outputs
Top Co-Authors

Avatar

Avi Wigderson

Institute for Advanced Study

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Nimrod Megiddo

Mathematical Sciences Research Institute

View shared research outputs
Top Co-Authors

Avatar

Silvio Micali

Massachusetts Institute of Technology

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Researchain Logo
Decentralizing Knowledge