Papers for

compiler engineers

Papers whose findings have a practical use for this group, as judged from the abstract. Open a paper to read what it means in practice.

Call-by-value evaluation precisely measured and linked to program termination

A Quantitative Interpretation of Useful Call-by-Value

Abstract: In this work, we present the first semantic interpretation of useful call-by-value evaluation through a non-idempotent intersection type system called U. One first contribution of this paper is a characterisation of termination of useful call-by-value evaluation via U-typability. That is, a term is typable in system U if and only if it terminates in the useful call-by-value strategy. As a second contribution, we show that system U provides a quantitative interpretation for useful call-by-value evaluation, offering exact step-count information for program evaluation. Even though the specification of the operational semantics of useful evaluation is highly complex, system U is notably simple. As far as we know, system U is one of the scarce quantitative type systems capturing exactly the substitution step-count for variables and abstractions in an open call-by-value strategy. Our third contribution is a termination-equivalence result between standard call-by-value, which may perform erasing reductions, and useful call-by-value, which is non-erasing. To establish this result, we introduce a non-erasing restriction of standard call-by-value, a refinement that serves as an intermediate calculus bridging standard and useful call-by-value. We show that all three calculi have the same termination behaviour, and hence induce the same observational equivalence.

Thu 29 OctLogic in Computer Science
The gist
Some programs stop running (terminate), and others keep going forever. This paper shows a way to tell exactly which programs stop when evaluated with a certain method called useful call-by-value. The authors create a simple system that can count exactly how many steps it takes to run a program using this method. They also prove that different evaluation methods with subtle rules about erasing parts of programs behave the same in terms of whether programs stop or not. This helps us better understand how programs run and when they finish.
Open → 2610.40154v1

L4 reversible intermediate language supports reversible program compilation

The Reversible Intermediate Language L4, its Type System, and its Bidirectional Small-Step Semantics

Abstract: L4 is a generic, reversible, linearly-typed, low-level language intended as an intermediate language for compiling reversible programming languages to reversible machines. L4 is intended to replace and generalise RSSA, a reversible SSA form. Inspiration is drawn from other low-level reversible languages such as HSSA. In this paper, we define L4 first informally, and then give a formal type system and a bidirectional small-step semantics for L4: The rules have direction indicators to determine forwards or backwards execution, and the direction can be changed during execution.

Thu 22 OctProgramming Languages
The gist
Reversible computing involves running programs both forward and backward to save energy or improve debugging. The authors present L4, a new programming language designed to be an intermediate step that helps compile reversible programs efficiently for reversible machines. L4 has a special type system that manages how data is used only once (linear types) and supports execution in both directions. The authors also define formal rules that precisely describe how programs run forward and backward in small steps.
Open → 2610.31201v1

Racer finds hidden bugs in gpu kernels with symbolic checking

Racer: Hunting GPU Kernel Bugs with Symbolic Equivalence Checking

Abstract: GPU kernels are critical to the performance of today's AI services, yet the same operators are rewritten repeatedly: for each GPU generation, numeric format, serving regime, and kernel language. Every rewrite must preserve the function computed by the implementation it replaces. Today, this obligation depends almost entirely on differential testing: run the new kernel and a trusted reference on randomly sampled tensors, then compare their outputs within a tolerance. This approach has blind spots that additional test cases cannot eliminate. For example, a logical bug may produce an error smaller than the tolerance required to accommodate a correct optimized kernel. We propose symbolic equivalence checking, which executes a kernel and its reference on symbolic inputs, turning each output cell into an exact algebraic expression, and then checks whether the paired expressions agree for all inputs. Because these expressions are exact, symbolic equivalence checking distinguishes floating-point error from logical bugs, while a single check covers the entire input space. We implement Racer, a PTX-level symbolic equivalence checking engine, with three techniques that make this approach practical for production kernels: (1) Shape Reduction to control checking cost, (2) a lockstep CTA scheduler to handle concurrency, and (3) idiom templates with exact numeric refutation for otherwise inconclusive results. Across 2,408 production kernels from 41 collection targets, Racer found 82 real bugs in 23 libraries, including 76 previously unknown bugs and 41 confirmed so far.

Tue 20 OctSymbolic ComputationArtificial Intelligence
The gist
Modern GPU programs often have many versions written for different hardware and purposes, and each new version needs to produce the same results as the old one. Normally, people test them by running a few examples and comparing results, but this can miss subtle bugs that hide inside normal-looking outputs. The authors made Racer, a tool that analyzes GPU programs using math symbols instead of just examples. It checks if two versions always produce exactly the same outputs, which helps find errors that regular testing would miss.
Open → 2610.28429v1

Deterministic algorithm approximates large independent sets in graphs

Approximating Independent Sets Using Additive Combinatorics

