|
| 1 | +```agda |
| 2 | +
|
| 3 | +open import Cat.Functor.Adjoint |
| 4 | +open import Cat.Prelude |
| 5 | +open import Cat.Functor.Properties |
| 6 | +module Cat.Functor.Adjoint.Restrict {o}{ℓ}{o'}{ℓ'} |
| 7 | + {C C' : Precategory o ℓ} {D D' : Precategory o' ℓ'} {L' : Functor C' D'}{R' : _} (adj : L' ⊣ R') |
| 8 | + {iC : Functor C C'}{iD : Functor D D'} |
| 9 | + {L : Functor C D}{R : Functor D C} |
| 10 | + {ffIC : is-fully-faithful iC} |
| 11 | + {ffID : is-fully-faithful iD} |
| 12 | + where |
| 13 | +
|
| 14 | +open import Cat.Functor.Naturality |
| 15 | +open import Cat.Functor.Adjoint.Hom |
| 16 | +
|
| 17 | +hom-equiv→adjoints : ∀{o ℓ o' ℓ'} {C : Precategory o ℓ}{D : Precategory o' ℓ'} |
| 18 | + → {L : Functor D C} {R : Functor C D} |
| 19 | + → (eqv : ∀{x}{y} → Precategory.Hom C (Functor.F₀ L x) y ≃ Precategory.Hom D x (Functor.F₀ R y)) |
| 20 | + → (nat : hom-iso-natural {L = L} {R = R} λ {x} {y} → fst $ eqv {x} {y}) |
| 21 | + → L ⊣ R |
| 22 | +hom-equiv→adjoints eqv nat = hom-iso→adjoints (fst eqv) (snd eqv) nat |
| 23 | +
|
| 24 | +open import Cat.Morphism |
| 25 | +open Precategory |
| 26 | +open Functor |
| 27 | +module R = Functor R |
| 28 | +module L = Functor L |
| 29 | +module iD = Functor iD |
| 30 | +module iC = Functor iC |
| 31 | +module C = Precategory C |
| 32 | +module D = Precategory D |
| 33 | +module C' = Precategory C' |
| 34 | +module D' = Precategory D' |
| 35 | +
|
| 36 | +is-ff-prop : {oc lc od ld : _}{C : Precategory oc lc}{D : Precategory od ld} |
| 37 | + -> (F : Functor C D) → is-prop (is-fully-faithful F) |
| 38 | +is-ff-prop F = hlevel! |
| 39 | +
|
| 40 | +
|
| 41 | +infixr 9 _o_ |
| 42 | +_o_ : ∀{a}{b}{c} {A : Type a} {B : A → Type b} {C : {x : A} → B x → Type c} → |
| 43 | + (∀ {x} (y : B x) → C y) → (g : (x : A) → B x) → |
| 44 | + ((x : A) → C (g x)) |
| 45 | +f o g = λ x → f (g x) |
| 46 | +
|
| 47 | +
|
| 48 | +restrict : (L' F∘ iC) ≅ⁿ (iD F∘ L) → (R' F∘ iD) ≅ⁿ (iC F∘ R) → L ⊣ R |
| 49 | +restrict comm1 comm2 = hom-equiv→adjoints f |
| 50 | + λ {b = b} {c = c} g h x → |
| 51 | + fst f (D._∘_ g (D._∘_ x (L.₁ h))) |
| 52 | + ≡⟨ {! !} ⟩ |
| 53 | + C._∘_ (R.₁ g) (C._∘_ (fst f x) h) ∎ |
| 54 | + where |
| 55 | + f : {x : C .Ob} {y : D .Ob} → D.Hom (L.F₀ x) y ≃ C.Hom x (R.F₀ y) |
| 56 | + f {c} {d} = |
| 57 | + D.Hom (L.F₀ c) d ≃⟨ iD.F₁ , ffID ⟩ |
| 58 | + D'.Hom (iD.F₀ (L.F₀ c)) (iD.F₀ d) ≃⟨ iso→hom-equiv D' (isoⁿ→iso ((_ Iso⁻¹) comm1) c) (id-iso _) ⟩ |
| 59 | + D'.Hom ((L' F∘ iC).F₀ c) (iD.F₀ d) ≃⟨ L-adjunct adj , L-adjunct-is-equiv adj ⟩ |
| 60 | + C'.Hom (iC.F₀ c) ((R' F∘ iD).F₀ d) ≃⟨ iso→hom-equiv C' (id-iso _) (isoⁿ→iso comm2 d) ⟩ |
| 61 | + C'.Hom (iC.F₀ c) (iC.F₀ (R.F₀ d)) ≃⟨ (iC.F₁ , ffIC) e⁻¹ ⟩ |
| 62 | + C.Hom c (R.F₀ d) ≃∎ |
| 63 | + |
| 64 | + -- {!!} ∙ {!!} |
| 65 | + -- {!!} ∙ {!!} |
| 66 | +
|
| 67 | +``` |
0 commit comments