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

Catalog of probability-evaluation methods (Strategy + registry). More...

#include <memory>
#include <string>
#include <vector>
Include dependency graph for ProbabilityMethod.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  provsql::Tolerance
class  provsql::ProbabilityMethod
 Strategy interface: one concrete subclass per probability method. More...
class  provsql::MethodCatalog
 Registry of ProbabilityMethod objects. More...

Namespaces

namespace  provsql

Enumerations

enum class  provsql::ToleranceKind { provsql::Exact , provsql::Relative , provsql::Additive }
 The contract the user grants – the "path". More...
enum class  provsql::Feature { provsql::DnfShape , provsql::TreewidthProxy }
 A circuit feature a method's cost/applicability estimate depends on, but that is not free to acquire. More...

Functions

dDNNF provsql::makeDDAuto (BooleanCircuit &c, gate_t g)
 Cost-select a d-DNNF construction route for gate g of Boolean circuit c and build it – the default makeDD route.

Detailed Description

Catalog of probability-evaluation methods (Strategy + registry).

Each probability-evaluation algorithm is a first-class ProbabilityMethod object that declares its own guarantee, applicability and (eventually) cost, instead of that knowledge being smeared across a string-switch dispatcher. The MethodCatalog is the registry the dispatcher in probability_evaluate.cpp consults: a named request resolves through byName(); the default (empty-method) request runs chooseAndRun(), which runs the independent -> inversion-free -> compilation ladder as the Exact-tolerance instance of the chooser.

This header carries only the public interface. The concrete method classes, the EvalContext that threads the per-evaluation circuit state, and the catalog registration all live in probability_evaluate.cpp, where the file-local evaluation helpers they need are in scope.

The design (the method-catalog / three-path chooser) is documented at length in doc/source/dev/probability-evaluation.rst.

Definition in file ProbabilityMethod.h.