2014-11-17 4 views
0

Можно ли частично совместить правило в прологе?Пролог частичное правильное соответствие

a(b) :- k(c),k(d).
a(e) :- k(g),k(d).

Так, зная, что k(d):-true. это как-то можно получить & е Аргументы B?

+2

Не очень понятно, что вы просите. –

+1

Если вы запрашиваете, например, выражение «a (b)», если «k (d)» истинно, но «k (c)» неверно, вы не можете с правилами, которые вы показываете , Однако вы можете создать мета-интерпретатор правил, чтобы определить это. – lurker

+0

@lurker Это именно то, что я хочу; | хорошо, тогда я думаю, что пролог не самый лучший выбор. – molok

ответ

0

я, наконец, сделал то, что я хотел, и он идет, как это (swi_prolog), где правило это имя правила для проверки

true_check([_,H,B]):- 
    call(H)->true;B=..L,true_check(L). 
true_check([B]) :- 
    call(B)->true;false. 

possible(Rule):- 
    current_predicate(rule,Head), 
    clause(Head,B), 
    B=..I, 
    true_check(I), 
    Head=..[_,Rule]. 
Смежные вопросы