Skip to content

Commit 2736be1

Browse files
author
ThanhVu (Vu) Nguyen
committed
various small updates from copilot
1 parent 640a4ec commit 2736be1

File tree

4 files changed

+43
-22
lines changed

4 files changed

+43
-22
lines changed

src/alg.py

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ def f(tasks):
194194
return dinvs
195195

196196
@beartype
197-
def cleanup(self, dinvs:DInvs, dtraces:DTraces) -> None:
197+
def cleanup(self, dinvs: DInvs, dtraces: DTraces) -> None:
198198
"""
199199
Save and analyze result
200200
Clean up tmpdir
@@ -231,7 +231,7 @@ def _infer(self, typ: str, _get_invs: Callable) -> tuple:
231231
return typ, (dinvs, dtraces), et
232232

233233
@beartype
234-
def _infer_eqts(self, maxdeg:int | None) -> tuple[DInvs, DTraces]:
234+
def _infer_eqts(self, maxdeg: int | None) -> tuple[DInvs, DTraces]:
235235
dinvs, dtraces = infer.eqt.Infer(
236236
self.symstates, self.prog).gen(self.get_auto_deg(maxdeg))
237237
return dinvs, dtraces
@@ -325,8 +325,11 @@ def start(self, seed: float, maxdeg: int | None) -> DInvs:
325325
f"got {self.dtraces.siz} traces over {len(self.dtraces)} locs")
326326
mlog.debug(f"{self.dtraces}")
327327

328-
tasks = (self._nested_arrays_tasks() + self._eqts_tasks(maxdeg) + self._ieqs_tasks() +
329-
self._minmax_tasks() + self._congruences_tasks())
328+
tasks = (self._nested_arrays_tasks() +
329+
self._eqts_tasks(maxdeg) +
330+
self._ieqs_tasks() +
331+
self._minmax_tasks() +
332+
self._congruences_tasks())
330333

331334
def f(tasks):
332335
rs = [(loc, _f(loc)) for loc, _f in tasks]
@@ -360,31 +363,35 @@ def _eqts_tasks(self, maxdeg):
360363
autodeg = self.get_auto_deg(maxdeg)
361364

362365
def _f(l):
363-
return infer.eqt.Infer.gen_from_traces(autodeg, self.dtraces[l], self.inv_decls[l])
366+
return infer.eqt.Infer.gen_from_traces(
367+
autodeg, self.dtraces[l], self.inv_decls[l])
364368

365369
def _g(l):
366370
return not self.inv_decls[l].array_only
367371
return self._mk_tasks(settings.DO_EQTS, _g, _f)
368372

369373
def _ieqs_tasks(self):
370374
def _f(l):
371-
return infer.oct.Infer.gen_from_traces(self.dtraces[l], self.inv_decls[l])
375+
return infer.oct.Infer.gen_from_traces(
376+
self.dtraces[l], self.inv_decls[l])
372377

373378
def _g(l):
374379
return not self.inv_decls[l].array_only
375380
return self._mk_tasks(settings.DO_IEQS, _g, _f)
376381

377382
def _minmax_tasks(self):
378383
def _f(l):
379-
return infer.mp.Infer.gen_from_traces(self.dtraces[l], self.inv_decls[l])
384+
return infer.mp.Infer.gen_from_traces(
385+
self.dtraces[l], self.inv_decls[l])
380386

381387
def _g(l):
382388
return not self.inv_decls[l].array_only
383389
return self._mk_tasks(settings.DO_MINMAXPLUS, _g, _f)
384390

385391
def _congruences_tasks(self):
386392
def _f(l):
387-
return infer.congruence.Infer.gen_from_traces(self.dtraces[l], self.inv_decls[l])
393+
return infer.congruence.Infer.gen_from_traces(
394+
self.dtraces[l], self.inv_decls[l])
388395

389396
def _g(l):
390397
return not self.inv_decls[l].array_only

src/c_instrument.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ def replacer(match):
2121
)
2222
return re.sub(pattern, replacer, text)
2323

24+
2425
class AddPrintfVisitor(c_ast.NodeVisitor):
2526
"""
2627
add printf() calls to vtrace definitions
@@ -30,12 +31,12 @@ def __init__(self, vtrace: str) -> None:
3031
self.vtrace = vtrace
3132

3233
@beartype
33-
def visit_FuncDef(self, node:c_ast.Node) -> None:
34+
def visit_FuncDef(self, node: c_ast.Node) -> None:
3435
if node.decl.name.startswith(self.vtrace) and not node.body.block_items:
3536
self._insert_funccall(node)
3637

3738
@beartype
38-
def _insert_funccall(self,node:c_ast.FuncDef)-> None:
39+
def _insert_funccall(self, node: c_ast.FuncDef)-> None:
3940
myvars = [p.name for p in node.decl.type.args.params]
4041
funcalls = self._create_new_funs(node.decl.name, myvars)
4142
node.body.block_items = funcalls
@@ -122,14 +123,14 @@ def visit_FuncDef(self, node:c_ast.Node) -> None:
122123