Abstract: We give a deterministic quasi-polynomial time algorithm for approximating the largest independent set in a graph. We show that if an $N$-vertex graph contains an independent set of size $2^{-t} N$, then we can find an independent set of size $2^t$ in quasi-polynomial time, for all $t$ up to a constant factor of $(\log N)^{1/3}$. This gives an approximation factor of $N / \exp((\log N)^{1/3})$, which has the same shape as known hardness results for quasi-polynomial time algorithms, up to a different exponent of the logarithm. The algorithm builds on a structural principle: a graph containing a large independent set must also contain a large sparse structured set, and such a set can be found efficiently. A greedy algorithm then extracts an independent set from it. Our proof draws on tools in additive combinatorics, in particular spreadness and sifting, to obtain the combinatorial structural results. We then convert these to efficient algorithms using pseudo-marginals obtained by semidefinite programming.

Sun 18 OctData Structures and AlgorithmsComputational Complexity
The gist
Finding a largest independent set in a graph means picking the biggest group of nodes with no connections between them. This problem is usually very hard to solve exactly. The authors present a new method that can quickly find an approximate solution, getting close to the size of the largest set if it’s big enough. Their approach uses ideas from a branch of math called additive combinatorics to find useful structures in the graph, then extracts the independent set efficiently.
Open → 2610.25047v1

LLM driven tool improves edge device kernel generation and optimization

EdgeKernelBench: Unified LLM-Driven Kernel Generation for Edge Backends

Abstract: Recent works show that LLMs can generate kernels with strong performance on server GPUs. Edge deployment presents distinct challenges because the hardware is heterogeneous, the software stacks are fragmented, and the resource budgets are tight. LLM kernel generation across diverse edge backends has yet to be studied systematically. We introduce EdgeKernelBench, which combines a unified IR deployment framework with a hierarchical benchmark for edge workloads. The unified IR captures reusable computation, scheduling, and memory decisions and connects to each target backend through a compiler interface. The benchmark spans progressively larger program scopes, from individual operators to compact model graphs, across representative edge application domains. We instantiate the design with TVM as a reference compiler and validate it across heterogeneous edge backends. With a single generation attempt, the best model achieves 64.5% Correct@1 but only 25.5% Fast@1.0. This gap shows that functional correctness does not consistently translate into performance gains. We therefore introduce the Layered Edge Kernel Agent (LEKA), which organizes optimization through a layered IR. On the agent evaluation subset, LEKA achieves 43.5% Fast@1.0, compared with 13.0% for direct generation and 26.1% for Claude Code. LEKA and Claude Code use the same base model and optimization budget. Together, EdgeKernelBench and LEKA support unified evaluation and layered optimization of kernels generated by LLMs across edge backends.

Sat 17 OctMachine Learning
The gist
Generating efficient computer instructions (kernels) for edge devices is hard because these devices are different and have limited resources. The authors created EdgeKernelBench, a way to test and compare how well large language models (LLMs) can generate these kernels across many types of edge devices. They found that simply generating correct kernels doesn’t guarantee good performance, so they built LEKA, a tool that optimizes kernels step-by-step and performs better. Together, these tools help developers evaluate and improve how AI creates code for edge devices.
Open → 2610.24648v1

Rust translations of C code often run slower but can be optimized

Where Does the Performance Go? Understanding and Recovering Performance Regressions in C-to-Rust Translation

Abstract: Rust is increasingly adopted as a memory-safe successor to C, and transpilers such as \crust{} can migrate entire C projects while preserving their behavior. Preserving behavior, however, does not guarantee preserving performance. We study this gap on 20 real-world C projects and their \crust{} translations. On the eight projects used for analysis, the translated Rust is more than 3\% slower than the original C on 12 of 19 operations, by up to 62.2\%. By comparing execution-cost profiles, optimized LLVM IR, and compiler optimization remarks across each C--Rust pair, we trace these slowdowns to nine recurring performance issues, spanning residual runtime work, missed compiler optimizations, and C-style source patterns, and derive an optimization direction for each. We then present \ourtool{}, an LLM-based approach that encodes these issues as reusable optimization rules to recover the performance of translated Rust. \ourtool{} profiles each project to locate hot functions and matches them against rule-specific patterns. The LLM then checks each rule's rewrite preconditions against the project context before rewriting, and a rewrite is kept only if it passes both functional and performance validation. On 41 operations from twelve held-out projects, \ourtool{} preserves C outputs on all tested workloads and speeds up 40 operations over the \crust{} translations, 18 of which end up faster than the original C. It outperforms the general-purpose coding agent \codex{} on 31 of the 37 operations where both preserve C outputs, and outperforms its own variant without rule guidance on 34 of the 41 operations.

