Network


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

Hotspot


Dive into the research topics where J Strother Moore is active.

Publication


Featured researches published by J Strother Moore.


Communications of The ACM | 1977

A fast string searching algorithm

Robert S. Boyer; J Strother Moore

An algorithm is presented that searches for the location, “<italic>i</italic>l” of the first occurrence of a character string, “<italic>pat</italic>,” in another string, “<italic>string</italic>.” During the search operation, the characters of <italic>pat</italic> are matched starting with the last character of <italic>pat</italic>. The information gained by starting the match at the end of the pattern often allows the algorithm to proceed in large jumps through the text being searched. Thus the algorithm has the unusual property that, in most cases, not all of the first <italic>i</italic> characters of <italic>string</italic> are inspected. The number of characters actually inspected (on the average) decreases as a function of the length of <italic>pat</italic>. For a random English pattern of length 5, the algorithm will typically inspect <italic>i</italic>/4 characters of <italic>string</italic> before finding a match at <italic>i</italic>. Furthermore, the algorithm has been implemented so that (on the average) fewer than <italic>i</italic> + <italic>patlen</italic> machine instructions are executed. These conclusions are supported with empirical evidence and a theoretical analysis of the average behavior of the algorithm. The worst case behavior of the algorithm is linear in <italic>i</italic> + <italic>patlen</italic>, assuming the availability of array space for tables linear in <italic>patlen</italic> plus the size of the alphabet. 3~


Journal of the ACM | 1975

Proving Theorems about LISP Functions

Robert S. Boyer; J Strother Moore

We describe some simple heuristics combining evaluation and mathematical induction which we have implemented in a program that automatically proves a wide variety of theorems about recursive LISP functions. The method the program uses to generate induction formulas is described at length. The theorems proved by the program include that REVERSE is its own inverse and that a particular SORT program is correct. Appendix B contains a list of the theorems proved by the program.


Automated Reasoning: Essays in Honor of Woody Bledsoe | 1991

MJRTY - A Fast Majority Vote Algorithm.

Robert S. Boyer; J Strother Moore

A new algorithm is presented for determining which, if any, of an arbitrary number of candidates has received a majority of the votes cast in an election. The number of comparisons required is at most twice the number of votes. Furthermore, the algorithm uses storage in a way that permits an efficient use of magnetic tape. A Fortran version of the algorithm is exhibited. The Fortran code has been proved correct by a mechanical verification system for Fortran. The system and the proof are discussed.


Journal of Automated Reasoning | 1989

An approach to systems verification

William R. Bevier; Warren A. Hunt; J Strother Moore; William D. Young

The term systems verification refers to the specification and verification of the components of a computing system, including compilers, assemblers, operating systems and hardware. We outline our approach to systems verification, and summarize the application of this approach to several systems components. These components consist of a code generator for a simple high-level language, an assembler and linking loader, a simple operating system kernel, and a microprocessor design.


formal methods in computer aided design | 1996

ACL2 Theorems About Commercial Microprocessors

Bishop Brock; Matt Kaufmann; J Strother Moore

ACL2 is a mechanized mathematical logic intended for use in specifying and proving properties of computing machines. In two independent projects, industrial engineers have collaborated with researchers at Computational Logic, Inc. (CLI), to use ACL2 to model and prove properties of state-of-the-art commercial microprocessors prior to fabrication. In the first project, Motorola, Inc., and CLI collaborated to specify Motorolas complex arithmetic processor (CAP), a single-chip, digital signal processor (DSP) optimized for communications signal processing. Using the specification, we proved the correctness of several CAP microcode programs. The second industrial collaboration involving ACL2 was between Advanced Micro Devices, Inc. (AMD) and CLI. In this work we proved the correctness of the kernel of the floating-point division operation on AMDs first Pentium-class microprocessor, the AMD5 K 86. In this paper, we discuss ACL2 and these industrial applications, with particular attention to the microcode verification work.


Journal of Automated Reasoning | 1989

A mechanically verified language implementation

J Strother Moore

