Computing Minimal Extensions in Dung AFs
This module is used to compute minimal extensions that contain a given query argument.
Usage (with clingo)
In order to compute a minimal extension of an AF stored in a file input.af
containing an argument target use the following command
$ clingo input.af semantics.lp minext.lp query.lp filter.lp
-
the filter.lp file filters out the predicates
in(.) which denote the arguments contained in the extension.
-
the semantics.lp file encodes the used semantics
-
the minext.lp file encodes the use minimization
-
the query.lp file encodes the queried argument and consists of one constraint
:- not in(target). (for a query argument named target)
To compute all minimal extensions use:
$ clingo --opt-mode=optN --quiet=1
input.af semantics.lp minext.lp query.lp filter.lp 0
Files
First of all pick an encoding for one of the supported semantics:
Then there is the
minext.lp file that encodes the used minimization.
Here you have to pick the minimization you want to use and uncomment to corresponding minimization statements (and comment the other minimization statements). Default is minimizing the number of arguments in the extension.
%% computes the attackers of the extension
attacker(X):-in(Y),att(X,Y).
%%% Uncomment your minimization of choice
%% Minimize the number of arguments in the extension
#minimize {1@1,X:in(X)}.
%% Minimize the number of arguments attacking the extension
%#minimize {1@1,X:attacker(X)}.
%%
%% First Minimize the number of arguments attacking the extension and
among the minima minimize the number of arguments in the extension
%#minimize {1@2,X:attacker(X)}.
%#minimize {1@1,X:in(X)}.
%% First Minimize the number of arguments in the extension and
among the minima minimize the number of arguments attacking the extension
%#minimize {1@1,X:attacker(X)}.
%#minimize {1@2,X:in(X)}.
%% Minimize the number of arguments in the extension plus the number of
arguments attacking the extension
%#minimize {1@1,X:attacker(X)}.
%#minimize {1@1,X:in(X)}.
%% Minimize the weighted sum of arguments in the extension and arguments
attacking the extension (change the first number in the statements to
change weight)
%% here attackers are weighted 1 and arguments in the extension weighted 2
%#minimize {1@1,X:attacker(X)}.
%#minimize {2@1,X:in(X)}.
Finally for each call you have to create a query.lp file encoding the query argument.
For a query argument named target we have the following query.lp file:
:- not in(target).
Integer Linear Programming Implementation
We also provide an implementation for strongly admissible set based integer linear programming we used to compare our ASP encoding with:
ILP implementation
References
Main References
more system-related references
Some Related Literature
-
Martin Caminada, Paul E. Dunne:
Minimal Strong Admissibility: A Complexity Analysis.
COMMA 2020: 135-146
doi: 10.3233/FAIA200499
-
Martin Caminada, Paul E. Dunne:
Strong admissibility revisited: Theory and applications.
Argument & Computation 10(3): 277-300 (2019)
doi: 10.3233/AAC-190463
-
Martin W. A. Caminada, Wolfgang Dvořák, Srdjan Vesic:
Preferred semantics as socratic discussion.
J. Log. Comput. 26(4): 1257-1292 (2016)
doi: 10.1093/logcom/exu005