Fri 16 OctArtificial IntelligenceProgramming Languages
The gist
When converting C programs to Rust to improve memory safety, the translated Rust code sometimes runs slower than the original C. The authors studied why this slowdown happens and found nine common reasons related to extra work done at runtime, missed compiler optimizations, and old C-style programming patterns. They created an AI-based tool that spots these issues in translated Rust code and applies safe fixes that speed it up. This tool can make translated Rust code match or even beat the original C programs in speed while keeping their behavior the same.
Open → 2610.23044v1

Causal analysis reveals hidden CPU performance bottlenecks

Top-Down Microarchitecture Analysis Without Causal Modelling Is Dangerous!

Abstract: Top-Down Microarchitecture Analysis (TMA) is the standard for identifying CPU bottlenecks. However, TMA implicitly models performance via a single causal path: Workload(dataset, algorithm) => CPU(CPI) => System(Performance) (microarchitectural efficiency path). It overlooks two hidden causal paths: Workload(dataset, algorithm) => Instructions(Retired) => System(Performance) (algorithmic efficiency path) and Workload(dataset, algorithm) => Instructions(Retired) => CPU(CPI) => System(Performance) (microarchitecture-algorithm efficiency path). This causal blindness often misleads architects into futile hardware optimizations. To address this, we propose Causal Top-Down Microarchitecture Analysis (CTMA). Utilizing the object causal model, CTMA explicitly models these three causal paths among the workload, instructions, CPU, and system. We validate CTMA across Intel, AMD, and ARM platforms. Our experiments reveal counterintuitive insights: (1) CPI Profiling Blindness: Algorithmic instruction bloat can double elapsed time while the CPI profile remains frozen. (2) Over-Speculation Congestion: Throttling the Frontend paradoxically improves performance in pointer-chasing algorithms. (3) ILP Window Collapse: Extreme data topologies shift bottlenecks from Backend ROB capacity to Frontend fill-rate starvation. (4) Op-Cache SMT Overlap: Ultra-small footprints yield SMT speedups on Intel but cause severe thrashing on AMD. (5) "Ghost State" Artifact: Stale pipeline mitigations on Intel Xeon Gold 5120T artificially boost performance by 22.75% on SPEC CPU2017 and 42.2% on SPEC CPU2026. Based on this, we propose a dynamic speculation throttling mechanism.

Thu 15 OctPerformance
The gist
Common methods for finding slowdowns in computer processors focus on only one cause of delay, missing other important factors. The authors show that ignoring these hidden causes can lead to wrong conclusions and wasted efforts in improving hardware. They introduce a new analysis approach called CTMA that maps out all key causes affecting performance. Testing on various CPUs, they uncover surprising effects like how reducing certain CPU activities can actually help some workloads run faster. Their method also finds unusual behavior in Intel processors that artificially inflates performance numbers.
Open → 2610.21387v1

Normalization by evaluation with simpler substitution operations improves proofs

Normalization by Evaluation with Substitutions as Operations

Abstract: In previous works on normalization by evaluation (NbE) with an untyped domain model, explicit substitutions are a major decision choice, which, in retrospect, is taken to simplify subsequent semantic proofs. This choice hence is taken for a purely technical reason. In addition, there is no obvious lemma to test the completeness of the definition or the laws for explicit substitutions. In this technical report, we investigate NbE in a typical setting, i.e. defining substitutions as operations. We show that this setting brings simplifications in proving syntactic properties and soundness of NbE, though complications are introduced in the completeness proof of NbE.

Thu 15 OctProgramming Languages
The gist
Normalization by evaluation (NbE) is a technique used in computer science to simplify expressions in programming languages. The authors studied how using substitutions as operations, instead of explicit substitutions, affects NbE. They found that this approach makes some parts of the proof easier, like showing that the method is sound, but it complicates proving that NbE is complete. Their work helps clarify the trade-offs involved in designing NbE methods.
Open → 2610.21131v1

Conditional membership query complexity splits into three clear categories

Conditional Membership in Regular Languages

Abstract: We study a formulation of regular language membership as a promise problem, which we dub conditional membership: we fix a promise language $P$ and a target language $T \subseteq P$, we are given a word $w$ which is promised to belong to $P$, and we must determine whether $w$ belongs to $T$. We study the deterministic worst-case query complexity of this task, when the length $n$ of $w$ is known in advance and where each query examines the $i$-th position of $w$ for some $1 \leq i \leq n$ and returns the $i$-th letter $w_i$ of $w$. Our goal is to characterize the asymptotic complexity as a function of the word length $n$, depending on the fixed languages $P$ and $T$. Our main result is to show that the complexity of this task admits a trichotomy between three regimes: $O(1)$ queries, $Θ(\log n)$ queries, and $Θ(n)$ queries. We further show that the trichotomy criterion is decidable, namely, it is PSPACE-complete to decide which regime applies, given nondeterministic automata $A_P$ and $A_T$ respectively representing $P$ and $T$.

