ProvSQL C/C++ API
Adding support for provenance and uncertainty management to PostgreSQL databases
Loading...
Searching...
No Matches
semiring::Boolean Class Reference

The Boolean semiring over bool. More...

#include "Boolean.h"

Inheritance diagram for semiring::Boolean:
Collaboration diagram for semiring::Boolean:

Public Member Functions

virtual value_type zero () const override
 Return the additive identity \(\mathbb{0}\).
virtual value_type one () const override
 Return the multiplicative identity \(\mathbb{1}\).
virtual value_type plus (const std::vector< value_type > &v) const override
 Apply the additive operation to a list of values.
virtual value_type times (const std::vector< value_type > &v) 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.
virtual value_type delta (value_type x) const override
 Apply the \(\delta\) operator.
virtual bool absorptive () const override
 Return true if this semiring is absorptive ( \(\mathbb{1} \oplus a = \mathbb{1}\) for all \(a\)).
virtual bool compatibleWithBooleanRewrite () const override
 The identity map BoolFunc(X) →+* Bool (evaluating a free Boolean function at a valuation) is an m-semiring homomorphism, so the safe-query Boolean rewrite preserves evaluation results in this semiring.
value_type parse_leaf (const char *v) const
Public Member Functions inherited from semiring::Semiring< bool >
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

Additional Inherited Members

Public Types inherited from semiring::Semiring< bool >
typedef bool value_type
 The carrier type of this semiring.

Detailed Description

The Boolean semiring over bool.

Provides the standard Boolean interpretation of provenance circuits.

Definition at line 40 of file Boolean.h.

Member Function Documentation

◆ absorptive()

virtual bool semiring::Boolean::absorptive ( ) const
inlineoverridevirtual

Return true if this semiring is absorptive ( \(\mathbb{1} \oplus a = \mathbb{1}\) for all \(a\)).

When true, the circuit evaluator and HAVING-semantics machinery may exploit the resulting idempotency ( \(a \oplus a = a\), implied by absorptivity) to deduplicate children of plus gates and to short-circuit over the multiplicative identity.

Returns
false by default; override to return true.

Reimplemented from semiring::Semiring< bool >.

Definition at line 67 of file Boolean.h.

◆ compatibleWithBooleanRewrite()

virtual bool semiring::Boolean::compatibleWithBooleanRewrite ( ) const
inlineoverridevirtual

The identity map BoolFunc(X) →+* Bool (evaluating a free Boolean function at a valuation) is an m-semiring homomorphism, so the safe-query Boolean rewrite preserves evaluation results in this semiring.

Lean: Provenance.Semirings.Bool.homomorphism_to_BoolFunc and Bool.homomorphism_from_BoolFunc (provenance-lean/Provenance/Semirings/Bool.lean).

Reimplemented from semiring::Semiring< bool >.

Definition at line 80 of file Boolean.h.

◆ delta()

virtual value_type semiring::Boolean::delta ( value_type x) const
inlineoverridevirtual

Apply the \(\delta\) operator.

Parameters
xInput value.
Returns
\(\delta(x)\).

Implements semiring::Semiring< bool >.

Definition at line 63 of file Boolean.h.

◆ monus()

virtual value_type semiring::Boolean::monus ( value_type x,
value_type y ) const
inlineoverridevirtual

Apply the monus (m-semiring difference) operation.

Parameters
xMinuend.
ySubtrahend.
Returns
\(x \ominus y\).

Implements semiring::Semiring< bool >.

Definition at line 59 of file Boolean.h.

◆ one()

virtual value_type semiring::Boolean::one ( ) const
inlineoverridevirtual

Return the multiplicative identity \(\mathbb{1}\).

Returns
The one element of the semiring.

Implements semiring::Semiring< bool >.

Definition at line 46 of file Boolean.h.

◆ parse_leaf()

value_type semiring::Boolean::parse_leaf ( const char * v) const
inline

Definition at line 83 of file Boolean.h.

◆ plus()

virtual value_type semiring::Boolean::plus ( const std::vector< value_type > & v) const
inlineoverridevirtual

Apply the additive operation to a list of values.

Parameters
vOrdered list of operands (empty list should return zero()).
Returns
\(v_0 \oplus v_1 \oplus \cdots\).

Implements semiring::Semiring< bool >.

Definition at line 49 of file Boolean.h.

◆ times()

virtual value_type semiring::Boolean::times ( const std::vector< value_type > & v) const
inlineoverridevirtual

Apply the multiplicative operation to a list of values.

Parameters
vOrdered list of operands (empty list should return one()).
Returns
\(v_0 \otimes v_1 \otimes \cdots\).

Implements semiring::Semiring< bool >.

Definition at line 54 of file Boolean.h.

◆ zero()

virtual value_type semiring::Boolean::zero ( ) const
inlineoverridevirtual

Return the additive identity \(\mathbb{0}\).

Returns
The zero element of the semiring.

Implements semiring::Semiring< bool >.

Definition at line 43 of file Boolean.h.


The documentation for this class was generated from the following file:
  • /home/pierre/git/software/provsql/src/semiring/Boolean.h