0

我试图在序言逻辑中实现 AA 接地扩展的逻辑,但我不知道该怎么做。我有一些参数“argument(a)”、“argument(b)”和一些攻击攻击(a,b)。我不想检查参数是否属于接地扩展。定义是接地扩展是:

  1. 如果一组论点 S 不攻击自己并且攻击所有攻击 S 的论点,则它是可以接受的。
  2. 如果 S 是可接纳的并且包含它所辩护的所有论点,则 S 是完整的。(攻击攻击者)
  3. 接地集是完整集的最小集。

因此,例如参数(a),参数(b),参数(c),攻击(a,b),攻击(b,c)应该给出

可接受:(a), (a,c) () 完整:(a,c) 接地:(a,c)


到目前为止,我尝试过:

%noone is attacking you
admissible(X) :-
argument(X),
\+ attacks(_,X).

%Y is attacking you and you are attacking Y
admissible(X) :-
argument(X),
attacks(Y,X),
attacks(X,Y).

%Y is attacking you and Z is defending you
admissible(X) :-
argument(X),
attacks(Y,X),
attacks(Z,Y),
\+ attacks(Z,X),
\+ attacks(X,Z).

%If someone attacks you then you must be defended by someone of your set
complete(X) :-
admissible(X),
attacks(Y,X),
attacks(Z,Y),
\+ attacks(Z,X),
\+ attacks(X,Z).

%TO-DO: I attack Y, check if all Y attacks belong to my set
complete(X) :-
admissible(X),
attacks(X,Y),

attacks(Y,Z),
\+ attacks(Z,X),
\+ attacks(X,Z).

%TO-DO: How do you find the minimum set of complete?
grounded(X) :-
argument(X).
4

0 回答 0