Skip to content
HN On Hacker News ↗

C*: Unifying Programming and Verification in C

▲ 83 points 59 comments by rramadass 2w ago HN discussion ↗

Pangram verdict · v3.3

We believe that this entire text is human-written.

10 %

AI likelihood · overall

Human
100% human-written 0% AI-generated
SEGMENTS · HUMAN 1 of 1
SEGMENTS · AI 0 of 1
WORD COUNT 280
PEAK AI % 10% · §1
Analyzed
Sep 8
backend: pangram/v3.3
Segments scanned
1 windows
avg 280 words each
Distribution
100 / 0%
human / AI fraction
Verdict
Human
Pangram v3.3

Article text · 280 words · 1 segments analyzed

Human AI-generated
§1 Human · 10%

Authors:Yiyuan Cao, Jiayi Zhuang, Houjin Chen, Jinkai Fan, Wenbo Xu, Zhiyi Wang, Di Wang, Qinxiang Cao, Yingfei Xiong, Haiyan Zhao, Zhenjiang Hu View PDF HTML (experimental) Abstract:Ensuring the correct functionality of systems software, given its safety-critical and low-level nature, is a primary focus in formal verification research and applications. Despite advances in verification tooling, conventional programmers are rarely involved in the verification of their own code, resulting in higher development and maintenance costs for verified software. A key barrier to programmer participation in verification practices is the disconnect of environments and paradigms between programming and verification practices, which limits accessibility and real-time verification. We introduce C*, a proof-integrated language design for C programming. C* extends C with verification capabilities, powered by a symbolic execution engine and an LCF-style proof kernel. It enables real-time verification by allowing programmers to embed proof-code blocks alongside implementation code, facilitating interactive updates to the current proof state. Its expressive and extensible proof support allows users to build reusable libraries of logical definitions, theorems, and programmable proof automation. Crucially, C* unifies implementation and proof code development by using C as the common language. We implemented a prototype of C* and evaluated it on a representative benchmark of small C programs and a challenging real-world case study: the attach function of pKVM's buddy allocator. Our results demonstrate that C* supports the verification of a broad subset of C programming idioms and effectively handles complex reasoning tasks in real-world scenarios. Subjects: Programming Languages (cs.PL); Software Engineering (cs.SE) Cite as: arXiv:2504.02246 [cs.PL] (or arXiv:2504.02246v1 [cs.PL] for this version) https://doi.org/10.48550/arXiv.2504.02246 arXiv-issued DOI via DataCite Submission history From: Yiyuan Cao [view email] [v1] Thu, 3 Apr 2025 03:22:22 UTC (414 KB)