123124

124125
@beartype
125-
def gen(filename:Path, myast:c_ast.FileAST, includes:list[str]) -> None:
126+
def gen(filename: Path, myast: c_ast.FileAST, includes: list[str]) -> None:
126127
generator = c_generator.CGenerator()
127128
instr = generator.visit(myast)
128129
instr = '\n'.join(includes + [instr])
129130
vwrite(filename, instr)
130131

131132
@beartype
132-
def instrument(filename:Path, tracefile:Path, symexefile:Path) -> list[str]:
133+
def instrument(filename: Path, tracefile: Path, symexefile: Path) -> list[str]:
133134
includes = []
134135
src = []
135136
text = filename.read_text()
@@ -181,4 +182,4 @@ def instrument(filename:Path, tracefile:Path, symexefile:Path) -> list[str]:
181182
symexefile = Path(sys.argv[2])
182183
tracefile = Path(sys.argv[3])
183184
typ_output = instrument(filename, tracefile, symexefile)
184-
print('\n'.join(typ_info))
185+
print('\n'.join(typ_output))

src/data/symstates.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -647,10 +647,11 @@ def get_solver_stats(self):
647647
self.solver_stats_.append(stat)
648648
except Empty:
649649
break
650-
except:
650+
except Exception:
651651
mlog.exception(f"get_solver_stats() error")
652652
break
653653

654+
654655
class SymStatesMaker(metaclass=abc.ABCMeta):
655656

656657
@beartype
@@ -678,8 +679,15 @@ def compute(self) -> defaultdict:
678679
"""
679680
Run symbolic execution to obtain symbolic states
680681
"""
681-
tasks = [depth for depth in
682-
range(self.mindepth, settings.SE_MAXDEPTH + 1)]
682+
683+
mind = self.mindepth
684+
maxd = settings.SE_MAX_DEPTH
685+
if mind >= maxd:
686+
mlog.warning("mindepth {mind} >= maxdepth {maxd}, "
687+
"setting mindepth=maxdepth={maxd}")
688+
mind = maxd
689+
690+
tasks = [depth for depth in range(mind, maxd + 1)]
683691

684692
def f(tasks):
685693
rs = [(depth, self.get_ss(depth)) for depth in tasks]
@@ -699,8 +707,12 @@ def f(tasks):
699707

700708
def f(tasks):
701709
rs = [symstates[loc][depth] for loc, depth in tasks]
702-
rs = [
703-
(loc, depth, Z3.to_smt2_str(pcs.myexpr), Z3.to_smt2_str(pcs.mypc))
710+
rs = [(
711+
loc,
712+
depth,
713+
Z3.to_smt2_str(pcs.myexpr),
714+
Z3.to_smt2_str(pcs.mypc)
715+
)
704716
for pcs, (loc, depth) in zip(rs, tasks)
705717
]
706718
return rs
@@ -856,7 +868,7 @@ def mk(self, depth:int) -> str:
856868
return settings.Java.JPF_RUN(jpffile=self.mk_JPF_runfile(max_val, depth))
857869

858870
@beartype
859-
def mk_JPF_runfile(self, max_int:int, depth:int) -> Path:
871+
def mk_JPF_runfile(self, max_int: int, depth: int) -> Path:
860872
assert max_int >= 0, max_int
861873

862874
symargs = ["sym"] * self.ninps

src/settings.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
N_RAND_INPS = 100 # number of random inputs, only used when DO_SS is False
2828
INP_MAX_V = 300
2929
SE_DEPTH_NOCHANGES_MAX = 3
30-
SE_MAXDEPTH = 30
30+
SE_MAX_DEPTH = 30
3131
SOLVER_TIMEOUT = 3 # secs
3232
EQT_RATE = 1.5
3333
UGLY_FACTOR = 20 # remove equalities that have lots of terms and "large" coefficients
@@ -61,6 +61,7 @@
6161
JAVAC_CMD = Path("/usr/bin/javac")
6262
JAVA_CMD = Path("/usr/bin/java")
6363

64+
6465
class Java:
6566
SE_MIN_DEPTH = 7
6667

@@ -259,10 +260,10 @@ def setup(settings, args):
259260

260261
if args.se_maxdepth and args.se_maxdepth >= 1:
261262
if settings:
262-
settings.SE_MAXDEPTH = args.se_maxdepth
263+
settings.SE_MAX_DEPTH = args.se_maxdepth
263264
else:
264265
opts.append(f"-se_maxdepth {args.se_maxdepth}")
265-
266+
266267
if args.tmpdir:
267268
if settings:
268269
settings.TMPDIR = Path(args.tmpdir)

0 commit comments

Comments
 (0)