9. An apparatus comprising: a memory unit for retaining a Constraint Satisfaction Problem (CSP) comprising a set of variables, a set of corresponding domains, and a set of constraints; a processor operative to: obtain the CSP; solve the CSP by iteratively: limiting the domains to exclude values that cannot satisfy one or more constraints of the set of constraints; heuristically selecting a variable out of the set of variables, wherein said heuristically selecting is based on constraint semantics of a constraint of the set of constraints, wherein the heuristically selecting the variable based on constraint semantics comprises: identifying in the constraint a decidable operator connecting at least a sub-constraint and an additional sub-constraint; and selecting the variable from the sub-constraint; and limiting a corresponding domain of the variable.
9. An apparatus comprising: a memory unit for retaining a Constraint Satisfaction Problem (CSP) comprising a set of variables, a set of corresponding domains, and a set of constraints; a processor operative to: obtain the CSP; solve the CSP by iteratively: limiting the domains to exclude values that cannot satisfy one or more constraints of the set of constraints; heuristically selecting a variable out of the set of variables, wherein said heuristically selecting is based on constraint semantics of a constraint of the set of constraints, wherein the heuristically selecting the variable based on constraint semantics comprises: identifying in the constraint a decidable operator connecting at least a sub-constraint and an additional sub-constraint; and selecting the variable from the sub-constraint; and limiting a corresponding domain of the variable. 12. The apparatus of claim 9 , wherein identifying the decidable operator comprises: identifying an operator connecting between a plurality of sub-constraints; determining that two or more sub-constraints out of the plurality of sub-constraints can be satisfied using values selected from the domains; and determining that the constraint is satisfiable under the condition that one or more of the two or more sub-constraints is falsified.