Я пытаюсь использовать pyDatalog, чтобы определить, удовлетворены ли зависимости для различных функций. Некоторые библиотеки (lA,lB,...) предоставляют выходные данные (1,2,...), необходимые для функций (fX,fY,...).
Например:
+has("lA", 1) #Library A has output 1
+has("lA", 2) #Library A has output 2
+has("lB", 2) #Library B has output 2
+needs("fX", 1) #Feature X needs output 1
+needs("fX", 2) #Feature X needs output 2
+needs("fY", 2) #Feature Y needs output 2
Используя учебные пособия по графам pyDatalog, я могу найти библиотеки, которые предоставляют хотя бы один из выходных данных, необходимых для функции:
lib_supports_feature(X, Z) <= has(X, Y) & needs(Z, Y)
lib_supports_feature(X,"fX")
Это возвращает: [('lA',), ('lB',)], потому что он просто находит любую библиотеку, по крайней мере, с одним путем к функции.
Есть ли хороший способ вернуть только те библиотеки, которые соответствуют всем потребностям этой функции, используя pyDatalog?