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

module SystemT.Context where

open import Basis

data _^_ (X : Set) : ℕ → Set where
  ⋄ : X ^ 0
  _,_ : {n : ℕ} → X ^ n → X → X ^ (suc n)

_[_] : {X : Set} {n : ℕ} → X ^ n → Fin n → X
(Γ , x) [ zero ] = x
(Γ , x) [ suc i ] = Γ [ i ]

infixl 3 _,_

record Ren {A : Set} {m n} (Γ : A ^ m) (Δ : A ^ n) : Set where
  field
    ap : Fin m → Fin n
    coh : ∀ i → Γ [ i ] ≡ Δ [ ap i ]

ren-extend : ∀ {A : Set} {m n σ} {Γ : A ^ m} {Δ : A ^ n} → Ren Γ Δ → Ren (Γ , σ) (Δ , σ)
Ren.ap (ren-extend ρ) zero = zero
Ren.ap (ren-extend ρ) (suc i) = suc (Ren.ap ρ i)
Ren.coh (ren-extend ρ) zero = refl
Ren.coh (ren-extend ρ) (suc i) = Ren.coh ρ i