Class BoundDomain

All Implemented Interfaces:
Cloneable

class BoundDomain extends IntDomain implements Cloneable
Defines interval of numbers which is part of FDV definition which consist of one or several intervals.
Version:
4.8
  • Field Details

    • min

      public int min
      The minimal value of the domain.
    • max

      public int max
      The maximal value of the domain.
    • emptyDomain

      public static final BoundDomain emptyDomain
      It predefines empty domain so there is no need to constantly create it when needed.
    • generator

      private static final Random generator
  • Constructor Details

    • BoundDomain

      public BoundDomain()
      It is a constructor which will create an empty Bound domain. An empty domain has minimum larger than maximum.
    • BoundDomain

      public BoundDomain(int min, int max)
      Creates a new instance of BoundDomain. It requires min to be smaller or equal to max.
      Parameters:
      min - it specifies the left bound of the BoundDomain (inclusive).
      max - it specifies the right bound of the BoundDomain (inclusive).
  • Method Details

    • unionAdapt

      public void unionAdapt(Interval i)
      Description copied from class: IntDomain
      It adds interval of values to the domain.
      Overrides:
      unionAdapt in class IntDomain
      Parameters:
      i - interval for union operation
    • addDom

      public void addDom(IntDomain domain)
      Description copied from class: IntDomain
      It adds values as specified by the parameter to the domain.
      Overrides:
      addDom in class IntDomain
      Parameters:
      domain - Domain which needs to be added to the domain.
    • unionAdapt

      public void unionAdapt(int min, int max)
      Description copied from class: IntDomain
      It adds all values between min and max to the domain.
      Specified by:
      unionAdapt in class IntDomain
      Parameters:
      min - the left bound of the interval being added.
      max - the right bound of the interval being added.
    • clear

      public void clear()
      Description copied from class: Domain
      It removes all elements.
      Specified by:
      clear in class Domain
    • getPreviousDomain

      public IntDomain getPreviousDomain()
      Description copied from class: IntDomain
      It returns domain at earlier level at which the change has occurred.
      Specified by:
      getPreviousDomain in class IntDomain
      Returns:
      previous domain
    • clone

      public BoundDomain clone()
      Description copied from class: Domain
      It clones the domain object.
      Specified by:
      clone in class Domain
    • cloneLight

      public BoundDomain cloneLight()
      It clones this domain.
      Specified by:
      cloneLight in class IntDomain
      Returns:
      clone of this domain.
    • complement

      public IntDomain complement()
      Description copied from class: IntDomain
      It creates a complement of a domain.
      Specified by:
      complement in class IntDomain
      Returns:
      it returns the complement of this domain.
    • contains

      public boolean contains(IntDomain domain)
      Description copied from class: IntDomain
      It specifies if the current domain contains the domain given as a parameter.
      Overrides:
      contains in class IntDomain
      Parameters:
      domain - for which we check if it is contained in the current domain.
      Returns:
      true if the supplied domain is cover by this domain.
    • contains

      public boolean contains(int value)
      Description copied from class: IntDomain
      It checks if value belongs to the domain.
      Overrides:
      contains in class IntDomain
      Parameters:
      value - which is checked if it exists in the domain.
      Returns:
      true if value belongs to the domain.
    • divide

      public IntDomain divide(int div)
      It divides the domain by a given constant.
      Parameters:
      div - the constant by which the domain should be divided.
      Returns:
      the domain obtained by dividing this domain by a given constant.
    • div

      private int div(int A, int B)
    • domainID

      public int domainID()
      Description copied from class: Domain
      It returns an unique identifier of the domain.
      Specified by:
      domainID in class Domain
      Returns:
      it returns an integer id of the domain.
    • eq

      public boolean eq(IntDomain domain)
      Description copied from class: IntDomain
      It specifies if the other int domain is equal to this one.
      Overrides:
      eq in class IntDomain
      Parameters:
      domain - the domain which is compared to this domain.
      Returns:
      true if both domains contain the same elements, false otherwise.
    • getInterval

      public Interval getInterval(int position)
      Description copied from class: IntDomain
      It returns required interval.
      Specified by:
      getInterval in class IntDomain
      Parameters:
      position - the position of the interval.
      Returns:
      the interval, or null if the required interval does not exist.
    • getSize

      public int getSize()
      Description copied from class: IntDomain
      It returns the size of the domain.
      Specified by:
      getSize in class IntDomain
      Returns:
      number of elements in this domain.
    • in

      public void in(int storeLevel, Var var, int min, int max)
      Description copied from class: IntDomain
      It updates the domain to have values only within the interval min..max. The type of update is decided by the value of stamp. It informs the variable of a change if it occurred.
      Specified by:
      in in class IntDomain
      Parameters:
      storeLevel - level of the store at which the update occurs.
      var - variable for which this domain is used.
      min - the minimum value to which the domain is updated.
      max - the maximum value to which the domain is updated.
    • in

      public void in(int storeLevel, Var var, IntDomain domain)
      Description copied from class: IntDomain
      It updates the domain to have values only within the domain. The type of update is decided by the value of stamp. It informs the variable of a change if it occurred.
      Overrides:
      in in class IntDomain
      Parameters:
      storeLevel - level of the store at which the update occurs.
      var - variable for which this domain is used.
      domain - the domain according to which the domain is updated.
    • inComplement

      public void inComplement(int storeLevel, Var var, int complement)
      Description copied from class: IntDomain
      It updates the domain to not contain the value complement. It informs the variable of a change if it occurred.
      Overrides:
      inComplement in class IntDomain
      Parameters:
      storeLevel - level of the store at which the update occurs.
      var - variable for which this domain is used.
      complement - value which is removed from the domain if it belonged to the domain.
    • inComplement

      public void inComplement(int storeLevel, Var var, int min, int max)
      Description copied from class: IntDomain
      It updates the domain so it does not contain the supplied interval. It informs the variable of a change if it occurred.
      Specified by:
      inComplement in class IntDomain
      Parameters:
      storeLevel - level of the store at which the update occurs.
      var - variable for which this domain is used.
      min - the left bound of the interval (inclusive).
      max - the right bound of the interval (inclusive).
    • inMax

      public void inMax(int storeLevel, Var var, int max)
      Description copied from class: IntDomain
      It updates the domain according to the maximum value and stamp value. It informs the variable of a change if it occurred.
      Overrides:
      inMax in class IntDomain
      Parameters:
      storeLevel - level of the store at which the update occurs.
      var - variable for which this domain is used.
      max - the maximum value to which the domain is updated.
    • inMin

      public void inMin(int storeLevel, Var var, int min)
      Description copied from class: IntDomain
      It updates the domain according to the minimum value and stamp value. It informs the variable of a change if it occurred.
      Overrides:
      inMin in class IntDomain
      Parameters:
      storeLevel - level of the store at which the update occurs.
      var - variable for which this domain is used.
      min - the minimum value to which the domain is updated.
    • inShift

      public void inShift(int storeLevel, Var var, IntDomain domain, int shift)
      Description copied from class: IntDomain
      It updates the domain to contain the elements as specifed by the domain, which is shifted. E.g. {1..4} + 3 = 4..7
      Specified by:
      inShift in class IntDomain
      Parameters:
      storeLevel - level of the store at which the update occurs.
      var - variable for which this domain is used.
      domain - the domain according to which the domain is updated.
      shift - the shift which is used to shift the domain supplied as argument.
    • intersect

      public IntDomain intersect(IntDomain dom)
      Description copied from class: IntDomain
      It intersects current domain with the one given as a parameter.
      Specified by:
      intersect in class IntDomain
      Parameters:
      dom - domain with which the intersection needs to be computed.
      Returns:
      the intersection between supplied domain and this domain.
    • intersect

      public IntDomain intersect(int min, int max)
      Description copied from class: IntDomain
      In intersects current domain with the interval min..max.
      Specified by:
      intersect in class IntDomain
      Parameters:
      min - the left bound of the interval (inclusive)
      max - the right bound of the interval (inclusive)
      Returns:
      the intersection between the specified interval and this domain.
    • subtract

      public IntDomain subtract(int value)
      Description copied from class: IntDomain
      It intersects with the domain which is a complement of value.
      Overrides:
      subtract in class IntDomain
      Parameters:
      value - the value for which the complement is computed
      Returns:
      the domain which does not contain specified value.
    • intervalEnumeration

      public IntervalEnumeration intervalEnumeration()
      Description copied from class: IntDomain
      It returns interval enumeration of the domain values.
      Specified by:
      intervalEnumeration in class IntDomain
      Returns:
      intervalEnumeration which can be used to enumerate intervals in this domain.
    • isEmpty

      public boolean isEmpty()
      Description copied from class: Domain
      It returns true if given domain is empty.
      Specified by:
      isEmpty in class Domain
      Returns:
      true if the given domain is empty.
    • isIntersecting

      public boolean isIntersecting(IntDomain domain)
      Description copied from class: IntDomain
      Checks if two domains intersect.
      Overrides:
      isIntersecting in class IntDomain
      Parameters:
      domain - the domain for which intersection is checked.
      Returns:
      true if domains are intersecting.
    • isIntersecting

      public boolean isIntersecting(int min, int max)
      Description copied from class: IntDomain
      It checks if interval min..max intersects with current domain.
      Specified by:
      isIntersecting in class IntDomain
      Parameters:
      min - the left bound of the interval.
      max - the right bound of the interval.
      Returns:
      true if domain intersects with the specified interval.
    • isNumeric

      public boolean isNumeric()
      Description copied from class: Domain
      It specifies if domain is a finite domain of numeric values (integers).
      Specified by:
      isNumeric in class Domain
      Returns:
      true if domains contains numeric values.
    • isSparseRepresentation

      public boolean isSparseRepresentation()
      Description copied from class: Domain
      It specifies if the domain type is more suited to representing sparse domain.
      Specified by:
      isSparseRepresentation in class Domain
      Returns:
      true if sparse, false otherwise.
    • leftElement

      public int leftElement(int intervalNo)
      Description copied from class: IntDomain
      It returns the left most element of the given interval.
      Overrides:
      leftElement in class IntDomain
      Parameters:
      intervalNo - the interval number.
      Returns:
      the left bound of the specified interval.
    • max

      public int max()
      Description copied from class: IntDomain
      It returns the maximum value in a domain.
      Specified by:
      max in class IntDomain
      Returns:
      the largest value present in the domain.
    • min

      public int min()
      Description copied from class: IntDomain
      It returns the minimum value in a domain.
      Specified by:
      min in class IntDomain
      Returns:
      the smallest value present in the domain.
    • multiply

      public IntDomain multiply(int mul)
      It multiplies the domain by a given constant.
      Parameters:
      mul - a factor by which the domain is being multiplied.
      Returns:
      Domain created by multiplication of this domain.
    • nextValue

      public int nextValue(int value)
      Description copied from class: IntDomain
      It gives next value in the domain from the given one (lexigraphical ordering). If no value can be found then returns the same value.
      Specified by:
      nextValue in class IntDomain
      Parameters:
      value - it specifies the value after which a next value has to be found.
      Returns:
      next value after the specified one which belong to this domain.
    • noIntervals

      public int noIntervals()
      Description copied from class: IntDomain
      It returns number of intervals required to represent this domain.
      Specified by:
      noIntervals in class IntDomain
      Returns:
      the number of intervals in the domain.
    • recentDomainPruning

      public IntDomain recentDomainPruning(int storeLevel)
      Description copied from class: IntDomain
      It returns the values which have been removed at current store level.
      Specified by:
      recentDomainPruning in class IntDomain
      Parameters:
      storeLevel - the current store level.
      Returns:
      emptyDomain if domain did not change at current level, or the set of values which have been removed at current level.
    • removeLevel

      public void removeLevel(int level, Var var)
      Description copied from class: Domain
      It removes the specified level. This function may re-instantiate the old copy of the domain (previous value) or recover from changes done at stamp level to get the previous value at level lower at provided level.
      Specified by:
      removeLevel in class Domain
      Parameters:
      level - the level which is being removed.
      var - the variable to which this domain belonged to.
    • rightElement

      public int rightElement(int intervalNo)
      Description copied from class: IntDomain
      It returns the right most element of the given interval.
      Overrides:
      rightElement in class IntDomain
      Parameters:
      intervalNo - the interval number.
      Returns:
      the right bound of the specified interval.
    • setDomain

      public void setDomain(IntDomain domain)
      Description copied from class: IntDomain
      It sets the domain to the specified domain.
      Specified by:
      setDomain in class IntDomain
      Parameters:
      domain - the domain from which this domain takes all elements.
    • setDomain

      public void setDomain(int min, int max)
      Description copied from class: IntDomain
      It sets this domain to contain exactly all values between min and max.
      Specified by:
      setDomain in class IntDomain
      Parameters:
      min - the left bound of the interval (inclusive).
      max - the right bound of the interval (inclusive).
    • singleton

      public boolean singleton()
      Description copied from class: Domain
      It returns true if given domain has only one element.
      Specified by:
      singleton in class Domain
      Returns:
      true if the domain contains only one element.
    • singleton

      public boolean singleton(int c)
      Description copied from class: IntDomain
      It returns true if given domain has only one element equal c.
      Overrides:
      singleton in class IntDomain
      Parameters:
      c - the value to which the only element should be equal to.
      Returns:
      true if the domain contains only one element c.
    • sizeConstraintsOriginal

      public int sizeConstraintsOriginal()
      Description copied from class: Domain
      It returns all constraints which are associated with variable, even the ones which are already satisfied.
      Specified by:
      sizeConstraintsOriginal in class Domain
      Returns:
      the number of constraints attached to the original domain of the variable associated with this domain.
    • subtract

      public IntDomain subtract(IntDomain domain)
      Description copied from class: IntDomain
      It subtracts domain from current domain and returns the result.
      Overrides:
      subtract in class IntDomain
      Parameters:
      domain - the domain which is subtracted from this domain.
      Returns:
      the result of the subtraction.
    • subtract

      public BoundDomain subtract(int min, int max)
      Description copied from class: IntDomain
      It subtracts interval min..max.
      Specified by:
      subtract in class IntDomain
      Parameters:
      min - the left bound of the interval (inclusive).
      max - the right bound of the interval (inclusive).
      Returns:
      the result of the subtraction.
    • toString

      public String toString()
      Description copied from class: Domain
      It returns string description of the domain (only values in the domain).
      Specified by:
      toString in class Domain
    • toStringConstraints

      public String toStringConstraints()
      Description copied from class: Domain
      It returns string description of the constraints attached to the domain.
      Specified by:
      toStringConstraints in class Domain
      Returns:
      the string description.
    • toStringFull

      public String toStringFull()
      Description copied from class: Domain
      It returns complete string description containing all relevant information about the domain.
      Specified by:
      toStringFull in class Domain
      Returns:
      complete description of the domain.
    • union

      public IntDomain union(IntDomain domain)
      Description copied from class: IntDomain
      It computes union of the supplied domain with this domain.
      Overrides:
      union in class IntDomain
      Parameters:
      domain - the domain for which the union is computed.
      Returns:
      the union of this domain with the supplied one.
    • union

      public IntDomain union(int min, int max)
      Description copied from class: IntDomain
      It computes union of this domain and the interval.
      Overrides:
      union in class IntDomain
      Parameters:
      min - the left bound of the interval (inclusive).
      max - the right bound of the interval (inclusive).
      Returns:
      the union of this domain and the interval.
    • union

      public IntDomain union(int value)
      Description copied from class: IntDomain
      It computes union of this domain and value.
      Overrides:
      union in class IntDomain
      Parameters:
      value - it specifies the value which is being added.
      Returns:
      domain which is a union of this one and the value.
    • valueEnumeration

      public ValueEnumeration valueEnumeration()
      Description copied from class: IntDomain
      It returns value enumeration of the domain values.
      Specified by:
      valueEnumeration in class IntDomain
      Returns:
      valueEnumeration which can be used to enumerate one by one value from this domain.
    • previousValue

      public int previousValue(int value)
      Description copied from class: IntDomain
      It gives previous value in the domain from the given one (lexigraphical ordering). If no value can be found then returns the same value.
      Specified by:
      previousValue in class IntDomain
      Parameters:
      value - before which a value is seeked for.
      Returns:
      it returns the value before the one specified as a parameter.
    • checkInvariants

      public String checkInvariants()
      Description copied from class: Domain
      It checks if the domain has correct state.
      Specified by:
      checkInvariants in class Domain
      Returns:
      It returns the information about the first invariant which does not hold or null otherwise.
    • unionAdapt

      public void unionAdapt(int value)
      Description copied from class: IntDomain
      It adds a values to the domain.
      Overrides:
      unionAdapt in class IntDomain
      Parameters:
      value - value being added to the domain.
    • subtractAdapt

      public void subtractAdapt(int complement)
      Description copied from class: IntDomain
      It removes value from the domain. It adapts current (this) domain.
      Specified by:
      subtractAdapt in class IntDomain
      Parameters:
      complement - the value for which the complement is computed
    • subtractAdapt

      public void subtractAdapt(int min, int max)
      Description copied from class: IntDomain
      It removes all values between min and max to the domain.
      Specified by:
      subtractAdapt in class IntDomain
      Parameters:
      min - the left bound of the interval being removed.
      max - the right bound of the interval being removed.
    • intersectAdapt

      public int intersectAdapt(IntDomain intersect)
      Description copied from class: IntDomain
      It computes an intersection with a given domain and stores it in this domain.
      Specified by:
      intersectAdapt in class IntDomain
      Parameters:
      intersect - domain with which the intersection is being computed.
      Returns:
      type of event which has occurred due to the operation.
    • intersectAdapt

      public int intersectAdapt(int minIntersect, int maxIntersect)
      Description copied from class: IntDomain
      It computes an intersection of this domain with an interval [min..max]. It adapts this domain to the result of the intersection.
      Specified by:
      intersectAdapt in class IntDomain
      Parameters:
      minIntersect - the minimum value of the interval used in the intersection computation.
      maxIntersect - the maximum value of the interval used in the intersection computation.
      Returns:
      it returns information about the pruning event which has occurred due to this operation.
    • getElementAt

      public int getElementAt(int index)
      Description copied from class: IntDomain
      It access the element at the specified position.
      Specified by:
      getElementAt in class IntDomain
      Parameters:
      index - the position of the element, indexing starts from 0.
      Returns:
      the value at a given position in the domain.
    • sizeOfIntersection

      public int sizeOfIntersection(IntDomain domain)
      Description copied from class: IntDomain
      It computes the size of the intersection between this domain and the domain supplied as a parameter.
      Overrides:
      sizeOfIntersection in class IntDomain
      Parameters:
      domain - the domain with which the intersection is computed.
      Returns:
      the size of the intersection.
    • getRandomValue

      public int getRandomValue()
      Description copied from class: IntDomain
      It returns a random value from the domain.
      Overrides:
      getRandomValue in class IntDomain
      Returns:
      random value.
    • contains

      public boolean contains(int min, int max)
      Description copied from class: IntDomain
      It checks if an interval min..max belongs to the domain.
      Specified by:
      contains in class IntDomain
      Parameters:
      min - the minimum value of the interval being checked
      max - the maximum value of the interval being checked
      Returns:
      true if value belongs to the domain.