INNER CODE UNIT · Python
sort_str
stp/stp · scripts/fuzz/uf-differential-fuzz.py:53
def sort_str(self, s):
return "Bool" if s == 'bool' else "(_ BitVec %d)" % s
def leaf(self, sort, depth):
choices = [v for v, s in self.vars if s == sort]
if choices and rng.random() < 0.7:
return rng.choice(choices)
if sort == 'bool':
return rng.choice(["true", "false"])
return "#b" + "".join(rng.choice("01") for _ in range(sort))
def term(self, sort, depth):
if depth <= 0 or rng.random() < 0.3:
return self.leaf(sort, depth)
fits = [(i, f) for i, f in enumerate(self.funcs) if f[2] == sort]
if fits and rng.random() < 0.55:
i, (name, dom, cod) = rng.choice(fits)
args = [self.term(d, depth - 1) for d in dom]