{-# OPTIONS --prop --without-K --rewriting #-}
module Calf.Types.Product where
open import Calf.Prelude
open import Calf.Metalanguage
open import Relation.Binary.PropositionalEquality using (_≡_)
open import Data.Product using (_×_; _,_; proj₁; proj₂) public
postulate
prod⁺ : tp pos → tp pos → tp pos
prod⁺/decode : {A B : tp pos} → val (prod⁺ A B) ≡ (val A × val B)
{-# REWRITE prod⁺/decode #-}
postulate
prod⁻ : tp neg → tp neg → tp neg
prod⁻/decode : {X Y : tp neg} → val (U (prod⁻ X Y)) ≡ (cmp X × cmp Y)
{-# REWRITE prod⁻/decode #-}