Verifying non-terminating programs with IO in F*
summary
Defines an F effect that specifies IO for both terminating and potentially non-terminating programs, implements an example echo server and most of a simple web server, and proves the echo’s traces are exactly a read then a write with the same message using SMT automation. Verification uses a specification monad with infinite traces encoded as streams, adds Tau markers to force productivity, and relies on a sub-effecting lift* from terminating IO to non-terminating IO; divergence equivalence proofs still need more manual tuning.
AI-written summary · about
chapters (5)
related talks
21mSecuring Verified IO Programs Against Unverified Code in F*
21mSecurely Compiling F* Programs With IO and Then Linking Them Against Weakly-Typ...
25mCertified Symbolic Finite Transducers: Formalization and Applications to String Analysis
25mSecRef*: Securely Sharing Mutable References between Verified and Unverified Code in F*
19mMechanized Logical Relations for Termination-Insensitive Noninterference
57mSequential Information Flow
29mTowards End-to-End Verified TEEs via Verified Interface Conformance and Interfa...
22mGiving Semantics to Program-Counter Labels via Secure Effects
