ESBMC
Efficient SMT-based Context-Bounded Model Checker
Loading...
Searching...
No Matches
proof_cache.h
Go to the documentation of this file.
1#pragma once
2
3#include <atomic>
4#include <cstdint>
5#include <filesystem>
6#include <string>
8
21{
22public:
28 const std::string &dir,
29 const optionst &options,
30 const std::string &build_identity);
31
33 bool proved(const std::string &cone_key) const;
34
36 void record(const std::string &cone_key) const;
37
38 size_t hits() const
39 {
40 return hit_count;
41 }
42 size_t misses() const
43 {
44 return miss_count;
45 }
46
47private:
48 std::filesystem::path entry_path(const std::string &cone_key) const;
49
50 std::filesystem::path dir;
53 uint64_t context_hash;
54 // Solving runs on several threads under --parallel-solving.
55 mutable std::atomic<size_t> hit_count{0};
56 mutable std::atomic<size_t> miss_count{0};
57};
58
63std::string
64proof_cache_context(const optionst &options, const std::string &build_identity);
65
69std::string proof_cache_inactive_reason(const optionst &options);
70
74void report_proof_cache_inactive(const std::string &why);
75
80bool proof_cache_contradicted(bool was_hit, bool counterexample_found);
81
86std::string proof_cache_build_identity(const std::string &build_id);
Definition options.h:11
proof_cachet(const std::string &dir, const optionst &options, const std::string &build_identity)
Definition proof_cache.cpp:212
size_t hits() const
Definition proof_cache.h:38
size_t misses() const
Definition proof_cache.h:42
bool proved(const std::string &cone_key) const
True iff a proof is stored for cone_key.
Definition proof_cache.cpp:232
void record(const std::string &cone_key) const
Record cone_key as proved. Idempotent.
Definition proof_cache.cpp:245
bool proof_cache_contradicted(bool was_hit, bool counterexample_found)
True when the solver has just contradicted a proof the cache stood in for.
Definition proof_cache.cpp:114
std::string proof_cache_build_identity(const std::string &build_id)
The ESBMC that is running, as far as it can be established: build_id alone when that names one build,...
Definition proof_cache.cpp:119
void report_proof_cache_inactive(const std::string &why)
Say, once per run, that a named cache directory will not be consulted.
Definition proof_cache.cpp:103
std::string proof_cache_inactive_reason(const optionst &options)
Why a proof cache would not be consulted under options, or empty when it would be.
Definition proof_cache.cpp:84
std::string proof_cache_context(const optionst &options, const std::string &build_identity)
Digest of everything outside the cone that the verdict depends on.
Definition proof_cache.cpp:140