{-# OPTIONS --lossy-unification #-}

module Cubical.Categories.Instances.Free.BiCartesianClosedCategory.Quiver where

open import Cubical.Foundations.Prelude
open import Cubical.Foundations.Function
open import Cubical.Data.Quiver.Base

private variable  ℓ' : Level

module _ (ob : Type ) where
  data BiCCCExpr : Type  where
    ↑_ : ob  BiCCCExpr
    _×_ _+_ _⇒_ : BiCCCExpr  BiCCCExpr  BiCCCExpr
      : BiCCCExpr

record +×⇒Quiver  ℓ' : Type (ℓ-max (ℓ-suc ) (ℓ-suc ℓ')) where
  field
    ob : Type 
    Q : QuiverOver (BiCCCExpr ob) ℓ'
  open QuiverOver Q public
  obExpr : Type 
  obExpr = BiCCCExpr ob
  open BiCCCExpr obExpr public

Quiver→+×⇒Quiver : ∀{ ℓ' : Level}  Quiver  ℓ'  +×⇒Quiver  ℓ'
Quiver→+×⇒Quiver Q .+×⇒Quiver.ob = Q .fst
Quiver→+×⇒Quiver Q .+×⇒Quiver.Q .QuiverOver.mor = Q .snd .QuiverOver.mor
Quiver→+×⇒Quiver Q .+×⇒Quiver.Q .QuiverOver.dom = ↑_ ∘S Q .snd .QuiverOver.dom
Quiver→+×⇒Quiver Q .+×⇒Quiver.Q .QuiverOver.cod = ↑_ ∘S Q .snd .QuiverOver.cod