4
我正試圖編寫一個程序,該程序在運行時在SWI-Prolog中生成新約束。 is_true([A,means,B])
意在運行時產生另一個約束:在運行時定義CHR約束
:- use_module(library(chr)).
:- chr_constraint is_true/1.
is_true([A,means,B]) ==> (is_true(A) ==> is_true(B),writeln('asserted')).
is_true([[A,is,true],means,[A,is,not,false]]).
is_true([something,is,true]).
但是,當我鍵入這些查詢,該is_true
約束似乎沒有任何效果。 is_true([something, is, not, false])
不返回true
:
?- is_true([something,is,true]).
true .
?- is_true([something,is,not,false]).
is_true([something, is, not, false]).
斷言在控制檯的約束似乎沒有任何效果,或者:
?- asserta(is_true(A>B)==>(is_true(B<A),writeln("asserted"))).
true.
?- is_true(4>3).
is_true(4>3).
有另一種方式在運行時定義新CHR限制?