Some abstract thoughts:
Abstraction: Here's the thing, I'm attempting to make OO
thought self describing. The objects themselves are
abstractions, and I'm interested in creating an abstraction
that describes abstractions.
What are the properties of an abstraction?
1) Name set. All abstractions can be described by a finite
set of words. These are synonyms.
2) Similar name set. All abstractions are related to other
abstractions, often the ideas are close enough to conflate,
but aren't really the same thing. For example: to turn and to
3) Antonymical name set. All ideas that are the exact
opposite of the abstraction.
4) Conflictional name set. While not antonyms, these ideas
are ones that do not get along with this idea. An Observer
who attempts to hold both must either Normalize, Synthesize,
or throw a ConflictException.
5) Context. An abstraction can only be understood if it
exists within the appropriate context.
Properties 1-2-3-4-5 are all the "relational properties". The
abstraction is defined within its relation to other
5) Description. The "content" of an idea, what it is, and
what it means in a simple way.
6) Reaction summary. The information about this idea must be
encoded in such a way as to allow an Observer the ability to
react to the idea. For example, an object of type "
Fundamentalist Christian" will react to the abstraction "
Homosexual" differently than the object of type "Buddist".
Essentially, this is a machine readable synopsis of the idea.