![]() |
ProvSQL C/C++ API
Adding support for provenance and uncertainty management to PostgreSQL databases
|
How-provenance m-semiring over \(\mathbb{N}[X]\). More...
#include "How.h"


Public Member Functions | |
| 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. | |
| 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 | compatibleWithBooleanRewrite () const override |
No semiring homomorphism BoolFunc(Y) →+* ℕ[X] exists, so the safe-query Boolean rewrite is unsound under how-provenance (which is sensitive to derivation multiplicities and monomial structure that the read-once rewrite collapses). | |
| value_type | parse_leaf (const char *v) const |
| Parse a leaf value into a how-provenance polynomial. | |
| std::string | to_text (const value_type &prov) const |
| Public Member Functions inherited from semiring::Semiring< how_provenance_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 |
| virtual bool | absorptive () const |
Return true if this semiring is absorptive ( \(\mathbb{1} \oplus a = \mathbb{1}\) for all \(a\)). | |
Additional Inherited Members | |
| Public Types inherited from semiring::Semiring< how_provenance_t > | |
| typedef how_provenance_t | value_type |
| The carrier type of this semiring. | |
How-provenance m-semiring over \(\mathbb{N}[X]\).
Each gate evaluates to a how_provenance_t, a polynomial in canonical sum-of-products form. Two semantically-equal polynomials compare equal under std::map's lexicographic equality, so this semiring supports provenance-aware query equivalence.
|
inlineoverridevirtual |
No semiring homomorphism BoolFunc(Y) →+* ℕ[X] exists, so the safe-query Boolean rewrite is unsound under how-provenance (which is sensitive to derivation multiplicities and monomial structure that the read-once rewrite collapses).
Inherits the false default from Semiring; this override exists for documentation.
Lean: Provenance.Semirings.How.no_hom_from_BoolFunc (provenance-lean/Provenance/Semirings/How.lean).
Reimplemented from semiring::Semiring< how_provenance_t >.
|
inlineoverridevirtual |
Apply the \(\delta\) operator.
| x | Input value. |
Implements semiring::Semiring< how_provenance_t >.
Definition at line 124 of file How.h.

|
inlineoverridevirtual |
Apply the monus (m-semiring difference) operation.
| x | Minuend. |
| y | Subtrahend. |
Implements semiring::Semiring< how_provenance_t >.
|
inlineoverridevirtual |
Return the multiplicative identity \(\mathbb{1}\).
Implements semiring::Semiring< how_provenance_t >.
Definition at line 78 of file How.h.

|
inline |
Parse a leaf value into a how-provenance polynomial.
Accepted input formats (round-trip with to_text):
"0" → zero polynomial"Alice" → {Alice} "5" → 5 (polynomial 5⋅1)"2⋅Alice⋅Bob^2" "2⋅Alice⋅Bob^2 + 3⋅Charlie" Variables may contain any character except '⋅', '+', '^'. The " + " separator must use ASCII spaces around the '+'.
|
inlineoverridevirtual |
Apply the additive operation to a list of values.
| v | Ordered list of operands (empty list should return zero()). |
Implements semiring::Semiring< how_provenance_t >.
|
inlineoverridevirtual |
Apply the multiplicative operation to a list of values.
| v | Ordered list of operands (empty list should return one()). |
Implements semiring::Semiring< how_provenance_t >.
Definition at line 92 of file How.h.

|
inline |
|
inlineoverridevirtual |
Return the additive identity \(\mathbb{0}\).
Implements semiring::Semiring< how_provenance_t >.
Definition at line 74 of file How.h.
