| Syntropy | Type view | Object diagrams/mechanisms | Statecharts | Logic | Value types | Glossary |
| Association multiplicity adornments | ||||
|---|---|---|---|---|
| Symbol | Name | Placement | Restrictions | Comment |
| (none) | Single | Destination | Exclusive with Multiple and Optional | Constrains multiplicity of the dest. to be exactly one. Navigating the association yields an object of the destination type |
![]() | Multiple | Destination | Exclusive with Single and Optional | Constrains multiplicity of the destination to be zero or more. Navigating the association yields a collection of objects of the destination type |
![]() | Optional | Destination | Exclusive with Single and Multiple | Constrains multiplicity of the destination to be zero or one. Navigating the association yields an object of the destination type or nil |
| [m..n] | Range | Destination | Used only with Multiple | Constrains multiplicity of the destination to be in range m to n |
| [m] | Range | Destination | Used only with Multiple | Constrains multiplicity of the destination to equal m |
| [m+] | Range | Destination | Used only with Multiple | Constrains multiplicity of the destination to be in range m to infinity |
| Ordering adornments on multiple associations | |||
|---|---|---|---|
| Symbol | Name | Placement | Comment |
| (none) | Set | Destination | Destination collection is unordered, with no duplicates |
| [bag] | Bag | Destination | Destination collection is unordered, but with duplicates allowed |
| [seq] | Sequence | Destination | Destination collection is ordered |
| [...] | Sorted | Destination |
Destination collection is sorted according to some predicate. A rigorous predicate has the form: [a, b: Type; expression] where a comes before b if the expression is true |
| Other adornments | ||||
|---|---|---|---|---|
| Symbol | Name | Placement | Restrictions | Comment |
![]() | Qualifier | Source | Normally replaces a multiple | Defines a function, q, that selects from a multiple association using a parameter of type T. The destination can still be multiple, indicating that the parameter selects more than one object. If the function is not total over T, the destination should be optional |
![]() | Aggregation | Source | (none) | Fixes source membership of an association for the life-time of the destination. The life-time of the destination is contained within the life-time of the source. If the source is destroyed, the destination is destroyed |
| / | Derived | Anywhere on line, going across it | (none) | This association is logically derivable from others. Normally accompanied by a derivation expression |
![]() | Visible | Destination | Implementation model only | The association is definitely navigable from the source to the destination |
| ? | Undefined | Destination | No other adornments allowed | The association from source to destination is not fully defined |
| X | Blocked | Destination | No other adornments allowed | The association is not navigable from source to destination |
| Constraints between associations | |
|---|---|
| Constraints between associations are shown by drawing a dashed or faint arrow | |
| Constraint | Meaning |
| The membership of the destination association at the tail of the arrow is a subset of the membership of the destination association at the head of the arrow. The linked associations must have a common source |
| Equivalent to subset of but used when the association at the tail of the arrow identifies a single object |
| The association at the tail of the arrow is redefining the inherited association at the head |
| Special invariants | |
|---|---|
| These special invariants appear in type boxes to constrain the values of properties | |
| Invariant | Meaning |
| abstract | There can be no objects that conform to this type without also conforming to a sub-type of this type |
| const property | The value of this property is fixed throughout the life-time of each object conforming to this type |
| optional property | This property can take the value nil |
| sync | This type provides the non-exclusive contract with clients, and so guarantees not to raise wrongState exceptions, but may block callers (Implementation model only) |
| unique property | The value of this property will be different for every object in the model conforming to this type |
| value | This type is a value type, and so can have no navigable associations coming from it |
Synchronising types have another heading, Sync:, where expressions controlling the availability of operations are listed. A synchronising expression has the general form: