I've read lots of examples here on how to set one matrix `Equal` to another, but how do you nest `And` and `Or` around several different equalities for values a matrix of variables can take on? Using what I've found so far, I've been able to cobble something together that works, but surely someone knows a better way? The idea: Variables `V` can take on the values in either `A` or `B` or `C`. Minimum Working Example: Apply[ And, Apply[ Or, MapThread[ Equal, {Transpose[ Table[v[i], {c, 3}, {i, 10}]], Table[{-1, 0, 1}, {i, 10}]}, 2], {1}]] Good output: (v[1] == -1 || v[1] == 0 || v[1] == 1) && (v[2] == -1 || v[2] == 0 || v[2] == 1) && (v[3] == -1 || v[3] == 0 || v[3] == 1) && (v[4] == -1 || v[4] == 0 || v[4] == 1) && (v[5] == -1 || v[5] == 0 || v[5] == 1) && (v[6] == -1 || v[6] == 0 || v[6] == 1) && (v[7] == -1 || v[7] == 0 || v[7] == 1) && (v[8] == -1 || v[8] == 0 || v[8] == 1) && (v[9] == -1 || v[9] == 0 || v[9] == 1) && (v[10] == -1 || v[10] == 0 || v[10] == 1) Ideally the answer would be something of the form And[Or[V == {A, B, C}]] instead of the heavy use of `Table` like I have, so we can see what's happening and adapt it for other problems, and often the possible values won't have such a regular pattern as these do (A, B, & C may have irregular patterns and even repetitions in order to fill out the matrix to the right shape). Conceivably there's a way to do something like this, but I couldn't get this to work either (for use in `Reduce` or `FindInstance`): Eqns && V ∈ {-1, 0, 1}