This is trickier than it might appear; the complexities are discussed in #13694 (comment)
It will likely require adding a new method Type::exclude_always_truthy which returns a new Type that excludes all inhabitants of the previous type that are known to always be truthy.