{-# OPTIONS --prop --without-K --rewriting #-}

module Calf.Types.Sum where

open import Calf.Prelude
open import Calf.Metalanguage

open import Data.Sum using (_⊎_; inj₁; inj₂) public

sum : tp pos  tp pos  tp pos
sum A B = U (meta (val A  val B))

sum/case :  A B (X : val (sum A B)  tp neg)  (s : val (sum A B))  ((a : val A)  cmp (X (inj₁ a)))  ((b : val B)  cmp (X (inj₂ b)))  cmp (X s)
sum/case A B X (inj₁ x) b₁ _  = b₁ x
sum/case A B X (inj₂ x) _  b₂ = b₂ x