we are using Z3 for bounded model checking. To this end, we supply a whole bunch of expressions of the following form:
state_A_1 && !state_B_1 && sometrigger => !state_A_2 & state_B_2
In other words, we encode the passage of time (steps) by supplying a separate expression for each time step. Obviously, this results in several thousands of expressions.
While the time it takes for Z3 to solve those is acceptable (for the complexity of state machines we have), it takes quite a long time (several seconds) to build all of these expressions through the Z3 JNI Java API.
So here is my question: is there an easier way to tell Z3 to create all these time-unrolled expressions through some specialized API?