# Relaxed Data Types as Consistency Conditions +
## 6 Placing New Consistency Conditions
Under OutofOrderCC\((k)\), the schedule is not legal, because deleting up to \(k\) consecutive mutators from the prefix before the \(Dequeue\) instance yields a sequence ending in \(Enqueue(x).Enqueue(k+2)\), where \(1\leq x\leq k+1\), and appending \(Dequeue(k+2)\) to such a sequence cannot give a sequence legal in a FIFO queue. 2. Next, we compare OutofOrderCC\((k)\) and StutteringCC\((m)\):
* Consider the following sequential schedule of a FIFO queue: \[Enqueue(1).Enqueue(2).Dequeue(2).Dequeue(1)\] This schedule is legal under OutofOrderCC\((k)\), since removing \(Enqueue(1)\), which is already minimal-length, from the preceding sequence gives \(Enqueue(2).Dequeue(2)\), which is legal in a FIFO queue. The prefix of the first three instances is then equivalent to \(Enqueue(1)\), and \(Enqueue(1).Dequeue(1)\) is legal, so the entire sequence is legal. This schedule is not legal under StutteringCC\((m)\), because \(\pi^{\prime}\) for \(Dequeue(2)\) must not include \(Enqueue(1)\), so no later \(\pi^{\prime}\) may include \(Enqueue(1)\) and \(1\) cannot be returned by a \(Dequeue\). In other words, \(Enqueue(1)\) stutters, having no effect, so the second \(Dequeue\) instance cannot return \(1\). * Consider the following sequential schedule of a FIFO queue: \[Enqueue(1).Dequeue(1).Dequeue(1)\] This schedule is legal under StutteringCC\((m)\), but not under OutofOrderCC\((k)\). In StutteringCC\((m)\), \(\pi^{\prime}\) for the first \(Dequeue\) instance is \(Enqueue(1)\), leaving out no previous instances. This \(Dequeue\) instance stutters, having no effect, so \(\pi^{\prime}\) for the second \(Dequeue\) is \(Enqueue(1)\), and thus \(\pi^{\prime}.Dequeue(1)\) is legal. For OutofOrderCC\((k)\), the empty sequence \(\varepsilon\) isthe minimal-length equivalent sequence of \(Enqueue(1).Dequeue(1)\) and, since \(\varepsilon.Dequeue(1)\) is not legal in a FIFO queue, the original schedule is not legal. 3. Finally, compare LatenessCC(\(l\)) and StutteringCC(\(m\)):
* On a FIFO queue, the sequential schedule \[Enqueue(1).Enqueue(2).Peek(2)\]0 is legal under LatenessCC(\(l\)) but not under StutteringCC(\(m\)). For StutteringCC(\(m\)), the \(\pi^{\prime}\) for the _Dequeue_ instance must contain at least one of every \(m\) consecutive mutator instances in the preceding sequence. This means that it must contain at least \(1\)\(Enqueue(x)\), where \(x<m+2\), since there are \(m+1\) consecutive such instances. Thus, \(\pi^{\prime}.Dequeue(m+2)\) is not legal, so this schedule is not legal under StutteringCC(\(m\)). * The sequential schedule \[Enqueue(1).Enqueue(2).Peek(2)\]1 on a FIFO queue is legal under StutteringCC(\(m\)), as argued above, but is not legal under LatenessCC(\(l\)). The second _Dequeue_ instance must be legal after deleting a minimal-length sequence equivalent to the prefix \(Enqueue(1).Dequeue(1)\). That is the empty sequence, though, and \(\varepsilon.Dequeue(1)\) is not legal. In each case, we have shown that the sets of schedules legal under each pair of consistency conditions are not related by subset or superset, so the three consistency conditions are pairwise incomparable.