﻿::: { b1:b, b2:b, b3:b, qb1:b?, qb2:b?, qb3:b? }

// REVIEW: Ideally, we should be able to test the execution of all code paths. 
// REVIEW: This would be facilitated by having a Cartesian function.

b1 and b2
b1 and qb2
qb1 and b2
qb1 and qb2

b1 or b2
b1 or qb2
qb1 or b2
qb1 or qb2

b1 and b2 and b3
b1 and b2 and qb3
b1 and qb2 and b3
qb1 and b2 and b3
b1 and qb2 and qb3
qb1 and b2 and qb3
qb1 and qb2 and b3
qb1 and qb2 and qb3

b1 or b2 or b3
b1 or b2 or qb3
b1 or qb2 or b3
qb1 or b2 or b3
b1 or qb2 or qb3
qb1 or b2 or qb3
qb1 or qb2 or b3
qb1 or qb2 or qb3

not b1 xor b2
b1 xor not b2
