\set ECHO none add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) node|root_type|assumption|prob|min_cost 1|assumed|absorptive|1.000000|0 2|assumed|absorptive|0.500000|3 3|assumed|absorptive|0.250000|7 4|assumed|absorptive|0.125000|12 (4 rows) remove_provenance (1 row) ERROR: ProvSQL: provenance_evaluate_compiled: The requested semiring is not absorptive; the wrapped sub-circuit only represents the absorptive quotient of a recursive query's provenance (fixpoint truncation or compiled reachability circuit), so its value is only defined for absorptive semirings (probability, boolean, nonnegative tropical, ...) and for formula, which renders it as it is. Counting and why-provenance of such a recursion are genuinely infinite: a tuple derived through itself gains a derivation per round, which cyclic data does and so does a null-padded row that re-derives itself or a projection onto constants, on acyclic data. CONTEXT: PL/pgSQL function sr_counting(anyelement,regclass) line 3 at RETURN ERROR: ProvSQL: provenance_evaluate_compiled: The requested semiring is not absorptive; the wrapped sub-circuit only represents the absorptive quotient of a recursive query's provenance (fixpoint truncation or compiled reachability circuit), so its value is only defined for absorptive semirings (probability, boolean, nonnegative tropical, ...) and for formula, which renders it as it is. Counting and why-provenance of such a recursion are genuinely infinite: a tuple derived through itself gains a derivation per round, which cyclic data does and so does a null-padded row that re-derives itself or a projection onto constants, on acyclic data. CONTEXT: PL/pgSQL function sr_tropical(anyelement,regclass,boolean) line 3 at RETURN formula_renders t (1 row) add_provenance (1 row) create_provenance_mapping (1 row) ERROR: ProvSQL: provenance_evaluate_compiled: the nonnegative tropical semiring requires nonnegative costs (use sr_tropical without nonnegative => true for arbitrary costs, on acyclic provenance only) CONTEXT: PL/pgSQL function sr_tropical(anyelement,regclass,boolean) line 3 at RETURN add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) node|root_type|min_cost 1|assumed|0 2|assumed|1 3|assumed|1 (3 rows) ERROR: ProvSQL: provenance_evaluate_compiled: The requested semiring is not absorptive; the wrapped sub-circuit only represents the absorptive quotient of a recursive query's provenance (fixpoint truncation or compiled reachability circuit), so its value is only defined for absorptive semirings (probability, boolean, nonnegative tropical, ...) and for formula, which renders it as it is. Counting and why-provenance of such a recursion are genuinely infinite: a tuple derived through itself gains a derivation per round, which cyclic data does and so does a null-padded row that re-derives itself or a projection onto constants, on acyclic data. CONTEXT: PL/pgSQL function sr_counting(anyelement,regclass) line 3 at RETURN remove_provenance (1 row) node|root_type|nb_derivations 1|one|1 2|input|1 3|plus|2 (3 rows) add_provenance (1 row) add_provenance (1 row) create_provenance_mapping (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) x|cnt 1|22 (1 row) remove_provenance (1 row) x|min_cost 1|2 (1 row) ERROR: ProvSQL: provenance_evaluate_compiled: The requested semiring is not absorptive; this gate's wires were rewritten under an absorptive rule (plus-idempotence, plus-with-one absorber or plus-absorbs-times, applied under the 'absorptive' or 'boolean' provenance class) and the evaluation is unsound under this semiring. Re-run under the 'semiring' provenance class, or pick an absorptive semiring (probability, boolean, nonnegative tropical, ...). CONTEXT: PL/pgSQL function sr_counting(anyelement,regclass) line 3 at RETURN remove_provenance (1 row) add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) n|root_type|prob 2|input|0.500000 3|times|0.250000 |fixpoint|0.500000 (3 rows) NOTICE: n=2: 1 derivation(s) NOTICE: n=3: 1 derivation(s) NOTICE: n=NULL: count refused remove_provenance (1 row) n|root_type|prob 2|input|0.500000 3|times|0.250000 |fixpoint|0.500000 (3 rows) remove_provenance (1 row) add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) a|b|prob|min_cost 1|1|0.250000|7 1|2|0.500000|3 2|1|0.500000|4 2|2|0.250000|7 (4 rows) remove_provenance (1 row)