module Implicit.Algo.Properties.Subst where

open import Implicit.Language.All
open import Implicit.Algo.Base

↑tyᶜ-st-eq :
    Σ ↑tyᶜ k  Σ'
    k / T ⟧ᶜ Σ'  Σ*
   Σ  Σ*
↑tyᶜ-st-eq ↑tyᶜ-□ empty = refl
↑tyᶜ-st-eq (↑tyᶜ-τ x) (fulltype st) rewrite ↑ty-st-eq x st = refl
↑tyᶜ-st-eq (↑tyᶜ-e up-e up-c) (term st-c st-e) rewrite ↑tyᶜ-st-eq up-c st-c | ↑tyᵉ-st-eq up-e st-e = refl

↑tyᶜ-st :
    Σ ↑tyᶜ k  Σ'
    k / T ⟧ᶜ Σ'  Σ
↑tyᶜ-st ↑tyᶜ-□ = empty
↑tyᶜ-st (↑tyᶜ-τ up-t) = fulltype (↑ty-st up-t)
↑tyᶜ-st (↑tyᶜ-e up-e up) = term (↑tyᶜ-st up) (↑tyᵉ-st up-e)