{-# OPTIONS --without-K #-}
module hott.equivalence.logical where

open import sum
open import function.isomorphism.core
open import hott.level.core

_↔_ : ∀ {i j} → Set i → Set j → Set _
X ↔ Y = (X → Y) × (Y → X)

module _ {i j}{X : Set i}{Y : Set j} where
  ≅⇒↔ : X ≅ Y → X ↔ Y
  ≅⇒↔ φ = to , from
    where open _≅_ φ

  ↔⇒≅ : h 1 X → h 1 Y → X ↔ Y → X ≅ Y
  ↔⇒≅ hX hY (f , g) = iso f g (λ x → h1⇒prop hX _ x) (λ y → h1⇒prop hY _ y)