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 }
Dependency graph
Equations
- instAddBool_provenance = { add := or }
Dependency graph
Equations
- instOneBool_provenance = { one := true }
Dependency graph
Equations
- instMulBool_provenance = { mul := and }
Dependency graph
Dependency graph
Equations
- One or more equations did not get rendered due to their size.
Dependency graph
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.
Dependency graph
On 𝔹 the identity is an admissible δ, so it is the one used – the
positive half of the choice recorded by the not_isDelta_id theorems of the
indicator semirings.
Dependency graph
Equations
- instCommSemiringWithMonusBool = { toSemiringWithMonus := instSemiringWithMonusBool, mul_comm := instCommSemiringWithMonusBool._proof_1 }
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Bool has characteristic 0 in the CharP sense: it is idempotent and nontrivial
(true ≠ false), so every positive natural-number cast equals 1 = true. It is not
CharZero since the cast ℕ → Bool is not injective.
Dependency graph
Injective m-semiring homomorphism from Bool to Bool[X]
Dependency graph
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.