My system assumes a set of object types stored on various oracles. They can be arranged in a directed acyclic graph, where the edges represent subtype relations. Other types of graphs and edges can be imagined as well, but these notes will mainly focus on the subtype relation. The model is driven by pragmatic concerns.
Formal elegance is desirable, to help the model scale well, but usefulness is the final arbiter.
It should be noted that the mutability of objects can play a large role in how a type model is designed. Reference shifting is the 'back door' to allowing things like files, directories, and search indexes to change. Type definitions All objects are instances of particular object types. An object type is defined by its operations, attributes, and optional semantics. Semantics can constrain the results of operations and the value of attributes.