Class BoundDomain

  • All Implemented Interfaces:
    java.lang.Cloneable

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

      • 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 java.util.Random generator
    • Constructor Detail

      • 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 Detail

      • 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
      • 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 java.lang.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 java.lang.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 java.lang.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 java.lang.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.