Let's say, I want to restrict each character of the string to the charset: [a-zA-Z0-9_] using Z3 constraints, can I use a boolean operator to specify that?
As an example:
input = [BitVec("input%s" % i, 8) for i in range(10)]
for i in range(10):
s.add(input[i] >= 0x30 and input[i] <= 0x39)
s.add(input[i] >= 0x41 and input[i] <= 0x5A)
s.add(input[i] >= 0x61 and input[i] <= 0x7A)
Is this correct? Any other efficient way to define constraints?
Usually in Python, I could do something like:
import string
charset = string.uppercase + string.lowercase + string.digits + "_"
for i in charset:
...
Can something similar be done to define constraints in Z3?
Thanks.