ostream& operator<<(ostream& os, const StepDomain& sd) { os << "<"; for (VarListIter vi = sd.parameters().begin(); vi != sd.parameters().end(); vi++) { if (vi != sd.parameters().begin()) { os << ' '; } os << **vi;
ostream& operator<<(ostream& os, const Varset& vs) { os << "CD{"; for (const VariableChain* vc = vs.cd_set(); vc != NULL; vc = vc->tail) { os << ' ' << *vc->head;
ostream& operator<<(ostream& os, const StepDomain& sd) {  os << "<";  for (VarListIter vi = sd.parameters().begin();       vi != sd.parameters().end(); vi++) {    if (vi != sd.parameters().begin()) {      os << ' ';    }    os << **vi;  }  os << "> in " << sd.domain();  return os;}