Language

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).