{-# OPTIONS --without-K --safe #-}
open import Prelude
module fil  {o  e} {C : Category o  e} (MC : Monoidal C) where

open Monoidal MC using ()

isFIL : Endofunctor C  Endofunctor C  Set (o    e)
isFIL F G = NaturalTransformation ( ∘F (F  G)) 

record FIL : Set (o    e) where
  constructor FIL[_,_,_]
  field
    F : Endofunctor C
    G : Endofunctor C
    ϕ : isFIL F G

  module F = Functor F
  module G = Functor G

  source = F
  dest = G

open Monoidal MC using (; _⊗₁_; _⊗₀_)
open Category C

record isFIL' (F G : Endofunctor C) : Set (o    e) where
  private
    module F = Functor F
    module G = Functor G
  field
    ϕ :  X Y  (F.₀ X ⊗₀ G.₀ Y)  X ⊗₀ Y
    natural₁ :  {X X' Y}  (f : X  X') 
              (f ⊗₁ id)  ϕ X Y  ϕ X' Y  (F.₁ f ⊗₁ id)
    natural₂ :  {X Y Y'}  (g : Y  Y')  
              (id ⊗₁ g)  ϕ X Y  ϕ X Y'  (id ⊗₁ G.₁ g)