Search papers, labs, and topics across Lattice.
This study investigates the ability of large language models (LLMs) to predict program exit codes through a novel task called Program Executability Prediction (PrEx), which assesses whether a program is semantically valid and identifies violations of formal rules. By systematically generating invalid transformations from valid programs, the authors evaluate LLMs' reliance on pre-training priors versus their application of provided programming-language semantics across various program splits. The results reveal that LLMs predominantly depend on learned priors, exhibiting significant performance degradation with increased program complexity and modified semantics.
LLMs struggle to apply programming-language semantics, relying instead on learned priors, especially as program complexity rises.
Large language models (LLMs) have shown proficiency in various software engineering tasks, such as code generation and translation. However, a key limitation in their performance may be their (lack of) understanding of programming-language semantics. Even when explicit semantics are given, it remains unclear whether LLMs apply those rules or lean on priors learned during pre-training instead. We study if LLMs lean on priors or given semantics with a novel task--Program Executability Prediction (PrEx)--that asks models to predict whether a program is semantically valid or invalid (and, if invalid, which formal rule it violates) given the program's syntax and operational semantics. Because PrEx requires both valid and invalid programs, we build a dataset with systematically generated invalid transformations derived from valid programs. We evaluate open-source coding LLMs under two semantic formalisms and two semantic shifts across Human-Written, LLM-Translated, and Fuzzer-Generated program splits. Our findings show that LLMs lean on pre-training priors rather than systematically applying the given rules, performing especially poorly on modified semantics and degrading further as program complexity increases. PrEx is available at https://github.com/EngineeringSoftware/prex.