Boolean rings #
A Boolean ring is a ring where multiplication is idempotent. They are equivalent to Boolean algebras.
Main declarations #
BooleanRing: a typeclass for rings where multiplication is idempotent.BooleanRing.toBooleanAlgebra: Turn a Boolean ring into a Boolean algebra.BooleanAlgebra.toBooleanRing: Turn a Boolean algebra into a Boolean ring.AsBoolAlg: Type-synonym for the Boolean algebra associated to a Boolean ring.AsBoolRing: Type-synonym for the Boolean ring associated to a Boolean algebra.
Implementation notes #
We provide two ways of turning a Boolean algebra/ring into a Boolean ring/algebra:
- Instances on the same type accessible in locales
BooleanAlgebraOfBooleanRingandBooleanRingOfBooleanAlgebra. - Type-synonyms
AsBoolAlgandAsBoolRing.
At this point in time, it is not clear the first way is useful, but we keep it for educational
purposes and because it is easier than dealing with
ofBoolAlg/toBoolAlg/ofBoolRing/toBoolRing explicitly.
Tags #
boolean ring, boolean algebra
Equations
- BooleanRing.toCommRing = { toRing := inferInstance.toRing, mul_comm := ⋯ }
Equations
- instBooleanRingPUnit = { toRing := PUnit.commRing.toRing, isIdempotentElem := instBooleanRingPUnit._proof_1 }
Turning a Boolean ring into a Boolean algebra #
Equations
- instInhabitedAsBoolAlg = inst✝
The join operation in a Boolean ring is x + y + x * y.
Instances For
The meet operation in a Boolean ring is x * y.
Equations
- BooleanRing.inf = { min := fun (x1 x2 : α) => x1 * x2 }
Instances For
The Boolean algebra structure on a Boolean ring.
The data is defined so that:
a ⊔ bunfolds toa + b + a * ba ⊓ bunfolds toa * ba ≤ bunfolds toa + b + a * b = b⊥unfolds to0⊤unfolds to1aᶜunfolds to1 + aa \ bunfolds toa * (1 + b)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Turn a ring homomorphism from Boolean rings α to β into a bounded lattice homomorphism
from α to β considered as Boolean algebras.
Equations
Instances For
Turning a Boolean algebra into a Boolean ring #
Equations
- instInhabitedAsBoolRing = inst✝
Every generalized Boolean algebra has the structure of a non unital commutative ring with the following data:
a + bunfolds toa ∆ b(symmetric difference)a * bunfolds toa ⊓ b-aunfolds toa0unfolds to⊥
Equations
- One or more equations did not get rendered due to their size.
Instances For
Every Boolean algebra has the structure of a Boolean ring with the following data:
a + bunfolds toa ∆ b(symmetric difference)a * bunfolds toa ⊓ b-aunfolds toa0unfolds to⊥1unfolds to⊤
Equations
- One or more equations did not get rendered due to their size.
Instances For
Turn a bounded lattice homomorphism from Boolean algebras α to β into a ring homomorphism
from α to β considered as Boolean rings.
Equations
- f.asBoolRing = { toFun := ⇑toBoolRing ∘ ⇑f ∘ ⇑ofBoolRing, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equivalence between Boolean rings and Boolean algebras #
Order isomorphism between α considered as a Boolean ring considered as a Boolean algebra and
α.
Equations
- OrderIso.asBoolAlgAsBoolRing α = { toEquiv := ofBoolAlg.trans ofBoolRing, map_rel_iff' := ⋯ }
Instances For
Ring isomorphism between α considered as a Boolean algebra considered as a Boolean ring and
α.
Equations
- RingEquiv.asBoolRingAsBoolAlg α = { toEquiv := ofBoolRing.trans ofBoolAlg, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Equations
- One or more equations did not get rendered due to their size.