SMTLib does not allow variable length bit vectors. That is, you cannot express problems that are parameterized along the length of the battlevector. The reason for this is that the properties about bit vectors do not necessarily have parametric lengths due to power problems. Let's pretend that:
exists x0, x1, x2, x3, x4. distinct [x0, x1, x2, x3, x4]
This property says that there are at least 5 different values โโof the bit vector. This is true if the region x has a length of at least 3, but not otherwise. Therefore, the validity of a statement depends on the domain. You can also see this as a limitation of the nature of first-order SMTLibs in general.
Of course, the above applies to SMTLib and not necessarily to Z3. Leo and Co. have always been ahead of the curve, and the Z3 has many tricks that go beyond what SMTLib requires. It would be a pleasant surprise if Z3 really supports some notion of parametric tasks of a bit vector in the way you describe.
Levent erkok
source share