{-# OPTIONS --without-K --safe #-}

module Categories.Category.Lift.Properties where

open import Level

open import Categories.Category.Core
open import Categories.Category.Equivalence
open import Categories.Category.Lift
open import Categories.NaturalTransformation.NaturalIsomorphism
import Categories.Morphism.Reasoning.Core as MR

unliftF-liftF-weakInverse :  {o  e} o′ ℓ′ e′ (C : Category o  e)  WeakInverse (unliftF o′ ℓ′ e′ C) (liftF o′ ℓ′ e′ C)
unliftF-liftF-weakInverse o′ ℓ′ e′ C = record
  { F∘G≈id = niHelper record
    { η = λ _  id
    ; η⁻¹ = λ _  id
    ; commute = λ f  id-comm-sym
    ; iso = λ _  record
      { isoˡ = identity²
      ; isoʳ = identity²
      }
    }
  ; G∘F≈id = niHelper record
    { η = λ _  lift id
    ; η⁻¹ = λ _  lift id
    ; commute = λ _  lift id-comm-sym
    ; iso = λ _  record
      { isoˡ = lift identity²
      ; isoʳ = lift identity²
      }
    }
  }
  where
    open Category C
    open MR C

liftC-strongEquivalence :  {o  e} o′ ℓ′ e′ (C : Category o  e)  StrongEquivalence (liftC o′ ℓ′ e′ C) C
liftC-strongEquivalence o′ ℓ′ e′ C = record { weak-inverse = unliftF-liftF-weakInverse o′ ℓ′ e′ C }