ERights Home elib 
Back to: Distributed Programming 1st child: Grant Matcher Puzzle On to: Living with a Legacy

Equality in E


A surprising number of seemingly separate issues in the design of E all come together in the definition of the equality operations -- security, the reference taxonomy, partial order constraints, the object-passing taxonomy, and the collection classes. E has two equality operations, the predicate same and the function join.

  • In the E language, one tests if two references, x and y, are the same with "x == y". The Java/ELib programmer instead says "E.same(x, y)". Both are spoken as "Is x the same as y?".
  • In the E language, one forms the join of x and y with " def z := E.join(x, y)", which is spoken as "z is a vow for the join of x and y."

This Chapter uses the notation of the E language, but the Java/ELib programmer should find everything easy to translate.

The Grant Matcher Puzzle Defines the security problem E's equality operations need to solve.
4-Party Partial Orders Defines the concurrency problem E's equality operators need to solve.
Object Sameness When are two objects the same?
Reference Sameness When are two references the same? Reference sameness and object sameness are mutually recursive definitions, but the base cases are mostly in object sameness, which should therefore be read first.
Argument Passing Rules When a reference of a given kind is passed by an invoation of a given kind, what kind of reference is received?
Joining References Eventual mutual acceptability
 
Unless stated otherwise, all text on this page which is either unattributed or by Mark S. Miller is hereby placed in the public domain.
ERights Home elib 
Back to: Distributed Programming 1st child: Grant Matcher Puzzle On to: Living with a Legacy
Download    FAQ    API    Mail Archive    Donate

report bug (including invalid html)

Golden Key Campaign Blue Ribbon Campaign