{-# OPTIONS --without-K --safe #-} module Util.HoTT.Equiv.Core where open import Util.Prelude open import Util.HoTT.HLevel.Core infix 4 _≅_ _≃_ private variable α β γ : Level A B C : Set α Injective : (f : A → B) → Set _ Injective f = ∀ {x y} → f x ≡ f y → x ≡ y record IsIso {A : Set α} {B : Set β} (forth : A → B) : Set (α ⊔ℓ β) where field back : B → A back∘forth : ∀ x → back (forth x) ≡ x forth∘back : ∀ x → forth (back x) ≡ x record _≅_ (A : Set α) (B : Set β) : Set (α ⊔ℓ β) where field forth : A → B isIso : IsIso forth open IsIso isIso public open _≅_ public IsEquiv : {A : Set α} {B : Set β} (forth : A → B) → Set (α ⊔ℓ β) IsEquiv {A = A} {B} forth = ∀ b → IsContr (Σ[ a ∈ A ] forth a ≡ b) record _≃_ (A : Set α) (B : Set β) : Set (α ⊔ℓ β) where field forth : A → B isEquiv : IsEquiv forth open _≃_ public