package edu.neu.ccs.demeter.aplib;

import java.util.*;

/** A function from elements in a strategy graph to symbolic element
    predicates for a class graph and name map. */
public interface ConstraintMapI {
  /** Is the element predicate for the ith edge in the strategy graph
      true for the class graph node v, using name map N? */
  boolean meetsConstraint(int i, Object v, NameMapI N);

  /** Is the element predicate for the ith edge in the strategy graph
      true for the class graph edge e, using name map N? */
  boolean meetsConstraint(int i, EdgeI e, NameMapI N);

  /** Is the element predicate for the node a in the strategy graph
      true for the class graph node v, using name map N? */
  boolean meetsConstraint(Object a, Object v, NameMapI N);

  /** Is the element predicate for the node a in the strategy graph
      true for the class graph edge e, using name map N? */
  boolean meetsConstraint(Object a, EdgeI e, NameMapI N);
}

