Skip to content
STIMSMITH

Program Reduction

Technique

Program reduction is a prevalent technique used to facilitate compilers' debugging by automatically minimizing bug-triggering programs. It is applied across a range of domains, from compiler bug minimization to the analysis of neural code intelligence models and to CPU fuzzing test-case minimization.

First seen 6/14/2026
Last seen 7/2/2026
Evidence 9 chunks
Wiki v1

WIKI

Overview

Program reduction is a prevalent technique to facilitate compilers' debugging by automatically minimizing bug-triggering programs. Existing program reduction techniques are either generic across languages (e.g., Perses and Vulcan) or specifically customized for one certain language by employing language-specific features, like C-Reduce LPR: Large Language Models-Aided Program Reduction.

Taxonomy of Approaches

Program reduction techniques broadly fall into two categories:

  • Language-generic (syntax-level) reducers. Tools such as Perses and Vulcan operate at the syntactic level and can be applied across multiple programming languages without language-specific customization.
  • Language-specific (semantic-level) reducers. Tools such as C-Reduce exploit language-specific features to perform aggressive semantic transformations tailored to a single language.
READ FULL ARTICLE →

NEIGHBORHOOD

No graph connections found for this entity yet. It may appear in future ingestion runs.

explore full graph →

RELATIONSHIPS

3 connections
Cascade ← uses 100% 3e
Cascade includes an automated program reduction technique for minimizing bug-triggering programs
Cascade ← implements 100% 2e
Cascade implements an automated program reduction technique to find minimal bug-triggering programs.
The paper introduces a new automated program reduction method.

CITATIONS

11 sources
11 citations — click to expand
[1] Program reduction is a prevalent technique to facilitate compilers' debugging by automatically minimizing bug-triggering programs. LPR: Large Language Models-Aided Program Reduction
[2] Existing program reduction techniques are either generic across languages (e.g., Perses and Vulcan) or specifically customized for one certain language by employing language-specific features, like C-Reduce. LPR: Large Language Models-Aided Program Reduction
[3] LPR is the first technique utilizing LLMs to perform language-specific program reduction for multiple languages, alternating language-generic syntax-level reduction (e.g., Perses) and language-specific semantic-level transformations learned by LLMs. LPR: Large Language Models-Aided Program Reduction
[4] On 50 benchmarks across C, Rust, and JavaScript, LPR produces 24.93%, 4.47%, and 11.71% smaller programs than Vulcan respectively, and takes 10.77%, 34.88%, and 36.96% less time. LPR: Large Language Models-Aided Program Reduction
[5] By using Vulcan on LPR's output for C programs, program sizes comparable to those reduced by C-Reduce are achieved. LPR: Large Language Models-Aided Program Reduction
[6] Syntax-guided program reduction considers the grammar of the input programs during reduction, is faster than syntax-unaware approaches, and yields smaller sets of key tokens. Syntax-Guided Program Reduction for Understanding Neural Code Intelligence Models
[7] Key tokens identified via input program reduction can be used to generate adversarial examples for up to 65% of the input programs. Syntax-Guided Program Reduction for Understanding Neural Code Intelligence Models
[8] Cascade generates long test cases and reduces programs to a minimal form by identifying the last (tail) and first (head) instructions that trigger a CPU bug. Cascade: CPU Fuzzing via Intricate Program Generation
[9] Cascade finds via binary search the last basic block which, when omitted along with its successors, erases the buggy behavior, and replaces the predecessor's hopping instruction with a direct jump toward the final block. Cascade: CPU Fuzzing via Intricate Program Generation
[10] Identifying the head preserves architectural state via a context setter basic block that uses an ISS to infer register values, privilege level, and performance counter values, then reloads them. Cascade: CPU Fuzzing via Intricate Program Generation
[11] Cascade's program reduction was evaluated on 37 new bugs found in 5 of 6 evaluated RISC-V CPUs and in Yosys. Cascade: CPU Fuzzing via Intricate Program Generation