Improving ASP Instantiators by Join-Ordering Methods

Most Answer Set Programming (ASP) systems, including DLV and Smodels, are endowed with an instantiation module. The instantiator generates a new program which is equivalent to the input program, but does not contain any variables (i.e., it is ground). Normal (i.e., disjunction-free) stratified programs are completely solved by the instantiator, which generates the output model directly. The instantiation process may be computationally expensive in some cases, and the instantiator is crucial for the efficiency of the entire ASP system. In this paper, we propose to employ join-ordering techniques to improve the instantiation process. We design a new join-ordering method, and adapt a classical database method to this context. We implement these techniques in the ASP system DLV, and we carry out an experimentation activity on a collection of benchmark problems taken from different domains. The results of experiments are very positive, the new techniques improve sensibly the efficiency of the DLV system, whose instantiation module confirms to be a main strong point of DLV w.r.t. the other ASP systems.