{-# OPTIONS --cubical --safe #-} module Data.Sigma.Unique where open import Data.Sigma.Base open import Level open import Path ∃! : ∀ {a b} {A : Type a} → (A → Type b) → Type (a ℓ⊔ b) ∃! B = ∃ x × B x × (∀ {y} → B y → x ≡ y) infixr 4.5 ∃!-syntax ∃!-syntax : ∀ {a b} {A : Type a} (B : A → Type b) → Type (a ℓ⊔ b) ∃!-syntax = ∃! syntax ∃!-syntax (λ x → e) = ∃ x ! × e