Maybe we need a dependency graph between predicates.  Does even-ness help you to predict zero-ness?  Sparsity in this graph would help performance.  

We could also group predicates by valid classes on which they relate.  Can MatrixExprs be positive?  Can Bools be even?