jpaul.Constraints.SetConstraints
Class FilterConstraint<T>
java.lang.Object
jpaul.Constraints.Constraint<SVar<T>,java.util.Set<T>>
jpaul.Constraints.SetConstraints.FilterConstraint<T>
- Direct Known Subclasses:
- CtDiffConstraint
public class FilterConstraint<T>
- extends Constraint<SVar<T>,java.util.Set<T>>
FilterConstraint
models a filtering constraint.
Mathematically, such a constraint has the form:
vIn | pred <= vDest
where /\
stands for set intersection,
<=
stands for set inclusion, and vIn
,
vDest
are set-valued variables, and pred
is a predicate. The constraints states that all elements of
vIn
that satisfy the predicate pred
should appear in vDest
.
Note: pred
should be a constant predicate
(it should just be a way of specifying a constant set). Things may
get really wild if the predicate changes while the system is
solved.
- Version:
- $Id: FilterConstraint.java,v 1.6 2006/03/14 02:29:30 salcianu Exp $
- Author:
- Alexandru Salcianu - salcianu@alum.mit.edu
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
vIn
protected final SVar<T> vIn
pred
protected final Predicate<T> pred
vDest
protected final SVar<T> vDest
FilterConstraint
public FilterConstraint(SVar<T> vIn,
Predicate<T> pred,
SVar<T> vDest)
- Creates a
FilterConstraint
with the meaning
vIn | pred <= vDest
.
in
public java.util.Collection<SVar<T>> in()
- Specified by:
in
in class Constraint<SVar<T>,java.util.Set<T>>
- Returns:
- List of variables whose values may be read in order to
construct the values of the outputs.
out
public java.util.Collection<SVar<T>> out()
- Specified by:
out
in class Constraint<SVar<T>,java.util.Set<T>>
- Returns:
- List of variables whose values may be affected by this
constraint.
cost
public int cost()
- Returns
HIGH_COST
.
- Overrides:
cost
in class Constraint<SVar<T>,java.util.Set<T>>
action
public void action(SolAccessor<SVar<T>,java.util.Set<T>> sa)
- Description copied from class:
Constraint
- Performs the action attached to this constraint.
The action should have the following form:
- Read the values of several in-variables using
sa.
get
.
- Compute some values.
- Use
sa.
join
to join the computed
values to several out-variables.
Note1: It is a serious mistake to write an
action
method that reads/modifies variables that
are not listed in the collections returned by
in()
/out()
. If you ever suspect
such an error, please set ConstraintSystem.CHECK_IN_OUT
to true
.
Note2: The solver initializes each variable to
null
(null
is considered equivalent
to the bottom element of the correspoding lattice). The body
of action
should be prepared to receive a
null
result from sa.get
.
- Specified by:
action
in class Constraint<SVar<T>,java.util.Set<T>>
- Parameters:
sa
- Provides access to the values of the variables that
are read/modified.
toString
public java.lang.String toString()
- Overrides:
toString
in class java.lang.Object
Copyright 2005 Alexandru Salcianu - salcianu@alum.mit.edu