{-# OPTIONS --cubical --safe #-} module Data.Maybe.Properties where open import Data.Maybe.Base open import Prelude fromMaybe : A → Maybe A → A fromMaybe x = maybe x id just-inj : ∀ {x y : A} → just x ≡ just y → x ≡ y just-inj {x = x} = cong (fromMaybe x) just≢nothing : {x : A} → just x ≢ nothing just≢nothing p = subst (maybe ⊥ (const ⊤)) p tt nothing≢just : {x : A} → nothing ≢ just x nothing≢just p = subst (maybe ⊤ (const ⊥)) p tt discreteMaybe : Discrete A → Discrete (Maybe A) discreteMaybe _≟_ nothing nothing = yes refl discreteMaybe _≟_ nothing (just x) = no nothing≢just discreteMaybe _≟_ (just x) nothing = no just≢nothing discreteMaybe _≟_ (just x) (just y) = ⟦yes cong just ,no just-inj ⟧ (x ≟ y)