A Coq library for formally verifying probabilistic properties of hash-based approximate membership query structures like Bloom filters.
Ceramist is a Coq library for formally verifying hash-based approximate membership query (AMQ) structures. It provides a framework to mathematically prove probabilistic properties of data structures like Bloom filters, counting Bloom filters, and quotient filters, ensuring their correctness and reliability in space-efficient applications.
Researchers and developers working on formally verified systems, probabilistic algorithms, or data structures who need rigorous guarantees for AMQ implementations, particularly in fields like distributed systems, databases, and networking.
Ceramist offers machine-checked proofs for probabilistic data structures, reducing the risk of subtle bugs in AMQ implementations. Its modular design and specialized proof tactics make formal verification more accessible and systematic compared to manual proofs or testing alone.
Verified hash-based AMQ structures in Coq
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides machine-checked proofs for AMQ structures like Bloom filters, ensuring mathematical correctness as highlighted in the key features, reducing risk of subtle bugs.
Defines an abstract AMQ interface that can be instantiated for various structures, allowing flexible verification of custom implementations, as seen in the project structure.
Includes Coq tactics such as `comp_normalize` and `comp_simplify` to simplify reasoning about probabilistic computations, making proofs more manageable and efficient.
Comes with verified implementations for Bloom filters, counting Bloom filters, and quotient filters, providing practical templates for users to build upon.
Installation from sources can take around an hour to build, and dependencies like Coq, MathComp, and Infotheo add significant overhead, as noted in the README.
Focuses on proofs in Coq without generating executable code in common languages, so it doesn't provide drop-in libraries for practical deployment.
Relies on Coq and specific libraries, which have a smaller community and fewer resources compared to mainstream verification tools, limiting support and adoption.