Anti-unification in logic programming refers to the process of capturing common syntactic structure among given goals, computing as such a single new goal that is more general and hence called a generalization of the given goals. Finding an arbitrary common generalization for two goals is trivial, but looking for those common generalizations that are either as large as possible (called largest common generalizations) or as specific as possible (called most specific generalizations) is a non-trivial optimization problem, in particular when goals are considered to be unordered sets of atoms. In this work we provide an in-depth study of the problem by defining two different generalization relations. We formulate a characterization of what constitutes a most specific generalization in both settings. While these generalizations can be computed in polynomial time, we show that when the number of variables in the generalization needs to be minimized, the problem becomes NP-hard. We subsequently revisit an abstraction of the largest common generalization when anti-unification is based on injective variable renamings, and prove that it can be computed in polynomially bounded time.
|Publication status||Submitted - Jun 2021|
|Event||Computer Science Logic 2022 - Göttingen, Germany|
Duration: 14 Feb 2022 → 19 Feb 2022
|Conference||Computer Science Logic 2022|
|Abbreviated title||CSL 2022|
|Period||14/02/22 → 19/02/22|