{-# OPTIONS --cubical-compatible --safe #-}
open import Algebra.Bundles
using (CommutativeRing; BooleanSemiring; BooleanRing)
module Algebra.Properties.BooleanRing
{c ℓ} (booleanRing : BooleanRing c ℓ) where
open import Function.Base using (_∘_)
open import Data.Product.Base using (_,_)
open BooleanRing booleanRing
open import Algebra.Structures _≈_
using (IsBooleanSemiring)
open import Relation.Binary.Reasoning.Setoid setoid
open import Algebra.Properties.CommutativeRing commutativeRing public
isBooleanSemiring : IsBooleanSemiring _+_ _*_ 0# 1#
isBooleanSemiring = record
{ isSemiring = isSemiring
; +-cancel = +-cancel
; *-idem = *-idem
}
open IsBooleanSemiring isBooleanSemiring public
using (*-isIdempotentMonoid)
booleanSemiring : BooleanSemiring _ _
booleanSemiring = record { isBooleanSemiring = isBooleanSemiring }
open BooleanSemiring booleanSemiring public
using (*-idempotentMonoid)
open import Algebra.Properties.BooleanSemiring booleanSemiring public
hiding (isBooleanRing; booleanRing)
-x≈x : ∀ x → - x ≈ x
-x≈x = x+y≈0⇒y≈x ∘ -‿inverseʳ