module Implicit.Algo.Constructs.Subst where
open import Implicit.Language.All
open import Implicit.Algo.Constructs.Syntax
infix 3 ⟦_/_⟧ᶜ_⇘_
data ⟦_/_⟧ᶜ_⇘_ : Fin (1 + m) → Type m → Context n (1 + m) → Context n m → Set where
empty :
⟦ k / A ⟧ᶜ □ ⇘ (Context n m ∋⦂ □)
fulltype :
(st : ⟦ k / A ⟧ B ⇘ B')
→ ⟦ k / A ⟧ᶜ (τ B) ⇘ (Context n m ∋⦂ (τ B'))
term :
⟦ k / A ⟧ᶜ Σ ⇘ Σ'
→ (ste : ⟦ k / A ⟧ᵉ e ⇘ e')
→ ⟦ k / A ⟧ᶜ ([ e ]↝ Σ) ⇘ (Context n m ∋⦂ ([ e' ]↝ Σ'))
infix 3 ⟦_⟧ᶜ_⇘_
⟦_⟧ᶜ_⇘_ : Type m → Context n (1 + m) → Context n m → Set
⟦_⟧ᶜ_⇘_ = ⟦_/_⟧ᶜ_⇘_ #0