module Prelude.Equality.Unsafe where
open import Prelude.Equality
open import Prelude.Empty
open import Prelude.Erased
private primitive primTrustMe : ∀ {a} {A : Set a} {x y : A} → x ≡ y
unsafeEqual : ∀ {a} {A : Set a} {x y : A} → x ≡ y
unsafeEqual = primTrustMe
{-# DISPLAY primTrustMe = [erased] #-}
unsafeNotEqual : ∀ {a} {A : Set a} {x y : A} → ¬ (x ≡ y)
unsafeNotEqual _ = erase-⊥ trustme
where postulate trustme : ⊥
eraseEquality : ∀ {a} {A : Set a} {x y : A} → x ≡ y → x ≡ y
eraseEquality _ = unsafeEqual
unsafeCoerce : ∀ {a} {A : Set a} {B : Set a} → A → B
unsafeCoerce {A = A} {B} x with unsafeEqual {x = A} {y = B}
unsafeCoerce x | refl = x