{-# OPTIONS --safe #-}

module Cubical.Algebra.BooleanRing.Instances.Bool where

open import Cubical.Foundations.Prelude
open import Cubical.Algebra.BooleanRing.Base
open import Cubical.Data.Bool renaming (elim to bool-ind)
open import Cubical.Algebra.CommRing

open BooleanRingStr
open IsBooleanRing

BoolBRStr : BooleanRingStr Bool
𝟘 BoolBRStr   = false
𝟙 BoolBRStr   = true
_+_ BoolBRStr = _⊕_
_·_ BoolBRStr = _and_
- BoolBRStr   = λ x  x
isCommRing (isBooleanRing BoolBRStr) = makeIsCommRing
  isSetBool ⊕-assoc ⊕-identityʳ
  (bool-ind refl refl) ⊕-comm and-assoc
  and-identityʳ (bool-ind  _ _  refl)
   _ _  refl)) and-comm
·Idem (isBooleanRing BoolBRStr) = bool-ind refl refl

BoolBR : BooleanRing ℓ-zero
BoolBR = Bool , BoolBRStr