{-# OPTIONS --without-K #-}
module Util.HoTT.Univalence.Axiom where

open import Util.HoTT.Equiv
open import Util.HoTT.Univalence.Statement
open import Util.Prelude
open import Util.Relation.Binary.PropositionalEquality using (Σ-≡⁻)


private
  variable
    α β γ : Level
    A B C : Set α


postulate
  univalence :  {α}  Univalence α


≃→≡ : A  B  A  B
≃→≡ A≃B = univalence A≃B .proj₁ .proj₁


≡→≃∘≃→≡ : (p : A  B)  ≡→≃ (≃→≡ p)  p
≡→≃∘≃→≡ p = univalence p .proj₁ .proj₂


≃→≡∘≡→≃ : (p : A  B)  ≃→≡ (≡→≃ p)  p
≃→≡∘≡→≃ p = Σ-≡⁻ (univalence (≡→≃ p) .proj₂ (p , refl)) .proj₁


≃→≡-≡→≃-coh : (p : A  B)
   subst  q  ≡→≃ q  ≡→≃ p) (≃→≡∘≡→≃ p) (≡→≃∘≃→≡ (≡→≃ p))  refl
≃→≡-≡→≃-coh p = Σ-≡⁻ (univalence (≡→≃ p) .proj₂ (p , refl)) .proj₂


≅→≡ : A  B  A  B
≅→≡ = ≃→≡  ≅→≃