Вы можете использовать факты для определения отношений:
cstr(=,#=).
Или использовать concat_atom/2
:
concat_atom([#,Op],CstrOp),
Например:
?- Eq = (X = 1),
Eq =.. [Op, L, R],
concat_atom([#, Op], CstrOp),
Cstr =.. [CstrOp, L, R],
call(Cstr).
Eq = 1 = 1
X = 1
Op = =
L = 1
R = 1
CstrOp = #=
Cstr = 1 #= 1
Yes (0.00s cpu)
Обратите внимание, что этоработает только для основных операторов равенства / неравенства.Вы не можете добавить #
только к любому оператору и ожидать, что он будет работать как ограничение!