} else {
Expr mask = null;
List<AlloyType> types = new ArrayList<AlloyType>(ps.size());
for(int i=0; i<ps.size(); i++) {
types.add(sig(ps.get(i)));
if (mask==null) mask=ps.get(i); else mask=mask.product(ps.get(i));
}
AlloyRelation rel = makeRel(label, isPrivate, isMeta, types);
Set<AlloyTuple> ts = new LinkedHashSet<AlloyTuple>();
for(A4Tuple tp: (A4TupleSet)(sol.eval(expr.intersect(mask)))) {
AlloyAtom[] atoms = new AlloyAtom[tp.arity()];