Your suggestion is fine by me if only more verbose. But Aaron's comment still applies re: `y is not x` vs. `y is (not x)` confusion, and to address it I can think of
```
if dif.is_nonnegative not in (None, dif.is_negative):
```
which I think does also short circuit.

Or inverting the if-else logic:
```
if dif.is_nonnegative is None or dif.is_nonnegative is dif.is_negative:
    return C.LessThan(self, other)
return dif.is_nonnegative
```
or
```
if dif.is_nonnegative in (None, dif.is_negative):
    return C.LessThan(self, other)
return dif.is_nonnegative
```