Re reasonable choice for '-' (let's call it 'neg'):

1) neg should not be the identity.
2) neg(neg(x)) should be equal to x.

This only leaves neg(True)=False and neg(False)=True for reasonable implementations of neg.

As the numpy boolean array can only contain True and False it should be fine.