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.