Skip to content

Commit 5164ae9

Browse files
committed
added some more semantics to equivalence notions
1 parent 18191b6 commit 5164ae9

File tree

2 files changed

+32
-4
lines changed

2 files changed

+32
-4
lines changed

org-tweetyproject-arg-dung/src/main/java/org/tweetyproject/arg/dung/equivalence/LocalExpansionEquivalence.java

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
package org.tweetyproject.arg.dung.equivalence;
2020

2121
import org.tweetyproject.arg.dung.equivalence.kernel.EquivalenceKernel;
22+
import org.tweetyproject.arg.dung.reasoner.SimpleStableReasoner;
2223
import org.tweetyproject.arg.dung.semantics.Extension;
2324
import org.tweetyproject.arg.dung.semantics.Semantics;
2425
import org.tweetyproject.arg.dung.syntax.Argument;
@@ -109,10 +110,37 @@ public boolean isEquivalent(DungTheory theory1, DungTheory theory2) {
109110
//}
110111
if (!EquivalenceKernel.ADMISSIBLE.getKernel(theory1).equals(EquivalenceKernel.ADMISSIBLE.getKernel(theory2))) return false;
111112
if (!theory1.faf(new Extension<>()).equals(theory2.faf(new Extension<>()))) return false;
112-
Argument b = getBSaturated(theory1);
113-
if (b == null) return false;
114-
if (!b.equals(getBSaturated(theory2))) return false;
113+
//Argument b = getBSaturated(theory1);
114+
//if (b == null) return false;
115+
//if (!b.equals(getBSaturated(theory2))) return false;
115116
return true;
117+
} case ST -> {
118+
if (EquivalenceKernel.STABLE.getKernel(theory1).equals(EquivalenceKernel.STABLE.getKernel(theory2))) {
119+
return true;
120+
}
121+
if (new SimpleStableReasoner().getModels(theory1).isEmpty() && new SimpleStableReasoner().getModels(theory2).isEmpty()) {
122+
Collection<Argument> arguments = new HashSet<>(theory1);
123+
arguments.addAll(theory2);
124+
for (Argument a : arguments) {
125+
if (theory1.contains(a) && theory2.contains(a)) continue;
126+
if (!theory1.isAttackedBy(a, a) || !theory2.isAttackedBy(a, a)) {
127+
boolean notB = false;
128+
for (Argument b : arguments) {
129+
if (b.equals(a)) continue;
130+
if (!theory1.isAttackedBy(b, a) || !theory2.isAttackedBy(b, a)) {
131+
if (theory1.isAttackedBy(b, b) && theory2.isAttackedBy(b, b)) {
132+
notB = true;
133+
break;
134+
}
135+
}
136+
}
137+
if (notB) {
138+
return true;
139+
}
140+
}
141+
}
142+
}
143+
return false;
116144
}
117145
default -> throw new IllegalArgumentException("Unsupported Semantics");
118146
}

org-tweetyproject-arg-dung/src/main/java/org/tweetyproject/arg/dung/equivalence/WeakExpansionEquivalence.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ public WeakExpansionEquivalence(Semantics semantics) {
5757
@Override
5858
public boolean isEquivalent(DungTheory theory1, DungTheory theory2) {
5959
switch (semantics) {
60-
case ADM,PR,CO -> {
60+
case ADM,PR,CO,GR -> {
6161
Collection<Extension<DungTheory>> exts1 = AbstractExtensionReasoner.getSimpleReasonerForSemantics(semantics).getModels(theory1);
6262
Collection<Extension<DungTheory>> exts2 = AbstractExtensionReasoner.getSimpleReasonerForSemantics(semantics).getModels(theory2);
6363
if (!new HashSet<>(theory1).equals(new HashSet<>(theory2))) return false;

0 commit comments

Comments
 (0)