# Large function precategories
```agda
module category-theory.large-function-precategories where
```
<details><summary>Imports</summary>
```agda
open import category-theory.dependent-products-of-large-precategories
open import category-theory.isomorphisms-in-large-precategories
open import category-theory.large-precategories
open import foundation.equivalences
open import foundation.identity-types
open import foundation.sets
open import foundation.strictly-involutive-identity-types
open import foundation.universe-levels
```
</details>
## Idea
Given a type `I` and a
[large precategory](category-theory.large-precategories.md) `C`, the **large
function pre-category** `Cᴵ` consists of `I`-indexed families of objects of `C`
and `I`-indexed families of morphisms between them.
## Definition
### Large function precategories
```agda
module _
{l1 : Level} {α : Level → Level} {β : Level → Level → Level}
(I : UU l1) (C : Large-Precategory α β)
where
Large-Function-Precategory :
Large-Precategory (λ l2 → l1 ⊔ α l2) (λ l2 l3 → l1 ⊔ β l2 l3)
Large-Function-Precategory =
Π-Large-Precategory I (λ _ → C)
obj-Large-Function-Precategory : (l2 : Level) → UU (l1 ⊔ α l2)
obj-Large-Function-Precategory =
obj-Π-Large-Precategory I (λ _ → C)
hom-set-Large-Function-Precategory :
{l2 l3 : Level} →
obj-Large-Function-Precategory l2 → obj-Large-Function-Precategory l3 →
Set (l1 ⊔ β l2 l3)
hom-set-Large-Function-Precategory =
hom-set-Π-Large-Precategory I (λ _ → C)
hom-Large-Function-Precategory :
{l2 l3 : Level} →
obj-Large-Function-Precategory l2 → obj-Large-Function-Precategory l3 →
UU (l1 ⊔ β l2 l3)
hom-Large-Function-Precategory =
hom-Π-Large-Precategory I (λ _ → C)
comp-hom-Large-Function-Precategory :
{l2 l3 l4 : Level}
{x : obj-Large-Function-Precategory l2}
{y : obj-Large-Function-Precategory l3}
{z : obj-Large-Function-Precategory l4} →
hom-Large-Function-Precategory y z →
hom-Large-Function-Precategory x y →
hom-Large-Function-Precategory x z
comp-hom-Large-Function-Precategory =
comp-hom-Π-Large-Precategory I (λ _ → C)
associative-comp-hom-Large-Function-Precategory :
{l2 l3 l4 l5 : Level}
{x : obj-Large-Function-Precategory l2}
{y : obj-Large-Function-Precategory l3}
{z : obj-Large-Function-Precategory l4}
{w : obj-Large-Function-Precategory l5} →
(h : hom-Large-Function-Precategory z w)
(g : hom-Large-Function-Precategory y z)
(f : hom-Large-Function-Precategory x y) →
comp-hom-Large-Function-Precategory
( comp-hom-Large-Function-Precategory h g)
( f) =
comp-hom-Large-Function-Precategory
( h)
( comp-hom-Large-Function-Precategory g f)
associative-comp-hom-Large-Function-Precategory =
associative-comp-hom-Π-Large-Precategory I (λ _ → C)
involutive-eq-associative-comp-hom-Large-Function-Precategory :
{l2 l3 l4 l5 : Level}
{x : obj-Large-Function-Precategory l2}
{y : obj-Large-Function-Precategory l3}
{z : obj-Large-Function-Precategory l4}
{w : obj-Large-Function-Precategory l5} →
(h : hom-Large-Function-Precategory z w)
(g : hom-Large-Function-Precategory y z)
(f : hom-Large-Function-Precategory x y) →
comp-hom-Large-Function-Precategory
( comp-hom-Large-Function-Precategory h g)
( f) =ⁱ
comp-hom-Large-Function-Precategory
( h)
( comp-hom-Large-Function-Precategory g f)
involutive-eq-associative-comp-hom-Large-Function-Precategory =
involutive-eq-associative-comp-hom-Π-Large-Precategory I (λ _ → C)
id-hom-Large-Function-Precategory :
{l2 : Level} {x : obj-Large-Function-Precategory l2} →
hom-Large-Function-Precategory x x
id-hom-Large-Function-Precategory =
id-hom-Π-Large-Precategory I (λ _ → C)
left-unit-law-comp-hom-Large-Function-Precategory :
{l2 l3 : Level}
{x : obj-Large-Function-Precategory l2}
{y : obj-Large-Function-Precategory l3}
(f : hom-Large-Function-Precategory x y) →
comp-hom-Large-Function-Precategory id-hom-Large-Function-Precategory f = f
left-unit-law-comp-hom-Large-Function-Precategory =
left-unit-law-comp-hom-Π-Large-Precategory I (λ _ → C)
right-unit-law-comp-hom-Large-Function-Precategory :
{l2 l3 : Level}
{x : obj-Large-Function-Precategory l2}
{y : obj-Large-Function-Precategory l3}
(f : hom-Large-Function-Precategory x y) →
comp-hom-Large-Function-Precategory f id-hom-Large-Function-Precategory = f
right-unit-law-comp-hom-Large-Function-Precategory =
right-unit-law-comp-hom-Π-Large-Precategory I (λ _ → C)
```
## Properties
### Isomorphisms in the dependent product precategory are fiberwise isomorphisms
```agda
module _
{l1 l2 l3 : Level} {α : Level → Level} {β : Level → Level → Level}
(I : UU l1) (C : Large-Precategory α β)
{x : obj-Large-Function-Precategory I C l2}
{y : obj-Large-Function-Precategory I C l3}
where
is-fiberwise-iso-is-iso-Large-Function-Precategory :
(f : hom-Large-Function-Precategory I C x y) →
is-iso-Large-Precategory (Large-Function-Precategory I C) f →
(i : I) → is-iso-Large-Precategory C (f i)
is-fiberwise-iso-is-iso-Large-Function-Precategory =
is-fiberwise-iso-is-iso-Π-Large-Precategory I (λ _ → C)
fiberwise-iso-iso-Large-Function-Precategory :
iso-Large-Precategory (Large-Function-Precategory I C) x y →
(i : I) → iso-Large-Precategory C (x i) (y i)
fiberwise-iso-iso-Large-Function-Precategory =
fiberwise-iso-iso-Π-Large-Precategory I (λ _ → C)
is-iso-is-fiberwise-iso-Large-Function-Precategory :
(f : hom-Large-Function-Precategory I C x y) →
((i : I) → is-iso-Large-Precategory C (f i)) →
is-iso-Large-Precategory (Large-Function-Precategory I C) f
is-iso-is-fiberwise-iso-Large-Function-Precategory =
is-iso-is-fiberwise-iso-Π-Large-Precategory I (λ _ → C)
iso-fiberwise-iso-Large-Function-Precategory :
((i : I) → iso-Large-Precategory C (x i) (y i)) →
iso-Large-Precategory (Large-Function-Precategory I C) x y
iso-fiberwise-iso-Large-Function-Precategory =
iso-fiberwise-iso-Π-Large-Precategory I (λ _ → C)
is-equiv-is-fiberwise-iso-is-iso-Large-Function-Precategory :
(f : hom-Large-Function-Precategory I C x y) →
is-equiv (is-fiberwise-iso-is-iso-Large-Function-Precategory f)
is-equiv-is-fiberwise-iso-is-iso-Large-Function-Precategory =
is-equiv-is-fiberwise-iso-is-iso-Π-Large-Precategory I (λ _ → C)
equiv-is-fiberwise-iso-is-iso-Large-Function-Precategory :
(f : hom-Large-Function-Precategory I C x y) →
( is-iso-Large-Precategory (Large-Function-Precategory I C) f) ≃
( (i : I) → is-iso-Large-Precategory C (f i))
equiv-is-fiberwise-iso-is-iso-Large-Function-Precategory =
equiv-is-fiberwise-iso-is-iso-Π-Large-Precategory I (λ _ → C)
is-equiv-is-iso-is-fiberwise-iso-Large-Function-Precategory :
(f : hom-Large-Function-Precategory I C x y) →
is-equiv (is-iso-is-fiberwise-iso-Large-Function-Precategory f)
is-equiv-is-iso-is-fiberwise-iso-Large-Function-Precategory =
is-equiv-is-iso-is-fiberwise-iso-Π-Large-Precategory I (λ _ → C)
equiv-is-iso-is-fiberwise-iso-Large-Function-Precategory :
( f : hom-Large-Function-Precategory I C x y) →
( (i : I) → is-iso-Large-Precategory C (f i)) ≃
( is-iso-Large-Precategory (Large-Function-Precategory I C) f)
equiv-is-iso-is-fiberwise-iso-Large-Function-Precategory =
equiv-is-iso-is-fiberwise-iso-Π-Large-Precategory I (λ _ → C)
is-equiv-fiberwise-iso-iso-Large-Function-Precategory :
is-equiv fiberwise-iso-iso-Large-Function-Precategory
is-equiv-fiberwise-iso-iso-Large-Function-Precategory =
is-equiv-fiberwise-iso-iso-Π-Large-Precategory I (λ _ → C)
equiv-fiberwise-iso-iso-Large-Function-Precategory :
( iso-Large-Precategory (Large-Function-Precategory I C) x y) ≃
( (i : I) → iso-Large-Precategory C (x i) (y i))
equiv-fiberwise-iso-iso-Large-Function-Precategory =
equiv-fiberwise-iso-iso-Π-Large-Precategory I (λ _ → C)
is-equiv-iso-fiberwise-iso-Large-Function-Precategory :
is-equiv iso-fiberwise-iso-Large-Function-Precategory
is-equiv-iso-fiberwise-iso-Large-Function-Precategory =
is-equiv-iso-fiberwise-iso-Π-Large-Precategory I (λ _ → C)
equiv-iso-fiberwise-iso-Large-Function-Precategory :
( (i : I) → iso-Large-Precategory C (x i) (y i)) ≃
( iso-Large-Precategory (Large-Function-Precategory I C) x y)
equiv-iso-fiberwise-iso-Large-Function-Precategory =
equiv-iso-fiberwise-iso-Π-Large-Precategory I (λ _ → C)
```