# Dependent products of large categories
```agda
module category-theory.dependent-products-of-large-categories where
```
<details><summary>Imports</summary>
```agda
open import category-theory.dependent-products-of-large-precategories
open import category-theory.isomorphisms-in-large-categories
open import category-theory.large-categories
open import category-theory.large-precategories
open import foundation.equivalences
open import foundation.function-extensionality
open import foundation.functoriality-dependent-function-types
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 family of [large categories](category-theory.large-categories.md) `Cᵢ`
indexed by `i : I`, the dependent product `Π(i : I), Cᵢ` is a large category
consisting of functions taking `i : I` to an object of `Cᵢ`. Every component of
the structure is given pointwise.
## Definition
```agda
module _
{l1 : Level} {α : Level → Level} {β : Level → Level → Level}
(I : UU l1) (C : I → Large-Category α β)
where
large-precategory-Π-Large-Category :
Large-Precategory (λ l2 → l1 ⊔ α l2) (λ l2 l3 → l1 ⊔ β l2 l3)
large-precategory-Π-Large-Category =
Π-Large-Precategory I (λ i → large-precategory-Large-Category (C i))
abstract
is-large-category-Π-Large-Category :
is-large-category-Large-Precategory large-precategory-Π-Large-Category
is-large-category-Π-Large-Category x y =
is-equiv-htpy-equiv
( ( equiv-iso-fiberwise-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))) ∘e
( equiv-Π-equiv-family
( λ i → extensionality-obj-Large-Category (C i) (x i) (y i))) ∘e
( equiv-funext))
( λ where refl → refl)
Π-Large-Category : Large-Category (λ l2 → l1 ⊔ α l2) (λ l2 l3 → l1 ⊔ β l2 l3)
large-precategory-Large-Category
Π-Large-Category =
large-precategory-Π-Large-Category
is-large-category-Large-Category Π-Large-Category =
is-large-category-Π-Large-Category
obj-Π-Large-Category : (l2 : Level) → UU (l1 ⊔ α l2)
obj-Π-Large-Category = obj-Large-Category Π-Large-Category
hom-set-Π-Large-Category :
{l2 l3 : Level} →
obj-Π-Large-Category l2 → obj-Π-Large-Category l3 → Set (l1 ⊔ β l2 l3)
hom-set-Π-Large-Category = hom-set-Large-Category Π-Large-Category
hom-Π-Large-Category :
{l2 l3 : Level} →
obj-Π-Large-Category l2 → obj-Π-Large-Category l3 → UU (l1 ⊔ β l2 l3)
hom-Π-Large-Category = hom-Large-Category Π-Large-Category
comp-hom-Π-Large-Category :
{l2 l3 l4 : Level}
{x : obj-Π-Large-Category l2}
{y : obj-Π-Large-Category l3}
{z : obj-Π-Large-Category l4} →
hom-Π-Large-Category y z →
hom-Π-Large-Category x y →
hom-Π-Large-Category x z
comp-hom-Π-Large-Category = comp-hom-Large-Category Π-Large-Category
associative-comp-hom-Π-Large-Category :
{l2 l3 l4 l5 : Level}
{x : obj-Π-Large-Category l2}
{y : obj-Π-Large-Category l3}
{z : obj-Π-Large-Category l4}
{w : obj-Π-Large-Category l5} →
(h : hom-Π-Large-Category z w)
(g : hom-Π-Large-Category y z)
(f : hom-Π-Large-Category x y) →
comp-hom-Π-Large-Category (comp-hom-Π-Large-Category h g) f =
comp-hom-Π-Large-Category h (comp-hom-Π-Large-Category g f)
associative-comp-hom-Π-Large-Category =
associative-comp-hom-Large-Category Π-Large-Category
involutive-eq-associative-comp-hom-Π-Large-Category :
{l2 l3 l4 l5 : Level}
{x : obj-Π-Large-Category l2}
{y : obj-Π-Large-Category l3}
{z : obj-Π-Large-Category l4}
{w : obj-Π-Large-Category l5} →
(h : hom-Π-Large-Category z w)
(g : hom-Π-Large-Category y z)
(f : hom-Π-Large-Category x y) →
comp-hom-Π-Large-Category (comp-hom-Π-Large-Category h g) f =ⁱ
comp-hom-Π-Large-Category h (comp-hom-Π-Large-Category g f)
involutive-eq-associative-comp-hom-Π-Large-Category =
involutive-eq-associative-comp-hom-Large-Category Π-Large-Category
id-hom-Π-Large-Category :
{l2 : Level} {x : obj-Π-Large-Category l2} →
hom-Π-Large-Category x x
id-hom-Π-Large-Category = id-hom-Large-Category Π-Large-Category
left-unit-law-comp-hom-Π-Large-Category :
{l2 l3 : Level} {x : obj-Π-Large-Category l2} {y : obj-Π-Large-Category l3}
(f : hom-Π-Large-Category x y) →
comp-hom-Π-Large-Category id-hom-Π-Large-Category f = f
left-unit-law-comp-hom-Π-Large-Category =
left-unit-law-comp-hom-Large-Category Π-Large-Category
right-unit-law-comp-hom-Π-Large-Category :
{l2 l3 : Level} {x : obj-Π-Large-Category l2} {y : obj-Π-Large-Category l3}
(f : hom-Π-Large-Category x y) →
comp-hom-Π-Large-Category f id-hom-Π-Large-Category = f
right-unit-law-comp-hom-Π-Large-Category =
right-unit-law-comp-hom-Large-Category Π-Large-Category
extensionality-obj-Π-Large-Category :
{l2 : Level} (x y : obj-Π-Large-Category l2) →
(x = y) ≃ iso-Large-Category Π-Large-Category x y
extensionality-obj-Π-Large-Category =
extensionality-obj-Large-Category Π-Large-Category
```
## Properties
### Isomorphisms in the large dependent product category are fiberwise isomorphisms
```agda
module _
{l1 l2 l3 : Level} {α : Level → Level} {β : Level → Level → Level}
(I : UU l1) (C : I → Large-Category α β)
{x : obj-Π-Large-Category I C l2} {y : obj-Π-Large-Category I C l3}
where
is-fiberwise-iso-is-iso-Π-Large-Category :
(f : hom-Π-Large-Category I C x y) →
is-iso-Large-Category (Π-Large-Category I C) f →
(i : I) → is-iso-Large-Category (C i) (f i)
is-fiberwise-iso-is-iso-Π-Large-Category =
is-fiberwise-iso-is-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
fiberwise-iso-iso-Π-Large-Category :
iso-Large-Category (Π-Large-Category I C) x y →
(i : I) → iso-Large-Category (C i) (x i) (y i)
fiberwise-iso-iso-Π-Large-Category =
fiberwise-iso-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
is-iso-is-fiberwise-iso-Π-Large-Category :
(f : hom-Π-Large-Category I C x y) →
((i : I) → is-iso-Large-Category (C i) (f i)) →
is-iso-Large-Category (Π-Large-Category I C) f
is-iso-is-fiberwise-iso-Π-Large-Category =
is-iso-is-fiberwise-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
iso-fiberwise-iso-Π-Large-Category :
((i : I) → iso-Large-Category (C i) (x i) (y i)) →
iso-Large-Category (Π-Large-Category I C) x y
iso-fiberwise-iso-Π-Large-Category =
iso-fiberwise-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
is-equiv-is-fiberwise-iso-is-iso-Π-Large-Category :
(f : hom-Π-Large-Category I C x y) →
is-equiv (is-fiberwise-iso-is-iso-Π-Large-Category f)
is-equiv-is-fiberwise-iso-is-iso-Π-Large-Category =
is-equiv-is-fiberwise-iso-is-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
equiv-is-fiberwise-iso-is-iso-Π-Large-Category :
(f : hom-Π-Large-Category I C x y) →
( is-iso-Large-Category (Π-Large-Category I C) f) ≃
( (i : I) → is-iso-Large-Category (C i) (f i))
equiv-is-fiberwise-iso-is-iso-Π-Large-Category =
equiv-is-fiberwise-iso-is-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
is-equiv-is-iso-is-fiberwise-iso-Π-Large-Category :
(f : hom-Π-Large-Category I C x y) →
is-equiv (is-iso-is-fiberwise-iso-Π-Large-Category f)
is-equiv-is-iso-is-fiberwise-iso-Π-Large-Category =
is-equiv-is-iso-is-fiberwise-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
equiv-is-iso-is-fiberwise-iso-Π-Large-Category :
( f : hom-Π-Large-Category I C x y) →
( (i : I) → is-iso-Large-Category (C i) (f i)) ≃
( is-iso-Large-Category (Π-Large-Category I C) f)
equiv-is-iso-is-fiberwise-iso-Π-Large-Category =
equiv-is-iso-is-fiberwise-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
is-equiv-fiberwise-iso-iso-Π-Large-Category :
is-equiv fiberwise-iso-iso-Π-Large-Category
is-equiv-fiberwise-iso-iso-Π-Large-Category =
is-equiv-fiberwise-iso-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
equiv-fiberwise-iso-iso-Π-Large-Category :
( iso-Large-Category (Π-Large-Category I C) x y) ≃
( (i : I) → iso-Large-Category (C i) (x i) (y i))
equiv-fiberwise-iso-iso-Π-Large-Category =
equiv-fiberwise-iso-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
is-equiv-iso-fiberwise-iso-Π-Large-Category :
is-equiv iso-fiberwise-iso-Π-Large-Category
is-equiv-iso-fiberwise-iso-Π-Large-Category =
is-equiv-iso-fiberwise-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
equiv-iso-fiberwise-iso-Π-Large-Category :
( (i : I) → iso-Large-Category (C i) (x i) (y i)) ≃
( iso-Large-Category (Π-Large-Category I C) x y)
equiv-iso-fiberwise-iso-Π-Large-Category =
equiv-iso-fiberwise-iso-Π-Large-Precategory I
( λ i → large-precategory-Large-Category (C i))
```