use finer test of "productive gammas"

has() is too general; we want to know if any *factor* is a gamma.
edit docstrings
fix doctest