Я использую Swi-Prolog Csharp DLL и CLP (FD).У меня есть следующий файл Prolog:
:- use_module(library(clpfd)).
constr(V0,V1,V2,C0,C1,C2) :-
((V0 #= 1901) #\/ (V0 #= 1750)) #<==> C0,
((V1 #= 3) #\/ (5 #= V1)) #<==> C1,
((V2 #>= 1)) #<==> C2.
config(V1,V2) :- constr(1750,V1,V2,1,1,1).
V0, V1, V2 мои переменные.C0, C1, C2 - мои переменные ограничения ограничения.При вызове config(V1,V2).
я хочу получить значения доменов V1 и V2, чтобы все ограничения были выполнены.
При использовании в интерфейсе SWI-Prolog я получаю:
1 ?- config(V1,V2).
V1 in 3\/5,
V2 in 1..sup.
СейчасМне интересно, как получить этот результат в порту C # SWI-Prolog.Вызов query.SolutionVariables[0]["V1"]
или query.SolutionVariables[0]["V2"]
даст мне промежуточные переменные.
Для V1 я мог бы использовать стратегию маркировки (res(X,L) :- setof(X, indomain(X), L).
), но это не сработает для V2, так как это соответствует неконечной области.
Итак, в двух словах, как я могу получить информацию о неконечном домене для переменной решения с C # Swipl DLL?
Заранее спасибо.