Rules
The Arg2p framework allows the encoding of both strict and defeasible rules:
Defeasible Rules
All statements are expressed in this form:
RuleName: Premise1, ..., PremiseN => Conclusion.
The absence of premises can be expressed with the notation:
RuleName: [] => Conclusion.
It is also possible to encode defeasible/ordinary premises with the notation:
FactName :=> Conclusion.
As for the form that premises and conclusions can take, all the properties of prolog terms (atoms, variables, lists, compound terms) are allowed.
Strict Rules
All statements are expressed in this form:
RuleName: Premise1, ..., PremiseN -> Conclusion.
The absence of premises can be expressed with the notation:
RuleName: [] -> Conclusion.
It is also possible to encode axioms premises with the notation:
FactName :-> Conclusion.
As for the form that premises and conclusions can take, all the properties of prolog terms (atoms, variables, lists, compound terms) are allowed.
Conflicts
The contrast between terms, at the base of rebuts and undermine attacks, can be reached through negation.
Strong negation
-Term
indicates a strong negation, as opposed to the negation as failure implemented within the tuProlog engine. Strong negation cannot be nested.
Weak negation
~(Term)
X indicates a weak negation -- i.e., negation by failure -- as the ability to encode rules exceptions. Weak negations are admitted only inside the body of the rule (premises). Accordingly, the rule:
r : ~(Term1), Term2 => Conclusions.
should be read as unless Term1, if Term2 then Conclusions.
Undercut
Undercut attacks can be expressed through the notation:
undercut(label)
where label
is the identifier of a defeasible rule in the theory.
For example, we could write:
r0 : something => conclusion.
r1 : some_other_thing => undercut(r0).
Permission and obligation
p(Term)
o(Term)
to indicate permission and obligation respectively. These concepts, belonging to the deontic expansion of classical logic, allow obtaining the flexibility necessary to deal with prohibitions and rights. For instance:
v_rule: o(-enter), enter => violation.
Currently, admitted forms for permission and obligation are:
o(Term) obligation
o(-Term) prohibition
-o(Term) no obligation
-o(-Term) no prohibition
p(Term) permission to do something
p(-Term) permission to don't do something
where Term is a standard Prolog term.
Superiority Relation
It is possible to express these preferences with the following notation:
sup(RuleNam1, RuleName2).
This proposition symbolises the greater reliability of the rule with identifier equal to RuleName 1 over that with identifier RuleName 2.
Burden of proof
The burden of persuasion indication can be expressed as:
bp(Term1,?, TermN).