Correcting a widespread error in unification algorithms

  title={Correcting a widespread error in unification algorithms},
  author={Peter Norvig},
  journal={Software: Practice and Experience},
  • Peter Norvig
  • Published 1 February 1991
  • Computer Science
  • Software: Practice and Experience
The unification of two patterns both containing variables is a ubiquitous operation in logic programming and in many artificial intelligence applications. Thus, many texts present unification algorithms. Unfortunately, at least seven of these presentations are incorrect. The common error occurs when logic variables are represented as binding lists; implementations that destructively update variable cells do not manifest the error. This note gives the examples that uncover the error and presents… Expand
Type inference in context
We consider the problems of first-order unification and type inference from a general perspective on problem-solving, namely that of information increase in the problem context. This leads to aExpand
Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp
From the Publisher: Paradigms of AI Programming is the first text to teach advanced Common Lisp techniques in the context of building major AI systems. By reconstructing authentic, complex AIExpand
Concurrent Inference Graphs
Inference graphs are presented, a natural deduction inference system which scales well on multi-core and multi-processor machines and shows significant speedup in both best case and worst case inference scenarios as the number of processors increases. Expand
Detection of Redundant Code Using R2D2
  • A. Leitão
  • Computer Science
  • Software Quality Journal
  • 2004
R2D2 identifies redundant code fragments in large software systems written in Lisp using a combination of techniques ranging from syntax-based analysis to semantics- based analysis, that detects positive and negative evidences regarding the redundancy of the analyzed code fragments. Expand
A Novel Type-based API Search Engine for Open Source Elm Packages
Moogle, a type-based API search engine for open-source Elm packages, is presented with an online demonstration and outperforms its congeneric work, Elm-search2, on many aspects including search range and allowed patterns with acceptable trade-offs. Expand
An Online Validator for Provenance: Algorithmic Design, Testing, and API
The design of ProvValidator, an online service for validating provenance documents according to prov-constraints, is discussed, which discusses the algorithmic design of the validator, the complexity of the algorithm, how it demonstrated compliance with the standard, and its rest api. Expand


Unification: a multidisciplinary survey
Topics covered are resolution, higher order logic, the occur check, infinite terms, feature structures, equational theories, inheritance, parallel algorithms, generalization, lattices, and other applications of unification. Expand
Computing with logic
This invaluable reference for Prolog users and programmers is a unique, self-contained introduction to the formal semantics of logic programming and automatic theorem proving. It provides programmersExpand
A Turing Machine Simulator
A descript ion of a Tur ing machine s imulator, programmed on the IBM 1620, is given and some remarks about writ ing a Universal Tur ing Machine Program are made. Expand
A Machine-Oriented Logic Based on the Resolution Principle
The paper concludes with a discussion of several principles which are applicable to the design of efficient proof-procedures employing resolution as the basle logical process. Expand
Unification Revisited
This work presents the alternatives and clarifies their relationships related to the notions of equation solving, most specific generalization, and constraint solving and leads to a comprehensive presentation of an elementary theory of unification. Expand
Artificial Intelligence Programming
This chapter discusses data-Driven Programming and Other Programming Techniques, higher-Order Functions, Continuations, and Coroutines, and higher-order functions in Lisp, as well as some of the techniques used in AI programming. Expand
Structure and Interpretation of Computer Programs
Structure and Interpretation of Computer Programs emphasizes the central role played by different approaches to dealing with time in computational models, appropriate for an introduction to computer science courses, as well as programming languages and program design. Expand
The compleat guide to MRS
This guide is intended to be a comprehensive text and reference for MRS and attempts to explain the foundations of the logic programming approach from the ground up, and it is hoped that it will provide access to all the benefits of AI methods. Expand
Introduction to artificial intelligence
This book is an introduction on artificial intelligence. Topics include reasoning under uncertainty, robot plans, language understanding, and learning. The history of the field as well asExpand
  • C. Butler
  • Medicine
  • Journal of the Irish Medical Association
  • 1969
The Greek tradition was essentially uninfluenced by Christianity and may therefore serve as independent confirmation of the thesis that the Catholic religion, in its claim to present men with a means of unification resting on a revelation of ultimate unity, does in fact offer to fill a lacuna, and to answer a vital need which man can discover but cannot by himself supply. Expand