I agree that the implementation is confusing. The `inverse_of_...` predicates are simply a way to accept `false` values. I can try to implemented it in another way, removing the need for these strange predicates. I also accept suggestions. :)

However, the `not_true` and `false` predicates are not equivalent if you consider `NULL` values. For example, the `true` predicate will only match `true` values, the `false` predicate will only match `false` values, but the `not_true` predicate will match `false` and `NULL` values, which is the real inverse of the `true` predicate. But this can be an issue/request on its own.