{-# OPTIONS
  --without-K
  --prop
  --rewriting
  --confluence-check
  --postfix-projections
#-}

module TT.CwF.Standard where

open import TT.Lib
open import TT.IRUniv
open import TT.CwF.Ind

open DM
open DModel

opaque
  unfolding coe

  M : DModel
  M .sorts .Conᴹ _ = 
  M .sorts .Subᴹ Δ Γ _ = Elω Δ  Elω Γ
  M .sorts .Tyᴹ Γ i _ = Elω Γ  U i
  M .sorts .Tmᴹ Γ A _ = (γ : Elω Γ)  El (A γ)

  M .core ._∘ᴹ_ γ δ θ = γ (δ θ)
  M .core .assocᴹ = refl

  M .core .idᴹ γ = γ
  M .core .idrᴹ = refl
  M .core .idlᴹ = refl

  M .core ._[_]ᵀᴹ A γ δ = A (γ δ)
  M .core .[]ᵀ-∘ᴹ = refl
  M .core .[]ᵀ-idᴹ = refl

  M .core ._[_]ᵗᴹ a γ δ = a (γ δ)
  M .core .[]ᵗ-∘ᴹ = refl
  M .core .[]ᵗ-idᴹ = refl

  M .core .◇ᴹ = `⊤
  M .core .εᴹ γ = 
  M .core .ε-∘ᴹ = refl
  M .core .◇-ηᴹ = refl

  M .core ._▹ᴹ_ Γ A =  Γ λ γ  base (`Lift (A γ))
  M .core .pᴹ (γ ,, a) = γ
  M .core .qᴹ (γ ,, a) = a

  M .core ._,ᴹ_ γ a δ = γ δ ,, a δ
  M .core .,-∘ᴹ = refl

  M .core .▹-β₁ᴹ = refl
  M .core .▹-β₂ᴹ = refl
  M .core .▹-ηᴹ = refl

  M .types .Uᴹ i γ = base `U
  M .types .U-[]ᴹ = refl

  M .types .Elᴹ A γ = A γ
  M .types .El-[]ᴹ = refl

  M .types .cᴹ A γ = A γ
  M .types .c-[]ᴹ = refl

  M .types .U-βᴹ = refl
  M .types .U-ηᴹ = refl

  M .types .Liftᴹ A γ = base (`Lift (A γ))
  M .types .Lift-[]ᴹ = refl

  M .types .lowerᴹ A γ = A γ
  M .types .lower-[]ᴹ = refl

  M .types .liftᴹ A γ = A γ
  M .types .lift-[]ᴹ = refl

  M .types .Lift-βᴹ = refl
  M .types .Lift-ηᴹ = refl

  M .types .Πᴹ A B γ =  (A γ) λ a  B (γ ,, a)
  M .types .Π-[]ᴹ = refl

  M .types .appᴹ f a γ = f γ (a γ)
  M .types .app-[]ᴹ = refl

  M .types .lamᴹ b γ a = b (γ ,, a)
  M .types .lam-[]ᴹ = refl

  M .types .Π-βᴹ = refl
  M .types .Π-ηᴹ = refl