Known Errors in the book Elements of Distributed Computing, 2002 page 42 , line 12 ------- (the following error was first reported by joel[AT]cs.rochester.edu) should read as ml(s,t) > 0 implies (\exists u:.... rather than ml(s,t) > 0 \equiv (\exists u:.... page 61 ------- (the following error was first reported by Yuri Gurevich ) equation 5.1 i should be replaced by t.p In the equation 5.2, i should be replaced by t.p in the right hand side of the implication. page 77 ------- if (u.myts < myts) then => if ((u.myts,u.p) < (myts,i)) then page 78 ------ two read accesses => multiple read accesses page 86, 5th line from the bottom ------ (reported by Andrey Zykov) "N+1/2" should be "(N+1)/2" page 95, fourth paragraph ------- (reported by John Bridgman) In Figure 8.2 processes P2 and P4 are sources. => In Figure 8.2(b) processes P2 and P4 are sources. page 102 -------- Fig. 8.4: (state=drinking) should be replaced by drinking page 136 -------- (by joel[AT]cs.rochester.edu) The parenthesization is wrong on line -4. It should be \forall a,b,x2: ((a) "which is in G" should be "which is G". Page 146, Q 11.2 -------- The definition of linear is wrong (fails when G is empty). It should be as follows. For a consistent cut $G \subseteq E$, such that $G \neq E$, we define $e \in E-G$ to be crucial for $G$ as: crucial(G,e) = \forall H \supseteq G: (e \in H) \or \neg B(H). Define a predicate $B$ to be linear iff for all cuts $G \subsetneqq E$, \neg B(G) \implies \exists e \in E-G: crucial(G,e). Prove that the set of cuts satisfying $B$ are closed under $\cap$ iff $B$ is linear. page 158 -------- line -8 that that => that page 163 -------- (reported by I-Chung Liu) caption for Fig 12.6 should be Monitor process algorithm M_i page 173 -------- (reported by I-Chung Liu) procedure update_channels for all messages m \in incsend do => for all messages m \in cut[i].incsend do same change for increceive page 198, Line 2 -------- "casual" => "causal" page 207, Fig 17.5 ------- {\italics T} should be T. page 215, line 17 ------- exclsuion => exclusion page 249, line 2 ------- M_init = O(E) page 295, Q 23.3 ------- decreases by at least 1 for each move => decreases by at least 1 for each move FROM AN ILLEGAL STATE. page 301, last line ------- S(P) => S(b) page 303, proof of 1. ------- the second step should be => instead of =. page 304, first line ------- S(P) => S(b) page 352, Fig 28.3 ------- watch:timer => watch:array[1..N] of timer; page 366, line 6 ------- (by Anurag Agarwal) checkpoint d => checkpoint c page 381, third para, first sentence ------- when a process restarts after a failure or rolls back because of failure of some other process, it .... => when a process restarts after a failure, it .... In other words, a process does not increment version number on rollbacks due to failures of other processes. page 397 ------- in the definition of irreflexive transitive closure add (x_0 = x) and (x_j = y). page 398 ------ 4th line <= relation should also include (p,p),(q,q),(r,r) and (s,s). page 407 ------- [DLP+86a] and [DLP+86b] are identical. page 415 ------- [Pet82] o(n log n) should be O(n log n). page 416 ------- (by joel[AT]cs.rochester.edu) [SP98] should be [SP88], and its date should be 1988.