22#ifndef PROVSQL_PROBABILITY_METHOD_H
23#define PROVSQL_PROBABILITY_METHOD_H
97 virtual std::string
name()
const = 0;
201 std::vector<std::unique_ptr<ProbabilityMethod>>
methods_;
gate_t
Strongly-typed gate identifier.
Boolean circuit for provenance formula evaluation.
A d-DNNF circuit supporting exact probabilistic and game-theoretic evaluation.
Registry of ProbabilityMethod objects.
const ProbabilityMethod * byName(const std::string &name) const
Exact match on name(); nullptr if absent.
std::vector< std::unique_ptr< ProbabilityMethod > > methods_
double chooseAndRun(EvalContext &ctx, const Tolerance &tol) const
Run the auto-chooser for tol: the portfolio methods admissible for the tolerance and applicable,...
void registerMethod(std::unique_ptr< ProbabilityMethod > m)
static const MethodCatalog & instance()
The process-wide catalog, lazily populated with the built-in methods.
dDNNF chooseAndBuildDD(EvalContext &ctx, const Tolerance &tol) const
The d-DNNF analogue of chooseAndRun: cost-select among the producesDD() portfolio (interpret-as-dd / ...
Strategy interface: one concrete subclass per probability method.
virtual dDNNF buildDD(EvalContext &ctx) const
Build the d-DNNF this method constructs (only when producesDD()).
virtual double estimatedCost(const EvalContext &, const Tolerance &) const
Heuristic estimate of this method's cost on the current circuit (lower is cheaper).
virtual bool inDefaultChain() const
True iff this method participates in the auto-chooser's portfolio (vs being reachable only byName).
virtual ~ProbabilityMethod()=default
virtual bool applicable(const EvalContext &, const Tolerance &) const
Cheap admissibility check for the portfolio (e.g.
virtual bool isDeterministic() const
True iff the method's guarantee holds with CERTAINTY (no failure probability).
virtual ToleranceKind guaranteeKind() const =0
Which user-facing path this method can serve.
virtual double evaluate(EvalContext &ctx, const Tolerance &tol) const =0
Run the method, returning the probability.
virtual std::vector< Feature > requiredFeatures() const
Features the method's estimatedCost / applicable need acquired before they are meaningful (empty = a ...
virtual bool producesDD() const
True iff this method constructs a d-DNNF artifact (and so can serve the makeDD route-chooser via buil...
virtual bool handlesMultivalued() const
True iff the method evaluates the raw circuit, including multivalued (BID / gate_mulinput) gates,...
virtual std::string name() const =0
Stable identifier used for byName lookup and the provsql.last_eval_method report.
Feature
A circuit feature a method's cost/applicability estimate depends on, but that is not free to acquire.
ToleranceKind
The contract the user grants – the "path".
dDNNF 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 ma...
Per-evaluation circuit state threaded to a method's evaluate().