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 <tt>V</tt> (roughly, infinite sets of <tt>V</tt>'s equipped with union/intersection/complement) */
public interface Topology<V> {
- public void add(Topology<V> t);
- public void add(V t);
- public void remove(Topology<V> t);
- public void remove(V t);
- public Topology<V> dup();
+ public Topology<V> unwrap();
+ public Topology<V> empty();
+
public boolean contains(V v);
- public Topology<V> fresh();
+ public boolean disjoint(Topology<V> t);
+ public boolean containsAll(Topology<V> t);
+ public Topology<V> complement();
public Topology<V> intersect(Topology<V> t);
public Topology<V> minus(Topology<V> t);
public Topology<V> union(Topology<V> t);
- public Topology<V> complement();
- public boolean disjoint(Topology<V> t);
- public boolean containsAll(Topology<V> t);
public abstract int hashCode();
public abstract boolean equals(Object o);