invariants.lib

logic

package logic

Visibility
  1. Public
  2. All

Type Members

  1. case class Cumulative (indices: Array[Int], start: Array[IntVar], duration: Array[IntVar], amount: Array[IntVar], profile: Array[IntVar], active: Array[IntSetVar]) extends Invariant with Product with Serializable

    Maintains a resource usage profile.

  2. case class DenseCluster (values: Array[IntVar], clusters: Array[IntSetVar]) extends Invariant with Product with Serializable

    Maintains a cluster of the indexes of array: cluster(j) = {i in index of values | values[i] == j} This is considered as a dense cluster because Cluster is an array and must cover all the possibles values of the values in the array values

  3. case class DenseCount (values: Array[IntVar], counts: Array[IntVar]) extends Invariant with Product with Serializable

    Maintains a count of the indexes of array: count(j) = #{i in index of values | values[i] == j} This is considered as a dense count because counts is an array and must cover all the possibles values of the values in the array values

  4. case class DenseRef (references: Array[IntSetVar], referencing: Array[IntSetVar]) extends Invariant with Product with Serializable

    maintains the reverse references.

  5. case class Filter (values: Array[IntVar], cond: (Int) ⇒ Boolean) extends IntSetInvariant with Product with Serializable

    { i in index(values) | cond(values[i] }

  6. case class IntElement (index: IntVar, inputarray: Array[IntVar]) extends IntInvariant with Bulked[IntVar, (Int, Int)] with Product with Serializable

    inputarray[index]

  7. case class IntElements (index: IntSetVar, inputarray: Array[IntVar]) extends IntSetInvariant with Bulked[IntVar, (Int, Int)] with Product with Serializable

    Union(i in index) (array[i])

  8. case class IntITE (ifVar: IntVar, thenVar: IntVar, elseVar: IntVar) extends IntInvariant with Product with Serializable

    if (ifVar >0) then thenVar else elveVar

  9. case class IntSetElement (index: IntVar, inputarray: Array[IntSetVar]) extends IntSetInvariant with Bulked[IntSetVar, (Int, Int)] with Product with Serializable

    inputarray[index] on an array of IntSetVar

  10. case class IntVar2IntVarFun (a: IntVar, fun: (Int) ⇒ Int, MyMin: Int, MyMax: Int) extends IntInvariant with Product with Serializable

    This is a helper to define an invariant from an Int -> Int function.

  11. case class IntVarIntVar2IntVarFun (a: IntVar, b: IntVar, fun: (Int, Int) ⇒ Int, MyMin: Int, MyMax: Int) extends IntInvariant with Product with Serializable

    This is a helper to define an invariant from an Int x Int -> Int function.

  12. case class SelectLEHeapHeap (values: Array[IntVar], boundary: IntVar) extends IntSetInvariant with Product with Serializable

    {i in index of values | values[i] <= boundary} It is based on two heap data structure, hence updates are log(n) and all updates are allowed

  13. case class SelectLESetQueue (values: Array[IntVar], boundary: IntVar) extends IntSetInvariant with Product with Serializable

    {i \in index of values | values[i] <= boundary} It is based on a queue for the values above the boundary, hence all updates must be accepted by this scheme:

  14. case class Sort (values: Array[IntVar], ReversePerm: Array[IntVar]) extends Invariant with Product with Serializable

    maintains a sorting of the values array:

  15. case class SparseCluster (values: Array[IntVar], Clusters: SortedMap[Int, IntSetVar]) extends Invariant with Product with Serializable

    maintains a cluster of the indexes of array: cluster(j) = {i in index of values | values[i] == j} This is considered as a sparse cluster because Cluster is a map and must not cover all possibles values of the values in the array values

Value Members

  1. object Cluster extends AnyRef

    This is a helper object for the DenseCluster and SparseCluster invariants.

  2. object Count extends AnyRef

  3. object Sort extends Serializable

    Helper object for the sort invariant, creates the necessary variables