{-# OPTIONS --rewriting #-}
open import Agda.Primitive using (Level;lsuc;_⊔_;lzero)
open import Lib
open import Interval
open import Proposition
open import Cofibs
open import Kan
open import Equiv
open import Path
open import Equiv
open import universe.Universe
module universe.Case where
El-case : {@♭ l' l : Level} {α : Set} {β : Set}
→ (A : α → U {l'})
→ (B : β → U {l'})
→ (AB : (pα : α) → (pβ : β) → A pα == B pβ)
→ (pab : α ∨ β)
→ El (case A B AB pab) == case (El o A) (El o B) (\ a b → ap El (AB a b)) pab
El-case A B AB = ∨-elim _ (\ _ → id) (\ _ → id) (\ _ _ → uip)
comCase : {@♭ l' l : Level} {Γ : Set l} {α : Γ → Set} {β : Γ → Set}
→ (pab : (x : Γ) → α x ∨ β x)
→ (A : (x : Γ) → α x → U {l'})
→ (B : (x : Γ) → β x → U {l'})
→ (AB : (x : Γ) → (pα : α x) → (pβ : β x) → A x pα == B x pβ)
→ relCom {Γ = Γ} (\ x → El (case (A x) (B x) (AB x) (pab x) ))
comCase pab A B AB = comPre (\ x → case (A x) (B x) (AB x) (pab x) ) El comEl