------------------------------------------------------------------------
-- Disjoint sum type; also used as logical disjunction.
------------------------------------------------------------------------
module Tools.Sum where
open import Data.Sum.Base public using (_⊎_; inj₁; inj₂; map; [_,_])
open import Relation.Nullary.Decidable public
using (_⊎-dec_)
-- Idempotency.
idem : ∀ {a} {A : Set a} → A ⊎ A → A
idem (inj₁ x) = x
idem (inj₂ x) = x
-- Commutativity.
comm : ∀ {a b} {A : Set a} {B : Set b} → A ⊎ B → B ⊎ A
comm (inj₁ x) = inj₂ x
comm (inj₂ x) = inj₁ x