Mon 12 OctFormal Languages and Automata Theory
The gist
This paper looks at a puzzle about checking if a word belongs to a smaller language inside a bigger promised language, using a limited way to look at the word one letter at a time. The authors find there are exactly three possible difficulty levels for this task depending on the two languages involved: it can be done by looking at only a few letters, or growing slowly with the word length, or needing to check every letter. They also show that figuring out which difficulty level applies is something computers can decide, but it can be quite complex to do. This helps us understand the boundaries of how hard it is to check membership under different conditions.
Open → 2610.16610v1

DFIT opens dataflow accelerators to detailed performance analysis

DFIT: A Framework for Building Instrumentation Tools Across Heterogeneous Dataflow Accelerators

Abstract: Emerging dataflow accelerators offer exceptional energy efficiency and throughput for machine learning workloads, yet remain largely opaque to developers for performance analysis. Unlike CPUs and GPUs, where instrumentation frameworks enable fine-grained introspection, dataflow hardware exposes little information. This lack of transparency limits the ability of compiler engineers, system designers, and application developers to analyze, tune, or debug accelerator behavior. In this paper, we introduce DFIT (DataFlow Accelerator Instrumentation Tool), an instrumentation framework designed specifically for dataflow architectures. DFIT directly instruments operations, regions, and compiler transformations at the graph IR and backend-lowering stages using semantic program representation. DFIT captures high-level, semantically meaningful data that reflect the true dataflow of computation. These data can be exported for visualization and analysis. Our approach demonstrates how instrumentation can be generalized beyond traditional hardware to support heterogeneous architectures, providing portability without modifying tool logic. By opening the black box of dataflow execution, DFIT establishes a foundation for new classes of performance analysis tools for AI accelerators. It provides a practical path toward reproducible, architecture-aware introspection across heterogeneous systems, bridging the long-standing visibility gap between compiler design, runtime scheduling, and hardware realization. Evaluation across Cerebras, SambaNova, and TPU shows practical overhead of 3.53%-13.62% across instrumentation modes with robust cross-platform portability.

Fri 9 OctHardware Architecture
The gist
Dataflow accelerators are special computer chips that speed up machine learning but are very hard to understand and debug. The authors created DFIT, a tool that lets developers peek inside these chips to see how work flows and where time is spent. DFIT works across different brands of accelerators without changing the tool itself. This helps improve performance tuning and debugging for these advanced chips.
Open → 2610.14280v1

Score of parentheses requires inspecting every character in input

Many Scores Force Many Reads: An Optimality Proof for Score of Parentheses

Abstract: LeetCode Problem 856, Score of Parentheses, admits a one-pass algorithm using $O(n)$ time and $O(1)$ auxiliary registers. Its correctness follows from a local interpretation: every occurrence of () contributes a power of two determined by its nesting depth. The space bound is immediately optimal in the usual programming-challenge model, but the linear-time bound is less obvious. In particular, a direct adversary that forces an algorithm to inspect every character is difficult to maintain under the promise that the input is balanced. We instead prove a counting lower bound. For every $k$, we construct $2^k$ balanced parenthesis strings of the same length $4k+2$, all having distinct scores. The construction encodes each bit using one of two operations, changing a current score $v$ to either $2v+1$ or $2v+2$. Consequently, any deterministic character-query decision tree computing the score must have depth at least $k$. A two-character padding argument extends the result to every even input length, proving an $Ω(n)$ worst-case time lower bound. The one-pass algorithm is therefore asymptotically optimal in the unit-cost RAM model.

Fri 9 OctData Structures and Algorithms
The gist
Calculating the score of a balanced parentheses string is a known problem that can be solved quickly with little memory. The authors prove that any algorithm must read every character at least once to compute the score correctly, showing it can’t be done faster. They demonstrate this by creating many different balanced strings that all need to be distinguished to get the right score, proving a linear time lower bound. This confirms that existing fast methods are as efficient as possible.
Open → 2610.14213v1

New automaton model characterizes complex graph encodings efficiently

Recognizers for Graph-Encoding Languages

Abstract: We introduce recurrent incidence automata (RIAs), a new automaton model motivated by a decomposition of certain two-stack visibly pushdown computations. The decomposition separates vertex-local finite-state computations from recurrent one-stack interfaces connecting consecutive vertices. The construction is motivated by a two-stack visibly pushdown encoding of arbitrary ordered graphs whose strings admit a unique factorization into center-foldable vertex-local factors and whose auxiliary stack is empty at every factor boundary. Folding each factor into a sequence of pair symbols yields a local interface transformation. An RIA consists of a finite-state unit that computes these transformations and a recurrent layer that composes them across consecutive factors. Rather than manipulating an internal pushdown store, RIAs externalize long-range stack memory into recurrent interfaces between local computations. We show that nondeterministic RIA languages are closed under union, intersection, concatenation, Kleene-*, and reversal. Deterministic RIAs are closed under Boolean operations, although emptiness remains undecidable.

