I think there's two different relevant cases here:
Case 1:
I have a set of boolean variables and I want another boolean variable which is true if any of these variables are true. I'm currently doing this by making the boolean variables integers which are then set using expressions of the form:
(ite (boolean_expr) 1 0)
I then set the overall boolean just using a sum and a greater than
(> (+ b1 b2 b3...) 0)
Case 2 (this may not really be pseudoboolean):
I have two sets of boolean variables:
set1 = n_1,n_2....
set2 = m_1,m_2....
I'd like to add a constraint that says the number of variables set to true in set1 is equal to the number set to true in set2.
As above, I'm currently doing this by using integers instead of booleans and setting each one with an ite of the form:
n_1 = (ite (boolean_expr) 1 0)
and then saying that:
n_1+n_2+.... = m_1+m_2......
In each case, is using integer variables the most efficient way to do it, or is there a better way?
Thanks.