R33 - modelint/shlaer-mellor-metamodel GitHub Wiki
R33 / 1:1c-M
Classifier Attribute generates type values for exactly one Subclass
Subclass has type values generated by zero or one Classifier Attribute
By definition, a Classifier Attribute must provide one or more values to distinguish each subclass population in a Generalization.
When a given subclass identifier does not itself consist of a Classifier Attribute, only one value is required. But if two repeated Generalizations are connected, the highest level Superclass has a Classifier Attribute which assigns values for each lower level subclass. Here is an example:
images/class-attribute-subsystem/R33-10.png
A Subclass may or may not be part of a Generalization where instances are globally distinct across a Generalization (without the need for a Classifier Attribute).
Formalization
Subclass Classification Value.(Superclass, Generalization, Domain) -> Classifier Attribute.(Superclass, Generalization, Domain)
Subclass Classification Value.(Subclass, Generalization, Domain) -> Subclass.(Name, Rnum, Domain)
Many associative identifier attribute
The Value attribute is added to the identifier so that multiple instances of Subclass Classification Value are related to the same Classifier Attribute—Subclass instance pair