package edu.berkeley.sbp.util;
import edu.berkeley.sbp.util.*;
import edu.berkeley.sbp.*;
import java.io.*;
import java.util.*;
import java.lang.reflect.*;
import java.lang.ref.*;
// FIXME: this should be a value class -- add/remove/etc should return new Topology objects
/** values inhabiting a topology over V (roughly, infinite sets of V's equipped with union/intersection/complement) */
public interface Topology {
public Topology unwrap();
public Topology empty();
public boolean contains(V v);
public boolean disjoint(Topology t);
public boolean containsAll(Topology t);
public Topology complement();
public Topology intersect(Topology t);
public Topology minus(Topology t);
public Topology union(Topology t);
public abstract int hashCode();
public abstract boolean equals(Object o);
}