discrete-modulus (C++)
Reference implementations of discrete modulus algorithms (C++)
Loading...
Searching...
No Matches
Classes | Namespaces | Functions
solver_trace.hpp File Reference

Opt-in per-round trace recording for spanning_tree_modulus, and a versioned JSON writer for the recorded trace. More...

#include <ostream>
#include <utility>
#include <vector>
#include <boost/rational.hpp>
#include "graphs.hpp"
Include dependency graph for solver_trace.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  discrete_modulus::TraceRound
 One round of spanning_tree_modulus's main loop: the component it was carved from, the edge set dispatched at eta* = theta, and theta itself. More...
 
struct  discrete_modulus::SolverTrace
 The full recorded trace of a spanning_tree_modulus run. More...
 

Namespaces

namespace  discrete_modulus
 

Functions

void discrete_modulus::write_trace_json (std::ostream &os, const SolverTrace &trace)
 Writes trace to os as versioned JSON ("version": 1).
 

Detailed Description

Opt-in per-round trace recording for spanning_tree_modulus, and a versioned JSON writer for the recorded trace.

The certificate builder (a planned, separate untrusted tool) needs the sequence of crit_sets that Cunningham's algorithm dispatches, one per round, together with the component each was carved from, in order to reconstruct a pmf on spanning trees round by round. This header defines that recorded shape (SolverTrace) and its serialization (write_trace_json) independently of the algorithm itself, so spanning_tree_modulus only needs to append one TraceRound per round when a caller opts in.