Can Large Language Models Model Programs Formally?
This addresses the challenge of automatic program modeling for formal verification, which is critical for software safety, but the work is incremental as it builds on existing benchmarks and focuses on evaluation.
The paper tackles the problem of evaluating large language models' ability to formally model programs for verification, introducing Model-Bench, a benchmark of 400 Python programs, and finds significant limitations in LLMs' performance.
In the digital age, ensuring the correctness, safety, and reliability of software through formal verification is paramount, particularly as software increasingly underpins critical infrastructure. Formal verification, split into theorem proving and model checking, provides a feasible and reliable path. Unlike theorem proving, which yields notable advances, model checking has been less focused due to the difficulty of automatic program modeling. To fill this gap, we introduce Model-Bench, a benchmark and an accompanying pipeline for evaluating and improving LLMs' program modeling capability by modeling Python programs into verification-ready model checking specifications checkable by its accompanying model checker. Model-Bench comprises 400 Python programs derived from three well-known benchmarks (HumanEval, MBPP, and LiveCodeBench). Our extensive experiments reveal significant limitations in LLMs' program modeling and further provide inspiring directions.