CN: Verifying Systems C Code with Separation-Logic Refinement Types
summary
CN is a separation-logic refinement type system for ISO C that uses a Cerberus translation to a core language, implements resource types as first-class resources, and reduces refinements to decidable SMT queries via Liquid-type style constraints solved by C3. It is implemented in OCaml, has a formal soundness proof for type checking, and verifies a real pkvm component: the allocator (the verified C is 364 lines C and yields ~5.9× verification overhead), with type checking taking about 155 seconds.
AI-written summary · about
