use of at.ac.tuwien.kr.alpha.common.AnswerSet in project Alpha by alpha-asp.
the class ThreeColouringRandomGraphTest method testThreeColouring.
private void testThreeColouring(int nVertices, int nEdges) throws IOException {
ParsedProgram program = parseVisit("blue(N) :- v(N), not red(N), not green(N)." + "red(N) :- v(N), not blue(N), not green(N)." + "green(N) :- v(N), not red(N), not blue(N)." + ":- e(N1,N2), blue(N1), blue(N2)." + ":- e(N1,N2), red(N1), red(N2)." + ":- e(N1,N2), green(N1), green(N2).");
Collection<ParsedFact> vertices = createVertices(nVertices);
program.accumulate(new ParsedProgram(vertices));
Collection<ParsedFact> edges = createEdges(nVertices, nEdges);
program.accumulate(new ParsedProgram(edges));
program = maybeShuffle(program);
NaiveGrounder grounder = new NaiveGrounder(program);
Solver solver = getInstance(grounder);
Optional<AnswerSet> answerSet = solver.stream().findAny();
System.out.println(answerSet);
// TODO: check correctness of answer set
}
use of at.ac.tuwien.kr.alpha.common.AnswerSet in project Alpha by alpha-asp.
the class ThreeColouringTestWithRandom method testThreeColouring.
private void testThreeColouring(int n, boolean shuffle, int seed) throws IOException {
ParsedProgram program = parseVisit("col(V,C) :- v(V), c(C), not ncol(V,C)." + "ncol(V,C) :- col(V,D), c(C), C != D." + ":- e(V,U), col(V,C), col(U,C).");
List<CommonParsedObject> colours = createColors("1", "2", "3");
program.accumulate(new ParsedProgram(colours));
List<CommonParsedObject> vertices = createVertices(n);
program.accumulate(new ParsedProgram(vertices));
List<CommonParsedObject> edges = createEdges(n, shuffle, seed);
program.accumulate(new ParsedProgram(edges));
NaiveGrounder grounder = new NaiveGrounder(program);
Solver solver = getInstance(grounder);
for (ParsedFact fact : program.facts) {
System.out.println(fact.getFact().toString() + ".");
}
for (ParsedRule rule : program.rules) {
System.out.print(rule.head.toString());
System.out.print(":-");
for (int i = 0; i < rule.body.size(); i++) {
if (i > 0) {
System.out.print(", ");
}
System.out.print(rule.body.get(i).toString());
}
System.out.println(".");
}
for (ParsedConstraint constraint : program.constraints) {
System.out.print(":-");
for (int i = 0; i < constraint.body.size(); i++) {
if (i > 0) {
System.out.print(", ");
}
System.out.print(constraint.body.get(i).toString());
}
System.out.println(".");
}
Optional<AnswerSet> answerSet = solver.stream().findAny();
System.out.println(answerSet);
// TODO: check correctness of answer set
}
use of at.ac.tuwien.kr.alpha.common.AnswerSet in project Alpha by alpha-asp.
the class SolverTests method testSimpleRule.
@Test
public void testSimpleRule() throws Exception {
String testProgram = "p(a). p(b). r(X) :- p(X).";
ParsedProgram parsedProgram = parseVisit(testProgram);
Grounder grounder = new NaiveGrounder(parsedProgram);
Solver solver = getInstance(grounder);
List<AnswerSet> answerSets = solver.collectList();
AnswerSet expected = new BasicAnswerSet.Builder().predicate("p").instance("a").instance("b").predicate("r").instance("a").instance("b").build();
assertEquals(1, answerSets.size());
assertEquals(expected, answerSets.get(0));
}
use of at.ac.tuwien.kr.alpha.common.AnswerSet in project Alpha by alpha-asp.
the class SolverTests method builtinAtomsGroundRule.
@Test
public void builtinAtomsGroundRule() throws IOException {
String testProgram = "a :- 13 != 4." + "b :- 2 != 3, 2 = 3." + "c :- 2 <= 3, not 2 > 3.";
ParsedProgram parsedProgram = parseVisit(testProgram);
NaiveGrounder grounder = new NaiveGrounder(parsedProgram);
Solver solver = getInstance(grounder);
Set<AnswerSet> expected = new HashSet<>(Collections.singletonList(new BasicAnswerSet.Builder().predicate("a").predicate("c").build()));
Set<AnswerSet> answerSets = solver.collectSet();
assertEquals(expected, answerSets);
}
use of at.ac.tuwien.kr.alpha.common.AnswerSet in project Alpha by alpha-asp.
the class SolverTests method guessingProgram3Way.
@Test
public void guessingProgram3Way() throws IOException {
String testProgram = "a :- not b, not c." + "b :- not a, not c." + "c :- not a, not b.";
ParsedProgram parsedProgram = parseVisit(testProgram);
NaiveGrounder grounder = new NaiveGrounder(parsedProgram);
Solver solver = getInstance(grounder);
Set<AnswerSet> expected = new HashSet<>(Arrays.asList(new BasicAnswerSet.Builder().predicate("a").build(), new BasicAnswerSet.Builder().predicate("b").build(), new BasicAnswerSet.Builder().predicate("c").build()));
Set<AnswerSet> answerSets = solver.collectSet();
assertEquals(expected, answerSets);
}
Aggregations