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

open import Util.HoTT.Equiv
open import Util.HoTT.Equiv.Induction
open import Util.HoTT.Univalence.Axiom
open import Util.Prelude
open import Util.Relation.Binary.PropositionalEquality using
  ( Σ-≡⁻ ; cast )


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


≃→≡-β : ≃→≡ (≃-refl {A = A})  refl
≃→≡-β = ≃→≡∘≡→≃ refl


cast-≃→≡ :  (A≃B : A  B) {x}
   cast (≃→≡ A≃B) x  A≃B .forth x
cast-≃→≡ A≃B {x}
  = J-≃  A B A≃B   x  cast (≃→≡ A≃B) x  A≃B .forth x)
       A x  subst  p  cast p x  x) (sym ≃→≡-β) refl) A≃B x


cast-≅→≡ :  (A≅B : A  B) {x}
   cast (≅→≡ A≅B) x  A≅B .forth x
cast-≅→≡ = cast-≃→≡  ≅→≃