# Vaughan Pratt

Vaughan Pratt | |
---|---|

Born |
Vaughan Ronald Pratt April 12, 1944 Melbourne, Australia |

Fields | Computer science |

Institutions |
Stanford University MIT |

Alma mater |
Stanford University (1972) University of Sydney (1970) |

Academic advisors | Donald Knuth |

Known for |
Knuth–Morris–Pratt algorithm Pratt certificate Pratt parser |

Websiteboole |

**Vaughan Pratt** is a Professor Emeritus at Stanford University who was an early pioneer in the field of computer science. Publishing since 1969, Pratt has made several contributions to foundational areas such as search algorithms, sorting algorithms, and primality testing. More recently his research has focused on formal modeling of concurrent systems and Chu spaces. A pattern of applying models from diverse areas of mathematics such as geometry, linear algebra, abstract algebra, and especially mathematical logic to computer science pervades his work.

## Career

Raised in Australia and educated at Knox Grammar School where he was dux in 1961, Pratt attended Sydney University where he completed his masters thesis in 1970, related to what is now known as natural language processing. He then went to the United States, where he completed a Ph.D. thesis at Stanford University in only 20 months under the supervision of advisor Donald Knuth. His thesis focused on analysis of the shellsort sorting algorithm and sorting networks.

Pratt was an Assistant Professor at MIT (1972 to 1976) and then Associate Professor (1976 to 1982). In 1974, working in collaboration with Knuth and Morris, Pratt completed and formalized work he had begun in 1970 as a graduate student at Berkeley; the coauthored result was the Knuth-Morris-Pratt pattern matching algorithm. In 1976, he developed the system of dynamic logic, a modal logic of structured behavior.

He went on sabbatical from MIT to Stanford (1980 to 1981), and was appointed a full professor at Stanford in 1981.

Pratt directed the SUN workstation project at Stanford from 1980 to 1982. He contributed in various ways to the founding and early operation of Sun Microsystems, acting in the role of consultant for its first year, then, taking a leave of absence from Stanford for the next two years, becoming Director of Research, and finally resuming his role as a consultant to Sun and returning to Stanford in 1985.

He also designed the Sun logo, which features four interleaved copies of the word "sun"; it is an ambigram.

Pratt became professor emeritus at Stanford in 2000.

## Major contributions

A number of well-known algorithms bear Pratt's name. Pratt certificates, short proofs of the primality of a number, demonstrated in a practical way that primality can be efficiently verified, placing the primality testing problem in the complexity class NP and providing the first strong evidence that the problem is not co-NP-complete.^{[1]}
The Knuth-Morris-Pratt algorithm, which Pratt designed in the early 1970s together with fellow Stanford professor Donald Knuth and independently from Morris, is still the most efficient general string searching algorithm known today.^{[2]} Along with Blum, Floyd, Rivest, and Tarjan, he described median of medians, the first worst-case optimal selection algorithm.^{[3]}

### Useful tool building

Pratt built some useful tools. In 1976, he wrote an MIT AI Lab working paper about CGOL, an alternative syntax for MACLISP that he had designed and implemented based on his paradigm for top down operator precedence parsing.^{[4]} His parser is sometimes called a "Pratt parser"^{[5]} and has been used in later systems, such as MACSYMA. Douglas Crockford also used it as the underlying parser for JSLint.^{[6]} Pratt also implemented a TECO-based text editor named "DOC", which was later renamed to "ZED".^{[7]}

In 1999, Pratt built the world's smallest (at the time) web server—it was the size of a matchbox.^{[8]}^{[9]}

### Other contributions

Pratt was credited in a 1995 Byte magazine article for proposing that the Pentium FDIV bug might have worse consequences than either Intel or IBM was predicting at the time.^{[10]}^{[11]}

Today Pratt has a wide influence. In addition to his Stanford professorship, he holds membership in at least seven professional organizations. He is a fellow of the Association for Computing Machinery and is on the Editorial Board of three major mathematics journals. He is also the Chairman and CTO of TIQIT Computers, Inc..

## References

- ↑ Vaughan Pratt. Every prime has a succinct certificate.
*SIAM Journal on Computing*, vol.4, pp.214–220. 1975. Citations, Full-text (requires paid login) - ↑ Donald Knuth, James H. Morris, Jr., and Vaughan Pratt. Fast pattern matching in strings.
*SIAM Journal on Computing*, 6(2):323–350. 1977. Citations - ↑ Blum, M.; Floyd, R. W.; Pratt, V. R.; Rivest, R. L.; Tarjan, R. E. (August 1973). "Time bounds for selection" (PDF).
*Journal of Computer and System Sciences*.**7**(4): 448–461. doi:10.1016/S0022-0000(73)80033-9. - ↑ Pratt, V.R., Top Down Operator Precedence. Proceedings of the ACM Symposium on Principles of Programming Languages. 1973. pp41-51.
- ↑ George J. Carrette A simple Pratt-Parser for SIOD. 1990.
- ↑ https://github.com/douglascrockford/JSLint/blob/40e3f73127b56f24a12e5cb091a86d9a24130926/fulljslint.js jslint source code line 2224
- ↑ Eric Fischer. Emacs and Other Editors. alt.folklore.computers. November 15, 2000.
- ↑ BBC News.Surfing on a matchbox. 1999.
- ↑ CNN News. Smallest Web server fits in shirt pocket. 1999.
- ↑ "How to Bruise an Integer", Byte, March 1995.
- ↑ "Chain Reaction in Pentiums", Vaughan Pratt, 1994. In wdv-notes334, 22 Jan, 1995. Article is formatted from a newsgroup posting: Vaughan Pratt (1994-12-30). ""TECHNICAL: Chain reaction in Pentiums (Was: The Flaw: Pentium-Contaminated Data Persists)"". Newsgroup: comp.sys.intel. Usenet: 3e097i$952@Radon.Stanford.EDU. Retrieved 2006-06-03.

## External links

- Vaughan Pratt at the Mathematics Genealogy Project
- Faculty home page at Stanford University
- Abstract page, with full-text downloads of many of Pratt's publications.
- Douglas Crockford walks through creating a Pratt parser in JavaScript.