Mon 5 OctFormal Languages and Automata TheoryComputational ComplexityDiscrete Mathematics
The gist
Understanding complex graph structures can be challenging when using traditional string-based methods. The authors introduce recurrent incidence automata (RIAs), a new way to process graph-encoded strings by breaking them down into simpler vertex-based parts connected through recurring patterns. Instead of handling complicated long-term memory internally, their model manages connections between parts externally using a special recurrent layer. This approach allows recognizing certain languages of graphs with useful closure properties, though some questions like emptiness remain computationally hard.
Open → 2610.06743v1

GPU kernel knowledge transfer varies across code languages

MetaKernelBench: Measuring GPU Kernel Knowledge Transfer Beyond Code

Abstract: Recent GPU kernel optimization agents retain what they learn in knowledge bases or as distilled skills. Kernel benchmarks score each attempt's implementation for correctness and speed but leave the reuse value of retained experience unmeasured. We introduce MetaKernelBench, which measures whether experience distilled from an attempt in one kernel domain-specific language (DSL) improves a fresh attempt at the same problem in another. Its 74 problems are fused subgraphs in six families, each posed as a pair of CuTe DSL and TIRx variants that differ only in the DSL. The agent first attempts each variant solo and is instructed to distill what it learns into a natural-language skill, which is transferred whether or not the source attempt passes verification. The skill is the only extra input to a skill-conditioned attempt by the same model in the other DSL. We compare each skill-conditioned attempt with the solo attempt on the same variant under matched per-attempt budgets, scoring correctness and end-to-end runtime. Across six models and both directions, paired lift over solo attempts ranges from -19% to +29%. Four models gain in both directions, yet regressions occur on 16% to 45% of problems in every model and direction. Outcomes follow the source attempt's result relative to the target's solo attempt rather than source success alone, improving in 71% of comparisons when the source stands above and regressing in 54% when it stands below. MetaKernelBench complements implementation-quality metrics by measuring same-problem cross-DSL kernel knowledge transfer.

Sun 4 OctMachine Learning
The gist
Making programs that run well on GPUs can be tricky, especially when switching between different coding languages designed for those tasks. The authors created MetaKernelBench, a way to test if what is learned from solving a problem in one GPU programming language can help solve the same problem in another language. They found that sometimes transferring knowledge helps improve performance, but other times it can cause setbacks. The success of this transfer depends more on how good the first attempt is compared to a fresh try in the new language, not just whether the first try passed tests.
Open → 2610.05014v1

Handling associative and commutative operations improves program optimization memory use

Associativity and Commutativity in Equality Saturation

Abstract: Equality saturation is a promising technique for program optimization which sidesteps the phase ordering problem. However, current e-graph implementations grow exponentially large, even for simple examples. Many practical applications involve associative and commutative (AC) operators. We present an extension of relational e-matching that handles AC operators natively by storing terms as multisets. Preliminary results show that equality saturation modulo AC uses asymptotically less memory in certain cases.

Thu 1 OctProgramming Languages
The gist
Programs can be optimized by finding all ways to simplify or rewrite their parts, but this often creates too many possibilities to handle efficiently. The authors found a better way to manage operations like addition or multiplication, which don't care about order or grouping, by treating their inputs as unordered collections. This approach helps keep the optimization process from using too much memory in certain cases, making it more practical. Their method stores expressions as multisets, which naturally handle these kinds of operations.
Open → 2610.01198v1

Semantic prefix oracles improve error detection during llm code generation

Semantic Prefix Oracles for LLM Decoding: Contracts and Differential Validation

Abstract: Constrained decoding can enforce regular or context-free output formats, but many program-generation failures are semantic: scope, typing, and declaration effects depend on context. We present semantic grammar specifications, a declarative formalism that attaches such constraints to a context-free surface and executes them during Earley descent. Our implementation enforces \emph{safe pruning}: it rejects only prefixes whose semantic contradictions cannot be repaired by any continuation. A separate, grammar-dependent, \emph{dead-end freedom} property guarantees the existence of a realizable witness for each remaining branch. We give simple sufficient conditions based on surface productivity, type coverage, and left-to-right constraint flow. Our finite-lambda, core ML, and C-like fragments satisfy them, while the STLC instance used in our experiments does not: plain STLC can violate type coverage, and we show how restricting its type universe recovers it. A tokenizer-lifting lemma carries character-level witnesses to token sequences under an explicit vocabulary-coverage hypothesis. We validate the implementation differentially against production compilers (\texttt{ocamlc}, \texttt{cc}). Across every prefix of 65 compiler-valid programs we observe zero false prunes. The semantic oracle localizes 25/30 invalid programs mid-stream, against 0/30 for a syntax-only oracle, and agrees on 42/42 recursion probes. A twelve-model generation study, including a matched semantic-versus-syntactic ablation for nine models, finds nonnegative observed semantic-minus-syntactic point estimates for every model-language pair, with maxima of $+15.2$ points on STLC task correctness and $+14.3$ points on ML validity.

