我已经实现了几个链式规则,最后一个规则根据前面的结果获得所需的结果。
rule1(X,Y) :-
pred1(X,Z),
pred1(Y,Z).
rule2(Z,T) :-
rule1(X,Y),
pred2(Z,X),
pred2(T,Y).
我需要获得为每条规则推断出的每一个事实。我正在使用 jpl 库从 Java 执行此操作。
String stringFileQuery = "rule1(X,Y)";
System.out.println(stringFileQuery + " "
+ (Query.hasSolution(stringFileQuery) ? "succeeded" : "failed"));
Query fileQuery = new Query(stringFileQuery);
System.out.println("all solutions of " + stringFileQuery);
while (fileQuery.hasMoreSolutions()) {
Map<String, Term> s10 = fileQuery.nextSolution();
System.out.println("First -> " + s10.get("X") + ", Second ->" + 10.get("Y"));
}
即使在 Prolog 中,我如何才能获得所有这些事实?在实际程序中,我有不止两条规则。