### 6.6.3. Resource Set OR Logic

The unordered set logic discussed so far has all been "AND" logic. To illustrate this take the 3 resource set figure in the previous section. Those sets can be expressed, `(A and B) then (C) then (D) then (E and F)`.
Say for example we want to change the first set, `(A and B)`, to use "OR" logic so the sets look like this: `(A or B) then (C) then (D) then (E and F)`. This functionality can be achieved through the use of the `require-all` option. This option defaults to TRUE which is why the "AND" logic is used by default. Setting `require-all=false` means only one resource in the set needs to be started before continuing on to the next set.

Example 6.13. Resource Set "OR" logic: Three ordered sets, where the first set is internally unordered with "OR" logic

```<constraints>
<rsc_order id="order-1">
<resource_set id="ordered-set-1" sequential="false" require-all="false">
<resource_ref id="A"/>
<resource_ref id="B"/>
</resource_set>
<resource_set id="ordered-set-2" sequential="true">
<resource_ref id="C"/>
<resource_ref id="D"/>
</resource_set>
<resource_set id="ordered-set-3" sequential="false">
<resource_ref id="E"/>
<resource_ref id="F"/>
</resource_set>
</rsc_order>
</constraints>```

Important

An ordered set with `require-all=false` makes sense only in conjunction with `sequential=false`. Think of it like this: `sequential=false` modifies the set to be an unordered set using "AND" logic by default, and adding `require-all=false` flips the unordered set’s "AND" logic to "OR" logic.