CAIN-42 CAIN Studio
CAIN-42 Academy

CFVE · Module 5 of 5 · 10 min

What proofs do not prove

A proof is about a model of the code and a stated property. If the property is wrong, or the model leaves out something (I/O, concurrency, the compiler), the proof says nothing about it.

Review the specification as hard as the code. Most 'proven' bugs are specification bugs.

Report proofs with their assumptions: the property, the bounds, the abstractions and the solver version.

Key points

  • Proofs cover a model and a property.
  • Specification bugs are common.
  • Report assumptions, bounds, solver version.

In the CAIN-42 codebase

  • vericoding-gate/ — gate and its supported subset

Practice check

Practice 1 · choose one

A proven function still crashes in production. The likely cause is…

Practice 2 · true or false

“A proof report should state its assumptions and bounds.”