25#ifndef CLAUSECOPYCACHE_HPP
26#define CLAUSECOPYCACHE_HPP
vector< vector< Clause > > cache
Cache containing some number of copies (with unique variables, not used anywhere else) of clauses fro...
vector< size_t > next_copy_index
Index of the next available copy of each clause.
vector< size_t > stack
Each time you supply a copy, remember the action so that you can backtrack.
void make_copy_with_new_variables(size_t, Clause &, const Matrix &, VariableIndex &, TermIndex &)
If there is a copy cached, replace the parameter with it. Otherwise, use the parameter to actually ma...
void set_size(size_t _s)
Set the number of clauses we need cached copies for.
void backtrack()
Backtracking is just looking at the last copy supplied and undoing that action.
ClauseCopyCache()
You probably don't know the size at the point when this needs to be constructed.
vector< size_t > number_of_copies_available
How many copies of each clause, in total, are currently available? At any given time some may be avai...
void reset(const Matrix &, VariableIndex &, TermIndex &)
This is for any actual initialisation, when you either (1) intially know what you're dealing with,...
size_t size
Keep track of how many clauses there are in the matrix.
void show_counts() const
Mostly for development. See how many copies you actually ended up with.
Representation of clauses.
Representation of the Matrix within a proof.
Look after terms, using hash consing to avoid storing copies of terms.
Storage of named variables, and management of new, anonymous and unique variables.