module Staged.Value.Core where

open import Function

open import Data.Maybe
open import Data.Sum

module _ where

  record _⊂_ (V₁ V₂ : Set) : Set where 
    field injectᵛ  : V₁  V₂
          projectᵛ : V₂  Maybe V₁

  open _⊂_ ⦃...⦄ public 

{-
  instance ⊂-refl : ∀ {V} → V ⊂ V 
  _⊂_.inject  ⊂-refl = id
  _⊂_.project ⊂-refl = just

  instance ⊂-left : ∀ {V₁ V₂} → V₁ ⊂ (V₁ ⊎ V₂)
  _⊂_.inject  ⊂-left = inj₁
  _⊂_.project ⊂-left (inj₁ x) = just x
  _⊂_.project ⊂-left (inj₂ y) = nothing

  instance ⊂-right : ∀ {V₁ V₂ V₃} → ⦃ V₁ ⊂ V₃ ⦄ → V₁ ⊂ (V₂ ⊎ V₃) 
  _⊂_.inject  ⊂-right = inj₂ ∘ inject
  _⊂_.project ⊂-right (inj₁ x) = nothing
  _⊂_.project ⊂-right (inj₂ y) = project y
-}