“…Anti-unification (generalization), first introduced in the 1970's by Plotkin and Reynolds [22,23], is a process that derives from a set of symbolic expressions a new symbolic expression possessing certain commonalities shared between its members. The concept has been apply to inductive theorem proving based on tree grammars [3], recursion scheme detection in functional programs [6], inductive synthesis of recursive functions [24], learning fixes from software code repositories [16,4], preventing bugs and misconfiguration [19], as well as uses within the fields of natural language processing and linguistics [17,2]. Applications, most related to our work are proof generalization [20] and higher-order term indexing [21], which use anti-unification over typed λ-terms and their extensions [5].…”