Mon 28 SeptProgramming LanguagesArtificial IntelligenceComputation and Language
The gist
Many computer programs fail when generated by AI because errors depend on complex meaning rules, not just grammar. The authors created a way to check these meaning rules as code is written, catching problems earlier without blocking recoverable paths. They tested their method with compilers and found it blocked invalid code more effectively than grammar-only methods. This new approach helps AI systems generate more correct code by understanding context better.
Open → 2609.35425v1

Finite resources limit exact learning in structured grammar and scheduling models

Observer--Fragmentation--Exposure Tradeoffs: From Rectangular CFG Exposure to Ordered MCFG Scheduling

Abstract: We study finite resources governing exact positive reconstruction in fixed-observation CFG and MCFG learning. For an explicit rigid CFG family we compute safe observation size, internal residual fragmentation, and characteristic-data cost exactly. The result is a two-point Pareto frontier: after compulsory rigidity witnesses are fixed, exact reconstruction reduces to connectivity inside observer fibers, and the variable part of every minimum characteristic sample is a spanning forest of complete bipartite fiber graphs. For bounded-fan-out MCFG reconstruction, pure transition fragmentation multiplies across children. An explicit fan-out-two family X_{k,r} therefore has exact characteristic-data costs 2r[1+r(k-1)] and 2rk^r under two comparable observers. An integral lattice invariant yields an affine-span lower bound and a unimodularity test. In the binary-index subfamily, unimodularity suffices for minimum-cardinality samples through ranks two and three but not rank four. Two distinct obstructions then appear: an order-independent laminar support conflict, and an order-sensitive occurrence-scheduling conflict. For disjoint child requirements, the exact scheduling threshold is the largest monochromatic run count in the doubled reduced slot-colour word; in the two-colour case this is an alternation threshold. Horn nonlocking and Cartesian locking certificates make these constraints explicit. Hierarchical reuse can trade parent-root exposure for local fan-out: for the natural critical-module library of the mixed rank-four shapes, the exact width--anchor frontiers are {(2,1)}, {(2,2),(3,1)}, and {(4,1)} for separated, nested, and crossing orders. Thus observation, fragmentation, exposure, arithmetic span, laminar compatibility, ordered scheduling, and hierarchical reuse are genuinely distinct finite resources.

Mon 28 SeptFormal Languages and Automata Theory
The gist
Some computer programs try to learn precise rules from limited observations, but doing this exactly is tricky because resources like observation size and scheduling matter. The authors study how these resources trade off when learning from certain kinds of grammar models, showing exact costs and conflicts that arise. They find distinct limitations related to data fragmentation, observation ordering, and scheduling, explaining when exact reconstruction is possible. These insights clarify how different constraints affect learning and help map the complex tradeoffs in structured data reconstruction.
Open → 2609.34560v1

Framework enables reasoning across programs in multiple languages

Multi-language Program Logics

Abstract: Real-world programs are rarely written in a single language: For example, C programs call assembly routines, and high-level languages like OCaml link with low-level C libraries. Yet program logics---one of the most successful techniques for modular program verification---almost exclusively target single-language programs. We present Hotpot, the first framework for building multi-language program logics. Hotpot enables compilation-independent, cross-language reasoning about languages with heterogeneous views of shared state. Hotpot rests on four key ideas: abstract calls to specify calls to unknown functions, lanes and the switching modality to move between languages inside the program logic, uniform integration of refinement reasoning via lanes, and exchanges to translate between separation logic assertions of different languages. We demonstrate that Hotpot allows reusing specifications across implementations in different languages, supports reasoning about higher-order cross-language function calls, and integrates with verified compilation. Hotpot is built on top of Iris and DimSum and mechanized in the Rocq Prover.

Sat 26 SeptProgramming Languages
The gist
Programs often combine code written in different programming languages, like C and assembly, but verifying such mixed-language programs has been difficult. The authors created Hotpot, a framework that lets developers reason about programs that use multiple languages together in a unified way. Hotpot includes methods to handle calls between languages, track shared memory, and reuse specifications across languages. This helps ensure that programs working across language boundaries behave correctly.
Open → 2609.32877v1

Large language models safely guide compiler optimizations with formal checks

Verified Learning for Compiler Optimization: An LLM-Guided Architecture with Formal Control

