Index - All Packages - All Categories - All Classes
Class SetRegion
How do you make regions for spaces whose positions
a) have no orderring (ie., either no ordering can be imposed (as
in HeaperSpace) or it is undesirable to impose one (as curently
in IDSpace)); and
b) there is an inifinte supply of new positions, and you can only
name the positions you've encountered?
SetRegion is our answer to that. To start with, a set region can simply be an enumeration of the positions which are its members. However, because the complement of an XuRegion must be a valid XuRegion, and we have no other representation of the infinite set of positions left over, we must also be able to represent the region consisting of all positions except those explicitly enumerated. Every SetRegion must either have a finite number of positions, or it must cover all the space except for a finite number of positions.
With regard to degrees of simplicity (see class comment in XuRegion), we currently only have distinctions. There are no non-distinctions, and therefore no non-simple SetRegions. Interesting cases are:
1) empty region
2) full region
3) singleton set (single member)
4) singleton hole (single non-member)
5) region with more than 1, but a finite number, of members
6) region with more than 1, but a finite number, of non-members
Cases 1, 3, and 5 can be considered the "positive" regions, and cases 2, 4, and 6 the "negative" ones.
Because we only have distinctions (which we are currently doing for an internal reason which will probably go away), we forego the ability to use the generic XuRegion protocol to decompose complex regions into simpler ones. Instead we provide SetRegion specific protocol ("positions" and "isComplement").
At a later time, we will probably have cases 1 thru 4 above be the only distinctions, case 6 be a simple region but not a distinction, and have case 5 be a non-simple region. (These choices are all consistent with the letter and spirit of the simplicity framework documented in XuRegion. Simple regions must be the *intersection* of distinctions, therefore case 5 cannot be a simple non-distinction.) Please try to write your software so that it'll be insensitive to this change. Thanks.
SetRegion is an abstract superclass useful for defining regions for spaces which have the constraints listed above.
Package: Udanax-Gold
All Superclasses: Object Heaper XnRegion
Immediate Subclasses: HeaperRegion
Protocols: Object
Categories: Xanadu-Spaces-Unordered