2 つのリストが任意の順序で変数間の同じ関係を表しているかどうかを確認し、対応する変数を統合するにはどうすればよいですか?
たとえば、リスト:
[#=(_G13544,_G13547+1),#=(_G13553,_G13554),#=(_G13559,2),#>(_G13559, _G13544)]
次と同等です。
[#>(_G13453,_G13430),#=(_G13409,_G13355),#=(_G13453,2),#=(_G13430,1+_G13370)]
どちらも次のように記述できるためです。
[A#>B,C#=D,A#=2,B#=E+1]
変数は次のようにバインドされます。
_G13453 = _G13559 # Equivalent to A
_G13430 = _G13544 # Equivalent to B
_G13409 = _G13553 # Equivalent to C
_G13355 = _G13554 # Equivalent to D
_G13370 = _G13547 # Equivalent to E
ファンクターは、次の CLPFD 演算子です。
- 対称:
#=/2
、+/2
、-/2
、および#\//2
; - 対称ではありません:
#>/2
、および#</2
; - 単項:
abs/1