This paper briefly describes a programming language, its implementation on a microprocessor via a compiler and link-assembler, and the mechanically checked proof of the correctness of the implementation. The programming language, called Piton, is a high-level assembly language designed for verified applications and as the target language for high-level language compilers. It provides executeonly programs, recursive subroutine call and return, stack based parameter passing, local variables, global variables and arrays, a user-visible stack for intermediate results, and seven abstract data types including integers, data addresses, program addresses and subroutine names. Piton is formally specified by an interpreter written for it in the computational logic of Boyer and Moore. Piton has been implemented on the FM8502, a general purpose microprocessor whose gate-level design has been mechanically proved to implement its machine code interpreter. The FM8502 implementation of Piton is via a function in the Boyer-Moore logic which maps a Piton initial state into an FM8502 binary core image. The compiler and link-assembler are both defined as functions in the logic. The implementation requires approximately 36K bytes and 1400 lines of prettyprinted source code in the Pure Lisp-like syntax of the logic. The implementation has been mechanically proved correct. In particular, if a Piton state can be run to completion without error, then the final values of all the global data structures can be ascertained from an inspection of an FM8502 core image obtained by running the core image produced by the compiler and link-assembler. Thus, verified Piton programs running on FM8502 can be thought of as having been verified down to the gate level.


Journal of Automated Reasoning | 2001

Structured Theory Development for a Mechanized Logic

Matt Kaufmann; J Strother Moore

Experience has shown that large or multi-user interactive proof efforts can benefit significantly from structuring mechanisms, much like those available in many modern programming languages. Such a mechanism can allow some lemmas and definitions to be exported, and others not. In this paper we address two such structuring mechanisms for the ACL2 theorem prover: encapsulation and books. After presenting an introduction to ACL2, this paper justifies the implementation of ACL2s structuring mechanisms and, more generally, formulates and proves high-level correctness properties of ACL2. The issues in the present paper are relevant not only for ACL2 but also for other theorem-proving environments.


Journal of Automated Reasoning | 2003

Partial Functions in ACL2

Panagiotis Manolios; J Strother Moore

We describe a method for introducing “partial functions” into ACL2, that is, functions not defined everywhere. The function “definitions” are actually admitted via the encapsulation principle: the new function symbol is constrained to satisfy the appropriate equation. This is permitted only when a witness function can be exhibited, establishing that the constraint is satisfiable. Of particular interest is the observation that every tail recursive definition can be witnessed in ACL2. We describe a macro that allows the convenient introduction of arbitrary tail recursive functions, and we discuss how such functions can be used to prove theorems about state machine models without reasoning about “clocks” or counting the number of steps until termination. Our macro for introducing “partial functions” also permits a variety of other recursive schemes, and we briefly illustrate some of them.


Lecture Notes in Computer Science | 2003

A Grand Challenge Proposal for Formal Methods: A Verified Stack

J Strother Moore

We propose a grand challenge for the formal methods community: build and mechanically verify a practical computing system, from transistors to software. The challenge is both competitive and collaborative. It is collaborative because practical systems are too large for any one group or tool to handle in isolation: groups will have to team together. Furthermore, the vertical integration of systems at different levels of abstractions – from transistors to software – will encourage the team to adopt different tools for different levels and connect them. It is competitive because there are many systems from which to choose and different teams may form around different target systems.


Journal of the ACM | 1984

A Mechanical Proof of the Unsolvability of the Halting Problem

Robert S. Boyer; J Strother Moore

Abstract : The authors describe a proof by a computer program of the unsolvability of the halting problem. The halting problem is posed in a constructive, formal language. The computational paradigm formalized is Pure LISP, not Turing machines. They believe this is the first instance of a machine proving that a given problem is not solvable by machine.

Collaboration


Dive into the J Strother Moore's collaboration.

Top Co-Authors

Avatar

Robert S. Boyer

University of Texas at Austin

View shared research outputs
Top Co-Authors

Avatar

Matt Kaufmann

University of Texas at Austin

View shared research outputs
Top Co-Authors

Avatar
Top Co-Authors

Avatar
Top Co-Authors

Avatar

Warren A. Hunt

University of Texas at Austin

View shared research outputs
Top Co-Authors

Avatar

Daron Vroon

Georgia Institute of Technology

View shared research outputs
Top Co-Authors

Avatar

George Porter

University of California

View shared research outputs
Top Co-Authors

Avatar

Hanbing Liu

University of Texas at Austin

View shared research outputs
Top Co-Authors

Avatar

Donald I. Good

University of Texas at Austin

View shared research outputs
Researchain Logo
Decentralizing Knowledge