Current release: 2012-12-17
DLV is a deductive database system, based on disjunctive logic programming, which offers front-ends to several advanced KR formalisms. It has been conceived by an Italian-Austrian research team (of the University of Calabria and the Vienna University of Technology).
The system supports a language based on a logical formalisms with a very high expressive power so that programs are able to represent relevant practical problems in presence of incomplete or contradictory knowledge. The first release of the system became available in 1997, after several years of theoretical research. It has been significantly improved over and over in the last years, incorporating new features and relevant optimisation techniques in all modules of the engine. Nowadays it represents the state of the art among Knowledge Representation and Reasoning (KRR) systems. Thanks to a long lasting theoretical and implementation effort, the language is now supported by an efficient run-time system that exploits techniques developed throughout the years by the scientific and industrial database community. By analysing the nature of its specific input, the system is able to apply the techniques that better reflect the complexity of the problem at hand, so that “easy” problems are solved fast, while only harder problems involve methods of higher computational cost.
The DLV system includes several front-ends for dealing with specific KRR applications:
- the K planning system,
- a frontend for abductive diagnosis and Reiter’s diagnosis,
- support for inheritance, and
- an SQL frontend which prototypes novel SQL3 features
One of the main strengths of the system is its wide applicability, from more “database oriented” deductive database applications (where larger input data have to be dealt with), to hard search and optimisation problems. Indeed, it is a “general purpose” system, able to deal efficiently with different kind of applications (database oriented, AI oriented) and problems of different complexity.
DLV is free for academic and non-commerical educational use, as well as for use by non-profit organisations. For the full license and further information for commercial use, run DLV with the option -license.
DLV is actively developed. To receive notifications about new releases and other important events regarding DLV, just drop us a note at the addresses in our Contacts.
Please always use the most current version of DLV (cf. version history) and have a look at our benchmark page! Note that the current release does not yet contain a full implementation of recursive aggregates. You can get a snapshot version with support for recursive aggregates from .
Backward compatibility note: Release 2010-10-14 has changed the semantics of builtin predicates. Builtins now have to be used in a functional way which may render programs unsafe that were considered safe with previous DLV releases. For details, we refer to the safety section in the online manual.
DLV is provided as a command-line system in binary form for several platforms:
|Linux/FreeBSD i386||Linux/FreeBSD x86-64||MacOSX i386||Windows|
|static, no ODBC support||i386-linux-elf-static||x86-64-linux-elf-static||i386-apple-darwin||mingw|
|dynamic, ODBC supportl||i386-linux-elf-unixodbc||x86-64-linux-elf-unixodbc||i386-apple-darwin-iodbc||mingw-odbc|
The first row features statically linked binaries that should work on all systems. On MacOS (or Linux), just download the file as dlv, say, make it executable (running chmod a+rx dlv), and you are ready to go and run DLV as dlv or ./dlv at the command line.
For using the ODBC functionalities, you need the dynamically linked binaries in the second row. For them to work properly, your dynamic linker needs to have access to all the necessary libraries. You can check which libraries are referenced and whether your linker finds them by using ldd on Linux/FreeBSD and otool -L on Mac OS X/Darwin.
Concerning the ODBC library, on Linux/FreeBSD you will need libodbc.so of unixODBC; on Mac OS X/Darwin you will need iodbc (usually pre-installed on Mac OS X); on Windows you will need odbc32.dll (usually pre-installed on Windows).
We provide a full-fledged online manual; also the following examples might be interesting:
(The files are called vX.cY, where X and Y are the number of variables and clauses, respectively.)
- Ladder graphs we have used for our FQAS’98 and KR’98 papers.
(The files are called ladder.X, where X is the number of nodes.)
- Strategic companies instances we have used for our FQAS’98 and KR’98 papers.
(The files are called X.3, where X refers to the number of companies and 3 indicates that three times as many products as companies exist.)
- A generator for instances of strategic companies in C++.
- A disjunctive encoding of 3-Colorability.
- A disjunctive encoding of Hamiltonian Cycle.
- A fast Blocks World encoding including some problem instances. This encoding is a DLV version of the Blocks World encoding presented by I. Niemela in “Logic Programs with Stable Model Semantics as a Constraint Programming Paradigm” (1998).
Finally, there is a nice tutorial by Christoph Koch.
Extensions & Related Work
The DLV Wrapper by Francesco Ricca and Nicola Leone is maintained at the Università della Calabria. It provides a Java interface to DLV.
dlvex is an extension to the DLV system providing access to “external predicates” which are supplied via libraries. It is maintained by members of the DLV team from Università della Calabria and will eventually be integrated into mainline DLV.
DLT is an extension to the DLV system providing reusable template predicate definitions. It is maintained by members of the DLV team from Università della Calabria.
DLV^DB is a further extension to the DLV system which follows a more database-oriented approach.
dlvhex is a system for answer set programming with external computation sources.
NLP-DL is a system for coupling nonmonotonic logic programs with description logics.
James Delgrande, Torsten Schaub and Hans Tompits have created an external frontend for prioritized logic programs.
Vladimir Sarsakov, Torsten Schaub, Hans Tompits and Stefan Woltran have created an external frontend for logic programs with nested expressions.
A-POL, a partial order programming extension for Answer Set Programming, by Mauricio Osorio Galindo and Enrique R. Corona D.