{-# OPTIONS --without-K --safe #-}
open import Categories.Category
open import Categories.Functor
module Categories.Adjoint.AFT.SolutionSet {o ℓ e o′ ℓ′ e′} {C : Category o ℓ e} {D : Category o′ ℓ′ e′}
(F : Functor C D) where
open import Level
private
module C = Category C
module D = Category D
module F = Functor F
open D
open F
record SolutionSet i : Set (o ⊔ ℓ ⊔ o′ ⊔ ℓ′ ⊔ e′ ⊔ (suc i)) where
field
I : Set i
S : I → C.Obj
S₀ : ∀ {A X} → X ⇒ F₀ A → I
S₁ : ∀ {A X} (f : X ⇒ F₀ A) → S (S₀ f) C.⇒ A
ϕ : ∀ {A X} (f : X ⇒ F₀ A) → X ⇒ F₀ (S (S₀ f))
commute : ∀ {A X} (f : X ⇒ F₀ A) → F₁ (S₁ f) ∘ ϕ f ≈ f
record SolutionSet′ : Set (o ⊔ ℓ ⊔ o′ ⊔ ℓ′ ⊔ e′) where
field
S₀ : ∀ {A X} → X ⇒ F₀ A → C.Obj
S₁ : ∀ {A X} (f : X ⇒ F₀ A) → S₀ f C.⇒ A
ϕ : ∀ {A X} (f : X ⇒ F₀ A) → X ⇒ F₀ (S₀ f)
commute : ∀ {A X} (f : X ⇒ F₀ A) → F₁ (S₁ f) ∘ ϕ f ≈ f
SolutionSet⇒SolutionSet′ : ∀ {i} → SolutionSet i → SolutionSet′
SolutionSet⇒SolutionSet′ s = record
{ S₀ = λ f → S (S₀ f)
; S₁ = S₁
; ϕ = ϕ
; commute = commute
}
where open SolutionSet s
SolutionSet′⇒SolutionSet : ∀ i → SolutionSet′ → SolutionSet (o ⊔ i)
SolutionSet′⇒SolutionSet i s = record
{ I = Lift i C.Obj
; S = lower
; S₀ = λ f → lift (S₀ f)
; S₁ = S₁
; ϕ = ϕ
; commute = commute
}
where open SolutionSet′ s