defmodule CPSolver.Constraint.LessOrEqual do
use CPSolver.Constraint
alias CPSolver.Propagator.LessOrEqual, as: LessOrEqualPropagator
alias CPSolver.IntVariable, as: Variable
def new(x, y, offset \\ 0)
def new(x, y, offset) when is_integer(y) do
new(x, Variable.new(y), offset)
end
def new(x, y, offset) do
new([x, y, offset])
end
@impl true
def propagators(args) do
[LessOrEqualPropagator.new(args)]
end
@impl true
def arguments([x, y]) do
arguments([x, y, 0])
end
def arguments([x, y, offset]) do
[Variable.to_variable(x), Variable.to_variable(y), offset]
end
end