lib/picosat.ex

defmodule Picosat do
  @moduledoc File.read!("README.md")

  @type clauses :: Picosat.Solver.clauses()
  @type solution :: Picosat.Solver.solution()
  @type reason :: Picosat.Solver.reason()

  @doc """
  Pass a list of clauses to PicoSAT to solve for

  A clause is a list of variables, as integers

  ## Example

      iex> Picosat.solve([[1, 2, -3], [2, 3], [-2], [-1, 3]])
      {:ok, [1, -2, 3]}

  """
  @spec solve(clauses) :: {:ok, solution} | {:error, reason}
  defdelegate solve(clauses), to: Picosat.Solver
end