Array-Carrying Symbolic Execution for Function Contract Generation

Fuente: arXiv
Saved in:
Bibliographic Details
Main Authors: Lu, Weijie, Ke, Jingyu, Fu, Hongfei, Sun, Zhouyue, Zhou, Yi, Li, Guoqiang, Li, Haokun
Format: Preprint
Published: 2026
Subjects:
Online Access:
Tags: Add Tag
No Tags, Be the first to tag this record!
_version_ 1866910034636570624
author Lu, Weijie
Ke, Jingyu
Fu, Hongfei
Sun, Zhouyue
Zhou, Yi
Li, Guoqiang
Li, Haokun
author_facet Lu, Weijie
Ke, Jingyu
Fu, Hongfei
Sun, Zhouyue
Zhou, Yi
Li, Guoqiang
Li, Haokun
contents Function contract generation is a classical problem in program analysis that targets the automated analysis of functions in a program with multiple procedures. The problem is fundamental in inter-procedural analysis where properties of functions are first obtained via the generation of function contracts and then the generated contracts are used as building blocks to analyze the whole program. Typical objectives in function contract generation include pre-/post-conditions and assigns information (that specifies the modification information over program variables and memory segments during function execution). In programs with array manipulations, a crucial point in function contract generation is the treatment of array segments that imposes challenges in inferring invariants and assigns information over such segments. To address this challenge, we propose a novel symbolic execution framework that carries invariants and assigns information over contiguous segments of arrays. We implement our framework as a prototype within LLVM, and further integrate our prototype with the ACSL assertion format and the Frama-C software verification platform. Experimental evaluation over a variety of benchmarks from the literature and functions from realistic libraries shows that our framework is capable of handling array manipulating functions that indeed involve the carry of array information and are beyond existing approaches.
format Preprint
id arxiv_https___arxiv_org_abs_2602_23216
institution arXiv
publishDate 2026
record_format arxiv
spellingShingle Array-Carrying Symbolic Execution for Function Contract Generation
Lu, Weijie
Ke, Jingyu
Fu, Hongfei
Sun, Zhouyue
Zhou, Yi
Li, Guoqiang
Li, Haokun
Programming Languages
Logic in Computer Science
Software Engineering
68Q60, 68N30
D.2.4; F.3.1
Function contract generation is a classical problem in program analysis that targets the automated analysis of functions in a program with multiple procedures. The problem is fundamental in inter-procedural analysis where properties of functions are first obtained via the generation of function contracts and then the generated contracts are used as building blocks to analyze the whole program. Typical objectives in function contract generation include pre-/post-conditions and assigns information (that specifies the modification information over program variables and memory segments during function execution). In programs with array manipulations, a crucial point in function contract generation is the treatment of array segments that imposes challenges in inferring invariants and assigns information over such segments. To address this challenge, we propose a novel symbolic execution framework that carries invariants and assigns information over contiguous segments of arrays. We implement our framework as a prototype within LLVM, and further integrate our prototype with the ACSL assertion format and the Frama-C software verification platform. Experimental evaluation over a variety of benchmarks from the literature and functions from realistic libraries shows that our framework is capable of handling array manipulating functions that indeed involve the carry of array information and are beyond existing approaches.
title Array-Carrying Symbolic Execution for Function Contract Generation
topic Programming Languages
Logic in Computer Science
Software Engineering
68Q60, 68N30
D.2.4; F.3.1
url https://arxiv.org/abs/2602.23216