def is_datatype_sort(s):
    return s.kind() == Z3_DATATYPE_SORT

def is_datatype_constructor(x):
    s = x.sort()
if is_datatype_sort(s):
    n = s.num_constructors()
f = x.decl()
for i in range(n):
    c = s.constructor(i)
if eq(c, f):
    return True
return False

def is_datatype_const_value(x):
    return is_const(x) and is_datatype_constructor(x)
как проверить, является ли const в z3 переменной или значением?