AbstractUnification in first-order languages is a central operation in symbolic computation and logic programming. Many unification algorithms have been proposed in the past; however, there is no consensus on which algorithm is the best to use in practice. While Paterson and Wegman's linear unification algorithm (1978) has the lowest time complexity in the worst case, it requires an important overhead to be implemented. This is true also, although less importantly, for Martelli and Montanari's algorithm (Martelli and Montanari 1982), and Robinson's algorithm (Robinson 1971), is finally retained in many applications despite its exponential worst-case time complexity. In this paper, we present unification algorithms in a uniform way and provi...