A software package for the Julia programming language implementing the simplest non-trivial Boolean algebra, the two-element Boolean algebra.
The only public binding is the type, Boole. It is different from Bool in that one(Boole) + one(Boole) equals one instead of two.
julia> using TwoElementBooleanAlgebra
julia> Boole(0)
Boole(0)
julia> Boole(0) + Boole(0)
Boole(0)
julia> Boole(0) + Boole(1)
Boole(1)
julia> Boole(1) + Boole(1)
Boole(1)
julia> Boole(0) * Boole(1)
Boole(0)
julia> !Boole(0)
Boole(1)A logical array represents a mathematical relation. Specifically, an X::AbstractMatrix{Boole} represents a binary relation. Then:
-
matrix addition (
X + Y) corresponds to relation union -
pointwise multiplication (
X .* Y) of matrices corresponds to relation intersection -
matrix multiplication (
X * Y) corresponds to relation composition -
matrix transpose (
transpose(X)) or adjoint (adjoint(X)orX') results in the converse relation -
pointwise negation (
(!).(X)) results in the complementary relation -
pointwise partial order (
all(splat(≤), zip(X, Y))) corresponds to the subset/inclusion predicate