Which-provenance m-semiring (lineage) #
This file defines the Which (or lineage) provenance semiring Which α.
Elements are either a finite set wset s representing the witnesses or wbot
(bottom). Addition takes the union of witness sets, and multiplication does likewise.
Which α is idempotent. It is absorptive if and only if α is empty. It does
not satisfy left-distributivity of multiplication over monus when α is nonempty.
The lineage semiring is discussed in Green & Tannen, The Semiring Framework for Database Provenance.
References #
Equations
- instZeroWhich = { zero := Which.wbot }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- instOneWhich = { one := Which.wset ∅ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- instPartialOrderWhich = { toLE := instLEWhich, lt := fun (a b : Which α) => a ≤ b ∧ ¬b ≤ a, le_refl := ⋯, le_trans := ⋯, lt_iff_le_not_ge := ⋯, le_antisymm := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- instCommSemiringWithMonusWhich = { toSemiringWithMonus := instSemiringWithMonusWhich, mul_comm := ⋯ }
Which[X] is not absorptive as long as there is at least one variable
Which[∅] is absorptive
In Which[X], as long as X is non-empty, times is not distributive over monus.
There is no semiring homomorphism from BoolFunc Y to Which α (with α
inhabited) sending the variables to arbitrary values: Which α is not
absorptive (Which.not_absorptive), which contradicts var i + 1 = 1 in
BoolFunc Y.