Here begins a tortuous philosophical discussion:
There are two schools of thought regarding the “EQ” question.
Here I assume that the code responsible for distribution has a capability to ask whether two capabilities are the same capability.
To fix ideas I assert the following axiomatically:
Note that “==” applied to object references of Java satisfies these axioms whereas the common equals method may not.
Note also that the distribution scheme is constrained to make these axioms true for remotely transmitted messages but may choose to do so by providing an alternative EQ at certain sites.
Another aspect of these axioms is the use of the phrase “yields the same result”.
When this is interpreted in some computational model the meaning may be precise, but different models will lead to different meanings.
- If a capability is sent in messages around a loop so as to arrive back where it came from and that site has the EQ capability then EQ, applied to the original capability and the transmitted capability, yields true.
- If EQ yields true of capabilities A and B then addressing some particular message via either A or B yields the same result and sending either A or B in an otherwise equal message, yields the same result.
Forwarders supporting distribution come from the same creator.
They retain a capability to invoke their creator which they use to recognize a
A sibling is another object created by the same creator.
The creator can, in principle, keep a list of capabilities to all of the objects that it has created.
When invoked in order to recognize and identify one of its offspring it can use an equality primitive (via a capability) to see if the proffered capability is one that it created.
In fact there is normally an optimization of this that avoids the cost of a linear search.
Such matters involve synergy.