Algorithm. The shared memory Under x-obstruction-freedom, up to x processes may concurrently progress without preventing termination. As a consequence, in comparison to obstruction-freedom, solving k-set agreement in this setting requires to deal with more contention scenarios. To cope with these additional interleavings of processes, we increase the number of entries in REG . More precisely, REG now contains m = (n − k + x) entries. Ordering the quadruplets In the base algorithm, the four fields of some quadruplet X are the round number X.rd, the level X.ℓvℓ, the conflict flag ▇.▇▇ℓ, and the value X.val. Coping with x-concurrency requires to replace the last field, which was initially a singleton, with a set of values. Hereafter, this new field is denoted X.valset. In line with the definitions of Section 4.1, let “>” denote the lexicographical order over the set of quadruplets, where the relation ⊐ is generalized as follows to take into account the fact that the last field of a quadruplet is now a non-empty set of values: X ⊐ Y d=ef (X > Y ) ∧ [(X.rd > Y.rd) ∨ (▇.▇▇ ℓ) ∨ (X.valset ⊇ Y.valset)]. In comparison to the definition appearing in Section 4, the sole new case where the ordering X ⊐ Y holds is (X > Y ) ∧ (X.valset ⊇ Y.valset). This case captures the fact that, as long as at most x input values are competing at some round, there is no conflict. If such a situation arises, we simply construct a quadruplet that aggregates the different input values. function sup(T ) is % T is a set of quadruplets whose last field is now a set of values % (S1) (S2) (S3) (S4) (S5) (S6) let (r, ℓeveℓ, conf ℓict, valset ) be max(T ); let tuples(T ) be {X | X ∈ T ∧ X.rnd = r}; let values(T ) be {v | X ∈ T ∧ v ∈ X.valset }; let conf ℓict (T ) be conflict ∨ |tuples(T )| > x ∨ |values(T )| > x; % lexicographical order % l et valset be the (at most) x greatest values in values(T ); return (r, ℓeveℓ, conf ℓict (T ), valset ) . Figure 4: Function sup() suited to x-obstruction-freedom Modifications to the sup() function Figure 4 describes the new definition of function sup(). Compared with the original algorithm in Figure 1, it introduces a few modifications (underlined and in blue). Those are detailed below. • Line S1. As pointed out previously, the last field of a quadruplet is now a set of values. The lexicographical ordering over such sets is as follows: sets are ordered first according to their size, and second using some arbitrary order over their elements. By abuse of notation, this order is also written <. For instance, we have {10, 8, 2} < {10, 4, 3} and {10, 4, 3} < {15, 12}. It is assumed that for any set of values S, S < ⊥ holds. • Line S2. This line does not change. • Lines S3 and S4. This variant extends the definition of a conflict. Namely, it considers as a conflict the case where more than x distinct tuples are competing at round r, and also the additional case where more than x distinct values are competing at round r.
Appears in 1 contract
Algorithm. The shared memory Under x-obstruction-freedom, up to x processes may concurrently progress without preventing termination. As a consequence, in comparison to obstruction-freedom, solving k-set agreement in this setting requires to deal with more contention scenarios. To cope with these additional interleavings of processes, we increase the number of entries in REG REG. More precisely, REG now contains m = (n − k + x) entries. Ordering the quadruplets In the base algorithm, the four fields of some quadruplet X are the round number X.rd, the level X.ℓvℓ, the conflict flag ▇.▇▇ℓ, and the value X.val. Coping with x-concurrency requires to replace the last field, which was initially a singleton, with a set of values. Hereafter, this new field is denoted X.valsetX.valset . In line with the definitions of Section 4.1, let “>” denote the lexicographical order over the set of quadruplets, where the relation ⊐ is generalized as follows to take into account the fact that the last field of a quadruplet is now a non-empty set of values: X ⊐ Y d=ef (X > Y ) ∧ [(X.rd > Y.rd) ∨ (▇.▇▇ ℓ) ∨ (X.valset ⊇ Y.valsetY.valset )]. In comparison to the definition appearing in Section 4, the sole new case where the ordering X ⊐ Y holds is (X > Y ) ∧ (X.valset ⊇ Y.valsetY.valset ). This case captures the fact that, as long as at most x input values are competing at some round, there is no conflict. If such a situation arises, we simply construct a quadruplet that aggregates the different input values. function sup(T ) is % T is a set of quadruplets whose last field is now a set of values % (S1) (S2) (S3) (S4) (S5) (S6) let (r⟨r, ℓeveℓ, conf ℓict, valset ) ⟩ be max(T ); let tuples(T ) be {X | X ∈ T ∧ X.rnd = r}; let values(T ) be {v | X ∈ T ∧ v ∈ X.valset }; let conf ℓict (T ) be conflict ∨ |tuples(T )| > x ∨ |values(T )| > x; % lexicographical order % l et valset be the (at most) x greatest values in values(T ); return (r⟨r, ℓeveℓ, conf ℓict (T ), valset ) ⟩ . Figure 4: Function sup() suited to x-obstruction-freedom Modifications to the sup() function Figure 4 describes the new definition of function sup(). Compared with the original algorithm in Figure 1, it introduces a few modifications (underlined and in blue). Those are detailed below. • Line S1. As pointed out previously, the last field of a quadruplet is now a set of values. The lexicographical ordering over such sets is as follows: sets are ordered first according to their size, and second using some arbitrary order over their elements. By abuse of notation, this order is also written <. For instance, we have {10, 8, 2} < {10, 4, 3} and {10, 4, 3} < {15, 12}. It is assumed that for any set of values S, S < ⊥ holds. • Line S2. This line does not change. • Lines S3 and S4. This variant extends the definition of a conflict. Namely, it considers as a conflict the case where more than x distinct tuples are competing at round r, and also the additional case where more than x distinct values are competing at round r.
Appears in 1 contract