Datalog is the declarative programming language we have chosen for our project. It is a syntactical subset of Prolog. However
unlike Prolog, statements may be evaluated in any order, finite statement sets are guaranteed to terminate and
Datalog does not contain Prolog's cut operator. These differences make Datalog a fully declarative programming language.
Furthermore, there are other restrictions that limit the expressivity of Datalog. Datalog is often used as a querying
language for deductive databases as a result of allowing for efficient query resolution algorithms. This gives it wider
application in security, program analysis, networking, cloud computing, information extraction and data integration. Despite this,
the restrictions placed on Datalog limit its application in other areas. There exist several extensions of Datalog to address these
limitations and our project plans to construct another extension that will allow it to handle defeasible reasoning.
Defeasible reasoning falls under non-monotonic logic, which is a form of logic that allows for the retraction of previously stated claims. Specifically, defeasible reasoning allows for contingent claims. That is, defeasible reasoning allows one to make a claim that may be incomplete and may be retracted given new claims. In this way, it awknowledges fallibility and corrigibility of claims. Defeasible reasoning is important in the field of artificial intelligence (AI) and finds its fullest expression in knowledge representation and planning.
Datalog does not possess the expressivity to handle refeasible reasoning. Our project aim to construct an extension of Datalog with defeasible reasoning called Defeasible Datalog. Our project is split into two main parts:
- the theoretical construction of Defeasible Datalog as well as the proof for theoretical correctness.
- the implementation of Defeasible Datalog as a proof of concept.