How a number becomes a proof obligation

Interactive static analysis & formal verification pipeline

01 / PARSE 02 / LOWER 03 / INFER FACTS 04 / CHECK REQS 05 / EMIT AUDIT AST CALL RET IR FACTS GUARD PROOF SOURCE CODE assert(x > 0) IR LOWERING t0 = x > 0 CALLEE FN int x ABS DOMAIN x : NONZERO GUARD FACTS if (x > 0) REQ CHECKS assert nonzero EMIT AUDIT PROVED