\set ECHO none add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) node|min_cost 1|0 2|0 3|5 (3 rows) add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) node|min_cost_2hops 1|0 2|1 3|2 5|10 (4 rows) remove_provenance (1 row) add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) node|prob|min_cost|root_type 1|1.000000|0|plus 2|0.500000|3|plus 3|0.250000|7|assumed (3 rows) remove_provenance (1 row) add_provenance (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) region|min_cost|prob|certified A|2|0.750000|1 B|6|0.437500|1 (2 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) add_provenance (1 row) create_provenance_mapping (1 row) create_provenance_mapping (1 row) create_provenance_mapping (1 row) remove_provenance (1 row) node|most_reliable|widest|fuzzy|valid 4|0.720000|medium|0.700000|{["2020-02-01 00:00:00+00","2020-03-01 00:00:00+00"),["2020-05-01 00:00:00+00","2020-10-01 00:00:00+00")} 5|0.720000|medium|0.700000|{["2020-02-01 00:00:00+00","2020-03-01 00:00:00+00"),["2020-05-01 00:00:00+00","2020-10-01 00:00:00+00")} (2 rows)