lib/solver/constraints/abs.ex
defmodule CPSolver.Constraint.Absolute do
@moduledoc """
Absolute value constraint.
Costraints y to be |x|
"""
use CPSolver.Constraint
alias CPSolver.Propagator.Absolute, as: AbsolutePropagator
alias CPSolver.IntVariable
def new(x, y) do
new([x, y])
end
@impl true
def propagators(args) do
[AbsolutePropagator.new(args)]
end
@impl true
def arguments([x, y]) do
[IntVariable.to_variable(x), IntVariable.to_variable(y)]
end
end