{-# OPTIONS --safe --without-K #-}
module Canon.Pair where
open import Data.Product
open import Data.Vec
open import Core
open import Signature
open import Canon
open import Level as L
module PairCanon where
data TPairShape : Set where pair : TPairShape
TPairΣ = TPairShape ▹ λ where pair → 2
pair′ : ⦃ TPairΣ ≼ σ ⦄ → (s t : μ σ) → μ σ
pair′ s t = inject (pair , L.lift (s ∷ t ∷ []))
open Algebra
PairVal : Algebra TPairΣ Set Set
alg PairVal (pair , L.lift (Vs ∷ Vt ∷ [])) = Vs × Vt
pairCanon : Canon
Canon.ty pairCanon = TPairΣ
Canon.val pairCanon = PairVal
open PairCanon public