18 Causality

Precedes relation on composite operations

Definition: Let M1,M2 be composite operations. We write M1 → M2 if

O1 ∈ Ψ(M1), O2 ∈ Ψ(M2) ⇒ O1 → O2

Definition: Let M1,M2 be composite operations. We write M1 || M2 if

O1 ∈ Ψ(M1), O2 ∈ Ψ(M2) ⇒ O1 || O2

Note that it is possible to have ¬(M1 → M2) ∧ ¬(M2 → M1) ∧ ¬(M1 || M2)

Causality with regard to the primitive operators

Consider two sites using the conventional approach of history buffers that are linear lists of operations that only grow as operations are appended at the ends of the lists.

Site S1 HB = [a1 a2 a3 a4]

Site S2 HB = [a1 a2 b1 a3 b2]

S2 is about to send b1 and b2. The operations that causally precede b1 are { a1,a2 }, whereas the operations that causally precede b2 are { a1,a2,a3,b1 }

In the conventional approach S2 will send b1 with a different execution context than b2. The result is that the dual IT performed on S1 must always involve concurrent operations.

However in the new proposed approach, S2 will send an RFactor of its HB that contains both b1 and b2, and it is impossible for S1 to know that a3 precedes b2 but not b1. Our approach actually assumes that it is nevertheless possible for S1 to merge this RFactor directly into its HB and ignore the fact that it can't actually tell for sure which of its operations are concurrent with the remote operation.

It is important to note that when we factorise the S2 HB into Lf = { a1 a2 a3 } and Rf = { b1 b2 } it is not the case that all atomic operations in Lf causally precede the atomic operations in Rf. Nevertheless such a factorisation is meaningful - because there is no operation in Rf that precedes an operation in Lf - which is exactly what is meant by a causally valid vector time.

The conventional approach can be seen as necessarily recording much more information about causality. The proposal suggests that this is not necessary - even to the extent of avoiding the need to implement a solution in terms of an inclusion transform that assumes that the operations are concurrent.

TODO: The subsequent treatment of assignment contains errors because of exactly this issue. It turns out that the proposal doesn't actually lead to uniqueness of a merge because of this very problem.