I was thinking about some way to turn this into data, particularly data that could be more easily queried than linearly.  Didn't come up with anything other than things like 
    
    {Q.rational: 'is_rational',
     Q.integer: 'is_integer', 
     ...

But then things like `fuzzy_and` and `fuzzy_or` got in the way.  This could work if we interpret other data structures as implying these relations

    ...
    Q.negative: ('is_finite', 'is_negative'),
    Q.nonpositive: (['is_zero', 'is_finite'], 'is_nonpositive'),
    ...

(tuples cause `fuzzy_and`, lists `fuzzy_or`.  See `sympy.strategies.tree.py:treeapply()`)

But this is probably more trouble than its worth.