Basic Syntax

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