Proof-carrying types
summary
A system encodes runtime predicates into types so preconditions are proved once at construction and then carried through calls, with axioms used to infer and drop redundant checks. Examples include proving divisible by 8 from divisible by 32, a require constructor that invokes a violation handler on failure, and an infer specialization mechanism that returns true/false types for inference. The result is predicates checked exactly once and propagation across functions without compiler support.
AI-written summary · about
related talks
01h 21mProgramming with Contracts in C++20
05mTell Me Lies, Tell Me Lies, Tell Me Sweet Little Lies
58mAvoid Misuse of Contracts!
01h 17mFunction Contracts in Practice using C++
19mA Dependent Nominal Physical Type System for Static Analysis of Memory in Low Level Code
01h 19mEnforce Inform Ignore Assume - Gradual Adoption of Contracts In Production Code
01h 30mContracts, Safety, and the Art of Cat Herding
01h 10mThe C++ Type System Is Your Friend
