{-# OPTIONS --without-K --safe #-}

module Categories.Diagram.Colimit.Lan where

open import Level
open import Categories.Category
open import Categories.Category.Cocomplete
open import Categories.Diagram.Duality
open import Categories.Diagram.Limit.Ran
open import Categories.Functor
open import Categories.Kan
open import Categories.Kan.Duality

private
  variable
    o  e : Level
    C D E : Category o  e

module _ {o  e o′ ℓ′ e′} {C : Category o′ ℓ′ e′} {D : Category o  e}
         (F : Functor C D) (X : Functor C E) (Com : Cocomplete (o′  ) (ℓ′  e) e′ E) where
  private
    module F = Functor F
    module X = Functor X

  colimit-is-lan : Lan F X
  colimit-is-lan = coRan⇒Lan (limit-is-ran F.op X.op λ G  Colimit⇒coLimit E (Com (Functor.op G)))