1. A computer-implemented method for generating finite state machines comprising: accessing a first expression comprising a plurality of variables; accessing a second expression that describes a constraint with respect to a first variable of the plurality of variables of the first expression; eliminating, by a computer, at least one variable from the second expression to generate a third expression, the at least one variable being unnecessary for computing the first expression; and determining a finite state machine for the first expression based on the first expression and the third expression.