{-# OPTIONS --safe #-}
module Cubical.Categories.Constructions.TwistedArrow where
open import Cubical.Foundations.HLevels
open import Cubical.Foundations.Prelude
open import Cubical.Categories.Category.Base
open import Cubical.Categories.Functor.Base
open import Cubical.Categories.Constructions.Elements
open Covariant
open import Cubical.Categories.Functors.HomFunctor
open import Cubical.Categories.Constructions.BinProduct
private
variable
ℓ ℓ' : Level
TwistedArrowCategory : (C : Category ℓ ℓ') → Category (ℓ-max ℓ ℓ') ℓ'
TwistedArrowCategory C = ∫ HomFunctor C
TwistedEnds : (C : Category ℓ ℓ') → Functor (TwistedArrowCategory C) (C ^op ×C C)
TwistedEnds C = ForgetElements (HomFunctor C)
TwistedDom : (C : Category ℓ ℓ') → Functor ((TwistedArrowCategory C) ^op) C
TwistedDom C = ((Fst (C ^op) C) ^opF) ∘F (ForgetElements (HomFunctor C) ^opF)
TwistedCod : (C : Category ℓ ℓ') → Functor (TwistedArrowCategory C) C
TwistedCod C = (Snd (C ^op) C) ∘F ForgetElements (HomFunctor C)