![]() |
ProvSQL C/C++ API
Adding support for provenance and uncertainty management to PostgreSQL databases
|
Provenance-as-Boolean-circuit semiring. More...
#include "BoolExpr.h"


Public Member Functions | |
| BoolExpr (BooleanCircuit &bc) | |
| Construct a BoolExpr semiring over the given circuit. | |
| value_type | zero () const override |
| Return the additive identity \(\mathbb{0}\). | |
| value_type | one () const override |
| Return the multiplicative identity \(\mathbb{1}\). | |
| value_type | plus (const std::vector< value_type > &vec) const override |
| Apply the additive operation to a list of values. | |
| value_type | times (const std::vector< value_type > &vec) const override |
| Apply the multiplicative operation to a list of values. | |
| virtual value_type | monus (value_type x, value_type y) const override |
| Apply the monus (m-semiring difference) operation. | |
| value_type | delta (value_type x) const override |
| Apply the \(\delta\) operator. | |
| virtual bool | absorptive () const override |
Return true if this semiring is absorptive ( \(a \oplus a = a\)). | |
Public Member Functions inherited from semiring::Semiring< gate_t > | |
| virtual value_type | cmp (value_type s1, ComparisonOperator op, value_type s2) const |
| Evaluate a comparison gate. | |
| virtual value_type | semimod (value_type x, value_type s) const |
| Apply a semimodule scalar multiplication. | |
| virtual value_type | agg (AggregationOperator op, const std::vector< value_type > &s) |
| Evaluate an aggregation gate. | |
| virtual value_type | value (const std::string &s) const |
| Interpret a literal string as a semiring value. | |
| virtual | ~Semiring ()=default |
Private Types | |
| using | value_t = gate_t |
| Carrier type: a gate ID in the target BooleanCircuit. | |
Private Attributes | |
| BooleanCircuit & | c |
| The Boolean circuit being constructed. | |
| const gate_t | ZERO |
| Pre-allocated zero gate (OR with no children) | |
| const gate_t | ONE |
| Pre-allocated one gate (AND with no children) | |
Additional Inherited Members | |
Public Types inherited from semiring::Semiring< gate_t > | |
| typedef gate_t | value_type |
| The carrier type of this semiring. | |
Provenance-as-Boolean-circuit semiring.
The carrier type is gate_t (a gate identifier in BooleanCircuit). Evaluating the provenance circuit over this semiring constructs a new Boolean circuit expressing the provenance formula.
Definition at line 42 of file BoolExpr.h.
|
private |
Carrier type: a gate ID in the target BooleanCircuit.
Definition at line 43 of file BoolExpr.h.
|
inline |
Construct a BoolExpr semiring over the given circuit.
| bc | The Boolean circuit in which semiring operations create new gates. |
Definition at line 54 of file BoolExpr.h.
|
inlineoverridevirtual |
Return true if this semiring is absorptive ( \(a \oplus a = a\)).
When true, the circuit evaluator may deduplicate the children of plus gates, which can improve performance significantly for semirings such as Boolean and Why-provenance.
false by default; override to return true. Reimplemented from semiring::Semiring< gate_t >.
Definition at line 115 of file BoolExpr.h.
|
inlineoverridevirtual |
Apply the \(\delta\) operator.
| x | Input value. |
Implements semiring::Semiring< gate_t >.
Definition at line 111 of file BoolExpr.h.
|
inlineoverridevirtual |
Apply the monus (m-semiring difference) operation.
| x | Minuend. |
| y | Subtrahend. |
Implements semiring::Semiring< gate_t >.
Definition at line 97 of file BoolExpr.h.

|
inlineoverridevirtual |
Return the multiplicative identity \(\mathbb{1}\).
Implements semiring::Semiring< gate_t >.
Definition at line 61 of file BoolExpr.h.
|
inlineoverridevirtual |
Apply the additive operation to a list of values.
| v | Ordered list of operands (empty list should return zero()). |
Implements semiring::Semiring< gate_t >.
Definition at line 65 of file BoolExpr.h.

|
inlineoverridevirtual |
Apply the multiplicative operation to a list of values.
| v | Ordered list of operands (empty list should return one()). |
Implements semiring::Semiring< gate_t >.
Definition at line 81 of file BoolExpr.h.

|
inlineoverridevirtual |
Return the additive identity \(\mathbb{0}\).
Implements semiring::Semiring< gate_t >.
Definition at line 57 of file BoolExpr.h.
|
private |
The Boolean circuit being constructed.
Definition at line 45 of file BoolExpr.h.
|
private |
Pre-allocated one gate (AND with no children)
Definition at line 47 of file BoolExpr.h.
|
private |
Pre-allocated zero gate (OR with no children)
Definition at line 46 of file BoolExpr.h.