Recalling a witness: foundations and applications of monotonic state

Autor: Nikhil Swamy, Aseem Rastogi, Cătălin Hriţcu, Danel Ahman, Cédric Fournet, Kenji Maillard
Přispěvatelé: Programming securely with cryptography (PROSECCO), Inria de Paris, Institut National de Recherche en Informatique et en Automatique (Inria)-Institut National de Recherche en Informatique et en Automatique (Inria), Microsoft Research, École normale supérieure - Paris (ENS-PSL), Université Paris sciences et lettres (PSL), Programming securely with cryptography (PROSECCO ), École normale supérieure - Paris (ENS Paris)
Rok vydání: 2017
Předmět:
FOS: Computer and information sciences
Computer Science - Cryptography and Security
Computer science
Monotonic function
02 engineering and technology
Hoare logic
computer.software_genre
Mathematical proof
[INFO.INFO-CR]Computer Science [cs]/Cryptography and Security [cs.CR]
Monad (non-standard analysis)
020204 information systems
Computer Science::Logic in Computer Science
0202 electrical engineering
electronic engineering
information engineering

Monotonic-State Monad
Safety
Risk
Reliability and Quality

Modular Reasoning
Program Verification
Soundness
[INFO.INFO-PL]Computer Science [cs]/Programming Languages [cs.PL]
Computer Science - Programming Languages
State Continuity
Programming language
Formal Foundations
ACM: I.: Computing Methodologies/I.2: ARTIFICIAL INTELLIGENCE/I.2.2: Automatic Programming/I.2.2.4: Program verification
Preorder
Monotonic References
020207 software engineering
Hoare Logic
Data structure
Secure File Transfer
TheoryofComputation_LOGICSANDMEANINGSOFPROGRAMS
State (computer science)
Cryptography and Security (cs.CR)
computer
Software
Programming Languages (cs.PL)
Zdroj: Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages, 2018, 2 (POPL), ⟨10.1145/3158153⟩
Proceedings of the ACM on Programming Languages, ACM, 2018, 2 (POPL), ⟨10.1145/3158153⟩
ISSN: 2475-1421
DOI: 10.1145/3158153
Popis: We provide a way to ease the verification of programs whose state evolves monotonically. The main idea is that a property witnessed in a prior state can be soundly recalled in the current state, provided (1) state evolves according to a given preorder, and (2) the property is preserved by this preorder. In many scenarios, such monotonic reasoning yields concise modular proofs, saving the need for explicit program invariants. We distill our approach into the monotonic-state monad, a general yet compact interface for Hoare-style reasoning about monotonic state in a dependently typed language. We prove the soundness of the monotonic-state monad and use it as a unified foundation for reasoning about monotonic state in the F* verification system. Based on this foundation, we build libraries for various mutable data structures like monotonic references and apply these libraries at scale to the verification of several distributed applications.
POPL'18 camera ready
Databáze: OpenAIRE