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

module Core where

open import Level
open import Data.Nat
open import Data.List

variable a b c′ i o j  ℓ′ : Level 
         A : Set a
         B : Set b
         C : Set c′
         I : Set i
         O : Set o 
         J : Set j 
         P Q : A  Set 
         n m k : 

Pred : (A : Set )  Set (Level.suc )
Pred {} A = A  Set 

Ctx = List


module _ (T : Set) where

  data Cell : Set where
    value   : (s   : T)  Cell
    closure : (s t : T)  Cell

  Sto : Set
  Sto = List Cell 

  open import Data.List.Relation.Unary.All

  Env :  {I}  (T  Pred {0ℓ} I)  Ctx T  Pred I
  Env V Γ Σ = All  t  V t Σ) Γ

  
open import Box public
open import Data.List.Relation.Binary.Sublist.Propositional

instance sto-rel :  {A : Set}  Rel₂ _ (Sto A)
Rel₂.R sto-rel     = _⊆_
Rel₂.refl sto-rel  = ⊆-refl
Rel₂.trans sto-rel = ⊆-trans