Source code on Github{-# OPTIONS --safe #-}
module Prelude.Setoid.Maybe where
open import Prelude.Init; open SetAsType
open import Prelude.Setoid.Core
private variable A : Type ℓ
instance
Setoid-Maybe : ⦃ ISetoid A ⦄ → ISetoid (Maybe A)
Setoid-Maybe .relℓ = _
Setoid-Maybe ._≈_ = λ where
nothing nothing → Lvl.Lift _ ⊤
nothing (just _) → Lvl.Lift _ ⊥
(just _) nothing → Lvl.Lift _ ⊥
(just x) (just y) → x ≈ y
SetoidLaws-Maybe :
⦃ _ : ISetoid A ⦄ ⦃ _ : SetoidLaws A ⦄
→ SetoidLaws (Maybe A)
SetoidLaws-Maybe .isEquivalence = record
{ refl = λ where
{just x} → ≈-refl {x = x}
{nothing} → Lvl.lift tt
; sym = λ where
{just x} {just y} → ≈-sym {x = x}{y}
{just _} {nothing} → id
{nothing} {just _} → id
{nothing} {nothing} → id
; trans = λ where
{just x} {just y} {just z} p q → ≈-trans {i = x}{y}{z} p q
{nothing} {nothing} {nothing} p _ → p
}