Abstract: Compiler optimizations traditionally rely on handcrafted heuristics that often fail to generalize across programs and architectures. We investigate whether large language models can participate in compiler optimization through a verification-centered systems architecture that couples generative rewriting with formal equivalence checking. Using lazification in LLVM IR as a case study, we fine-tune a code-centric LLM on transformations produced by Wyvern and embed Alive2 into a feedback loop that enforces semantic preservation for every generated rewrite. Correctness is enforced externally as a runtime control layer rather than learned implicitly. During inference, candidate transformations are symbolically validated and regenerated when necessary, ensuring accepted rewrites satisfy formal constraints. On the LLVM test suite, the fine-tuned model reproduces core optimization behaviors while applying fewer transformations overall. Although Wyvern remains faster on most benchmarks, 9.8% achieve comparable or improved runtime under the learned system, with no semantic violations observed. Verification overhead remains bounded and convergence stable. These results demonstrate that generative AI components can be safely integrated into compiler pipelines through deterministic validation and structured feedback, offering a scalable architectural pattern for trustworthy AI-driven software infrastructure.

Wed 23 SeptSoftware Engineering
The gist
Compiler optimizations make programs run faster by changing code, but mistakes can break the program. This paper shows how a large language model (LLM) can suggest code changes while a formal system checks each change to keep the program correct. The authors tested this on an existing compiler and found the system often kept changes safe and sometimes improved program speed. This method blends AI creativity with strict safety checks to help build reliable software tools.
Open → 2609.27214v1

Benchmark measures reasoning across limited instruction set languages

ISA-Bench: A Benchmark for Computational Reasoning Across Instruction Set Architectures

Abstract: Large language model code generation benchmarks primarily evaluate well-resourced languages like Python and Java, where models benefit from abundant training data. They provide limited evidence about reasoning in unfamiliar computational models: deriving arithmetic from a single subtract instruction, coordinating parallel programs across communicating nodes, or wiring logic gates into circuits. We present ISA-Bench, a benchmark of programming games with constrained instruction sets. For each game we provide a full execution stack (parser, VM, and verifier), enabling automated evaluation with structured feedback for iterative refinement. Reasoning models achieve higher average solve rates than code-specialized and general-purpose models, but unfamiliar syntax remains a major source of failure. Models solve more tasks with iterative feedback, though the gains vary substantially across architectures. We introduce a reasoning--execution gap (REG) analysis that reveals a recurring disconnect between identifying a plausible computational strategy and expressing it as a correct program in the target ISA. Code is open-sourced.

Sat 19 SeptArtificial Intelligence
The gist
Language models usually do well when writing code in common programming languages like Python. This paper points out that they struggle with unusual or very basic instruction sets, like those with just subtraction or logic gates. The authors created ISA-Bench, a set of programming games with small instruction sets and tools to test how well models can write and run programs in these environments. They found that models reason better than just copy code but still fail with unfamiliar syntax, especially when needing to write correct, complex programs. The benchmark helps show where models break down in reasoning about programming in new settings.
Open → 2609.22878v1

RISC-V powers advances in customizable machine learning hardware

RISC-V and machine learning: a survey

Abstract: The intersection of open-source processor architectures and machine learning is driving the demand for customizable, efficient, and accessible hardware. This survey examines the state of the RISC-V ISA in machine learning applications, analyzing current capabilities, challenges, and future directions based on recent research. The analysis covers academic and commercial implementations, software frameworks, and real-world applications. The RISC-V machine learning ecosystem is evaluated, from instruction set extensions and core implementations to compiler optimizations and deployment strategies. Key contributions include a unified taxonomy of RISC-V ML implementations, a comparative analysis of performance and design trade-offs, an evaluation of software toolchain maturity, and the identification of emerging trends in instruction set extensions and specialized accelerators. Findings reveal progress in energy efficiency, specialized instruction development, and framework integration, while highlighting challenges in standardization, verification complexity, and ecosystem fragmentation. The analysis proposes four research directions to address current limitations: specialized neural processing extensions, adaptive and modular processor architectures, security frameworks, and energy-efficient multi-domain architectures. These directions provide a roadmap for advancing RISC-V as a foundational platform for next-generation machine learning systems.

Thu 17 SeptMachine LearningHardware Architecture
The gist
There is growing interest in making computer chips that can be easily changed and are good at running machine learning tasks. The authors looked at how the open-source RISC-V chip design is used for machine learning, including different hardware designs, software, and real use cases. They found progress in making these chips use less energy and work better with machine learning tools, but also discovered problems with how these designs are standardized and tested. They suggest new research directions to improve RISC-V for future machine learning needs, like specialized extensions and better security.
Open → 2609.20677v1

Dense pinwheel packing scheduling problem is strongly NP-complete

Dense Pinwheel Packing Is Strongly NP-Complete

