Boolean m-semiring #
This file shows that Bool (with || as addition and && as multiplication) is a
commutative m-semiring. It is the simplest m-semiring and serves as the target of the
natural homomorphism from BoolFunc X.
The semiring is absorptive (true || a = true), idempotent, and satisfies
left-distributivity of multiplication over monus.
Equations
- instZeroBool_provenance = { zero := false }
Equations
- instAddBool_provenance = { add := or }
Equations
- instOneBool_provenance = { one := true }
Equations
- instMulBool_provenance = { mul := and }
Equations
- One or more equations did not get rendered due to their size.
The Boolean semiring (Bool, ||, &&) is an m-semiring. The natural order is
the usual Boolean order (false ≤ true), and the monus is a && !b. The δ operator
matches ProvSQL's Boolean::delta: it is the identity.
Equations
- One or more equations did not get rendered due to their size.
Equations
- instCommSemiringWithMonusBool = { toSemiringWithMonus := instSemiringWithMonusBool, mul_comm := instCommSemiringWithMonusBool._proof_1 }
Injective m-semiring homomorphism from Bool to Bool[X]
For any assignment ν : X → Bool of Boolean variables to Booleans, the
evaluation map f ↦ f ν is an m-semiring homomorphism BoolFunc X → Bool
sending each variable BoolFunc.var i to ν i.