ProvSQL C/C++ API
Adding support for provenance and uncertainty management to PostgreSQL databases
Loading...
Searching...
No Matches
CircuitFromMMap.h File Reference

Build in-memory circuits from the mmap-backed persistent store. More...

#include "provsql_utils.h"
#include "BooleanCircuit.h"
#include "GenericCircuit.h"
Include dependency graph for CircuitFromMMap.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

BooleanCircuit getBooleanCircuit (pg_uuid_t token, gate_t &gate)
 Build a BooleanCircuit from the mmap store rooted at token.
BooleanCircuit getBooleanCircuit (GenericCircuit &gc, pg_uuid_t token, gate_t &gate, std::unordered_map< gate_t, gate_t > &gc_to_bc)
 Build a BooleanCircuit from an already-loaded GenericCircuit.
GenericCircuit getGenericCircuit (pg_uuid_t token)
 Build a GenericCircuit from the mmap store rooted at token.
GenericCircuit getJointCircuit (pg_uuid_t root_token, pg_uuid_t event_token, gate_t &root_gate, gate_t &event_gate)
 Build a GenericCircuit containing the closures of two roots, with shared subgraphs unified.

Detailed Description

Build in-memory circuits from the mmap-backed persistent store.

Declares two free functions that traverse the memory-mapped circuit storage starting from a given root UUID and construct the corresponding in-memory circuit representation. These functions are the primary bridge between the persistent MMappedCircuit and the evaluation algorithms that operate on BooleanCircuit or GenericCircuit.

Definition in file CircuitFromMMap.h.

Function Documentation

◆ getBooleanCircuit() [1/2]

BooleanCircuit getBooleanCircuit ( GenericCircuit & gc,
pg_uuid_t token,
gate_t & gate,
std::unordered_map< gate_t, gate_t > & gc_to_bc )

Build a BooleanCircuit from an already-loaded GenericCircuit.

Variant of getBooleanCircuit() that reuses an existing GenericCircuit (typically obtained via getGenericCircuit()) and additionally exposes the GenericCircuit-to-BooleanCircuit gate mapping, so that callers can translate input-side annotations (e.g., user-supplied leaf labels) from gc to the constructed BooleanCircuit.

Parameters
gcSource generic circuit (mutated through HAVING evaluation).
tokenUUID of the root gate.
gateOutput: gate_t of the root within the returned circuit.
gc_to_bcOutput: mapping from gc input/mulinput gates to the corresponding gates in the returned BooleanCircuit.
Returns
An in-memory BooleanCircuit.

Definition at line 84 of file CircuitFromMMap.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getBooleanCircuit() [2/2]

BooleanCircuit getBooleanCircuit ( pg_uuid_t token,
gate_t & gate )

Build a BooleanCircuit from the mmap store rooted at token.

Performs a depth-first traversal of the persistent circuit starting at token, translating each gate_type to the corresponding BooleanGate and copying probabilities and info integers.

On return, gate is set to the gate_t identifier within the returned circuit that corresponds to token.

Parameters
tokenUUID of the root gate.
gateOutput: gate_t of the root within the returned circuit.
Returns
An in-memory BooleanCircuit.

Definition at line 112 of file CircuitFromMMap.cpp.

Here is the call graph for this function:

◆ getGenericCircuit()

GenericCircuit getGenericCircuit ( pg_uuid_t token)

Build a GenericCircuit from the mmap store rooted at token.

Equivalent to createGenericCircuit() declared in MMappedCircuit.h. Performs a depth-first traversal and copies all gate metadata (type, info1/info2, extra strings, probabilities) into the returned GenericCircuit.

Parameters
tokenUUID of the root gate.
Returns
An in-memory GenericCircuit.

Definition at line 155 of file CircuitFromMMap.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ getJointCircuit()

GenericCircuit getJointCircuit ( pg_uuid_t root_token,
pg_uuid_t event_token,
gate_t & root_gate,
gate_t & event_gate )

Build a GenericCircuit containing the closures of two roots, with shared subgraphs unified.

Loads the union of every gate reachable from root_token and every gate reachable from event_token in a single in-memory GenericCircuit. Because GenericCircuit's UUID-to-gate mapping is idempotent, a gate_rv (or any other gate) reachable from both roots gets exactly one gate_t – the property the conditional MC sampler needs to couple the indicator's draw with the value's draw through Sampler's per-iteration cache.

The on-load simplification passes that getGenericCircuit runs (runRangeCheck and foldSemiringIdentities, gated by provsql.simplify_on_load) are applied to the joint circuit too. Both passes are in-place: gate types may change, but UUID-to-gate_t mappings stay valid, so callers can resolve their two roots via getGate after the call returns.

Output parameters root_gate and event_gate are the resolved gate_t for the two input UUIDs.

Parameters
root_tokenFirst root UUID (e.g. an RV's gate).
event_tokenSecond root UUID (e.g. the conditioning gate).
root_gateOutput: gate_t for root_token in the returned circuit.
event_gateOutput: gate_t for event_token in the returned circuit.
Returns
An in-memory GenericCircuit.

Definition at line 229 of file CircuitFromMMap.cpp.

Here is the call graph for this function:
Here is the caller graph for this function: