Clang LibTooling + Z3 BV-64 encoding. 11 detectors: clone, equiv, class-dup, dead, null-deref, div-by-zero, int-overflow, oob, int-truncation, sign-conversion, taint-track. Interfaces: CLI, MCP (JSON-RPC 2.0), LSP. Output: SARIF 2.1.0, JSON, Markdown.
26 lines
1.1 KiB
JSON
26 lines
1.1 KiB
JSON
{
|
|
"name": "synth-type4",
|
|
"description": "Synthetic Type-4 benchmark for the fold equiv detector. Five algorithm clusters with 2-3 implementations each, all bounded under 64-bit signed arithmetic where the prover can model them. One distractor file must not pair with any cluster. Use --processes 2+ so cross-TU equiv runs in the parent.",
|
|
"expected": [
|
|
{"kind": "equiv",
|
|
"files": ["abs_v1_branch.cpp", "abs_v2_ternary.cpp"],
|
|
"id": "synth-abs",
|
|
"description": "abs(x) via if/else vs ternary"},
|
|
{"kind": "equiv",
|
|
"files": ["double_v1_add.cpp", "double_v2_mul.cpp"],
|
|
"id": "synth-double",
|
|
"description": "x+x vs x*2"},
|
|
{"kind": "equiv",
|
|
"files": ["square_v1_mul.cpp", "square_v2_named.cpp"],
|
|
"id": "synth-square",
|
|
"description": "x*x with vs without a named temp"},
|
|
{"kind": "equiv",
|
|
"files": ["sum_to_n_v1_formula.cpp", "sum_to_n_v2_factor.cpp"],
|
|
"id": "synth-sum-to-n",
|
|
"description": "n*(n+1)/2 vs (n*n+n)/2"},
|
|
{"kind": "equiv",
|
|
"files": ["max_v1_branch.cpp", "max_v2_ternary.cpp"],
|
|
"id": "synth-max-of-two",
|
|
"description": "max(a,b) via if/else vs ternary"}
|
|
]
|
|
}
|