Abstract: An instance of {\sc Pinwheel Packing} is a list of positive integers $a_1,\ldots,a_k$. A feasible schedule assigns one task to every integer time so that every interval of $a_i$ consecutive times contains task $i$. The instance is \emph{dense} when $\sum_i1/a_i=1$. We prove that {\sc Dense Pinwheel Packing} is NP-complete even when every period is encoded in unary and equal periods are listed as distinct tasks. Consequently, the usual binary-encoded problem is strongly NP-complete. Kleinberg and Mishra also prove NP-completeness \cite[Corollary~5.1]{KleinbergMishra2026}, but their reduction uses periods of exponential numerical size and therefore yields only weak NP-hardness. Our proof uses a direct reduction from triangle partition in a sparse tripartite graph. If each of the three parts of the source graph has $n$ vertices, the reduction produces $O(n^4\log^3 n)$ explicitly listed tasks, each with period $O(n^4\log^3 n)$; consequently, its full unary encoding has length $O(n^8\log^6 n)$.

Thu 17 SeptComputational Complexity
The gist
The paper studies a scheduling problem where tasks must be arranged so each one appears frequently within certain intervals. When the schedule is dense, meaning the total frequencies fill all time slots exactly, the problem turns out to be very hard to solve quickly. The authors prove that even when task frequencies are written out in full and tasks with the same frequency are counted separately, deciding if such a schedule exists is strongly NP-complete. This means no fast algorithm is expected for this problem, even under stricter input conditions.
Open → 2609.20075v1

LLVM transformation validation improved with AI and formal proofs

LLVM Translation Validation Automated with Large Language Models and Lean

Abstract: LLVM is the cornerstone of modern compilers, but its subtle intermediate representation (IR) semantics make transformations error-prone and necessitate formal verification. Alive2, a state-of-the-art translation validator based on satisfiability modulo theories, has achieved substantial success in automating the validation of LLVM transformations. However, it still faces scalability limitations, does not support symbolic bitwidths, and offers only bounded guarantees for loops. In contrast, interactive theorem provers such as Lean can address these cases but require substantial proof engineering. In this paper, we present Trivet, a framework combining large language models (LLMs) and Lean for automated translation validation of LLVM transformations. Trivet generates structured proof scaffolds based on source and target functions, automatically discharges obligations amenable to deterministic reasoning, and delegates transformationspecific obligations to LLMs. It produces refinement proofs or counterexample-based refutations, with every successful verdict checked by the Lean kernel. On 148 LLVM transformations, Trivet verifies or refutes 147, leaving one invalid case unresolved. Successful cases include 60 loop-free transformations with symbolic bitwidths, 27 cases from a restricted class of loop-containing transformations, and 10 complex valid fixed-bitwidth cases on which Alive2 times out. Compared with an unscaffolded baseline, scaffolding enables 26 additional proofs. On cases solved by both configurations, it reduces mean proof time by 75.9% and mean monetary cost by 88%.

Thu 17 SeptProgramming Languages
The gist
Transforming programs inside compilers can introduce hidden errors because the rules are complex. The authors combine artificial intelligence models with a proof system called Lean to check if these transformations are correct. Their tool, Trivet, automatically builds proofs or finds errors for nearly all tested cases, including tricky loops and large program parts where previous tools struggled. This approach speeds up proof checking and cuts costs significantly compared to simpler methods.
Open → 2609.19583v1

Machine learning reduces tuning steps to speed up hpc performance

Accelerating Transfer-Learning-Based Autotuning with Predictive LLVM IR Performance Ranking

Abstract: As the complexity of High Performance Computing (HPC) ecosys- tems continually increases, achieving optimal performance becomes a challenge. Traditional performance autotuning techniques pro- vide promising means to navigate this complexity, these techniques remain computationally intensive and require many evaluations to find optimal configurations. This work proposes an autotuning framework that designs a machine learning-based ensemble LLVM Intermediate Representa- tion (IR) ranker, Neural Configuration Scorer (NCS). NCS ranks the performance of IRs sampled by a transfer-learning-based autotuner, improving the efficiency of the tuning process by reducing tuning overheads and circumventing subpar evaluations. By leveraging knowledge from related tasks, we are able to effectively exploit the transfer relationship to access high-performing configurations in fewer samples than traditional techniques that rely upon itera- tive refinement. Our framework can achieve similar performance improvements as state-of-the-art autotuning techniques with up to 61.67% fewer evaluations, averaging 27.85% fewer evaluations across various HPC benchmarks.

Mon 14 SeptPerformanceMachine Learning
The gist
High performance computing systems are very complex and finding the best settings to make them run faster takes a lot of time and testing. This paper introduces a new way to speed up that process by using a machine learning model that predicts which program versions will perform better, so fewer tests are needed. The authors use transfer learning to borrow knowledge from similar tasks, helping to quickly find good configurations. Their method reduces the number of performance checks by up to 62%, making tuning more efficient.
Open → 2609.15807v1