AssertingDoc.tioga
Spreitzer, May 24, 1985 4:30:59 pm PDT
Asserting
CEDAR 6.0 — FOR INTERNAL XEROX USE ONLY
Asserting
Mike Spreitzer
© Copyright 1985 Xerox Corporation. All rights reserved.
Abstract: Asserting provides a generalization of property lists toward relational databases.
Created by: Mike Spreitzer
Maintained by: Mike Spreitzer <Spreitzer.pa>
Keywords: Property list, property, list, atom, key, value, relation, function, database
XEROX  Xerox Corporation
   Palo Alto Research Center
   3333 Coyote Hill Road
   Palo Alto, California 94304

For Internal Xerox Use Only
1. Property lists
A theory of property lists
An Atom.PropList represents a bunch of 0-argument, 1-result functions. In each DottedPair, the key identifies the function, and the val holds the result. A property lists is usually used in the context of some entity, like a Viewer or STREAM, where it is really representing a bunch of functions that take 1 (implicit) argument, and give 1 result.
Why this is not all you'll ever need
Sometimes you want functions that take more than 0 arguments, or return more than 1 result. Sometimes you want to represent relations, of which functions are a special case. These can be encoded in property lists. Asserting conveniently does so.
2. Asserting
A more general theory
An Asserting.Assertions represents a set of relations. A relation is a set of n-tuples (of REF ANYs), where n is constant for any given relation. Some relations may be functions. A function has the property that its tuples may be considered to be divided into a ruling part (arguments) and a dependent part (results), where there are no more than one tuples with the same ruling part.
Caveats
The implementation is similar to that of property lists, and so the complexity of the operations is what you'd expect from that: OK for very small databases, terrible for anything larger. Also, the operations available are closer to those for property lists than those for real databases (e.g., almost no navigation).