# Constant functors

```agda
module category-theory.constant-functors where
```

<details><summary>Imports</summary>

```agda
open import category-theory.categories
open import category-theory.functors-categories
open import category-theory.functors-large-categories
open import category-theory.functors-large-precategories
open import category-theory.functors-precategories
open import category-theory.large-categories
open import category-theory.large-precategories
open import category-theory.natural-transformations-functors-precategories
open import category-theory.precategories
open import category-theory.precategory-of-functors

open import foundation.dependent-pair-types
open import foundation.equality-dependent-pair-types
open import foundation.homotopies
open import foundation.identity-types
open import foundation.propositions
open import foundation.universe-levels
```

</details>

## Idea

A **constant functor** is a [functor](category-theory.functors-categories.md)
`F : C → D` that is constant at an object `d ∈ D` and the identity morphism at
that object.

## Definition

### Constant functors between precategories

```agda
module _
  {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4)
  (d : obj-Precategory D)
  where

  constant-functor-Precategory : functor-Precategory C D
  pr1 constant-functor-Precategory _ = d
  pr1 (pr2 constant-functor-Precategory) _ = id-hom-Precategory D
  pr1 (pr2 (pr2 constant-functor-Precategory)) _ _ =
    inv (left-unit-law-comp-hom-Precategory D (id-hom-Precategory D))
  pr2 (pr2 (pr2 constant-functor-Precategory)) = refl-htpy
```

### Constant functors between categories

```agda
module _
  {l1 l2 l3 l4 : Level} (C : Category l1 l2) (D : Category l3 l4)
  (d : obj-Category D)
  where

  constant-functor-Category : functor-Category C D
  constant-functor-Category =
    constant-functor-Precategory
      ( precategory-Category C)
      ( precategory-Category D)
      ( d)
```

### Constant functors between large precategories

```agda
module _
  {αC αD : Level  Level} {βC βD : Level  Level  Level}
  (C : Large-Precategory αC βC) (D : Large-Precategory αD βD)
  {l : Level} (d : obj-Large-Precategory D l)
  where

  constant-functor-Large-Precategory : functor-Large-Precategory  _  l) C D
  obj-functor-Large-Precategory constant-functor-Large-Precategory _ = d
  hom-functor-Large-Precategory constant-functor-Large-Precategory _ =
    id-hom-Large-Precategory D
  preserves-comp-functor-Large-Precategory constant-functor-Large-Precategory
    _ _ =
    inv
      ( left-unit-law-comp-hom-Large-Precategory D (id-hom-Large-Precategory D))
  preserves-id-functor-Large-Precategory constant-functor-Large-Precategory =
    refl
```

### Constant functors between large categories

```agda
module _
  {αC αD : Level  Level} {βC βD : Level  Level  Level}
  (C : Large-Category αC βC) (D : Large-Category αD βD)
  {l : Level} (d : obj-Large-Category D l)
  where

  constant-functor-Large-Category : functor-Large-Category  _  l) C D
  constant-functor-Large-Category =
    constant-functor-Large-Precategory
      ( large-precategory-Large-Category C)
      ( large-precategory-Large-Category D)
      ( d)
```

## Properties

### The constant functor induces a functor into the precategory of functors

```agda
module _
  {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4)
  where

  natural-transformation-constant-functor-Precategory :
    {x y : obj-Precategory D}
    (f : hom-Precategory D x y) 
    natural-transformation-Precategory C D
      (constant-functor-Precategory C D x)
      (constant-functor-Precategory C D y)
  pr1 (natural-transformation-constant-functor-Precategory f) _ = f
  pr2 (natural-transformation-constant-functor-Precategory f) h =
    left-unit-law-comp-hom-Precategory D _ 
    inv (right-unit-law-comp-hom-Precategory D _)

  functor-constant-functor-Precategory :
    functor-Precategory D (functor-precategory-Precategory C D)
  pr1 functor-constant-functor-Precategory x =
    constant-functor-Precategory C D x
  pr1 (pr2 functor-constant-functor-Precategory) f =
    natural-transformation-constant-functor-Precategory f
  pr1 (pr2 (pr2 functor-constant-functor-Precategory)) g f =
    eq-pair-Σ
      ( refl)
      ( eq-is-prop
        ( is-prop-is-natural-transformation-Precategory C D
          ( constant-functor-Precategory C D _)
          ( constant-functor-Precategory C D _)
          ( _)))
  pr2 (pr2 (pr2 functor-constant-functor-Precategory)) x =
    eq-pair-Σ
      ( refl)
      ( eq-is-prop
        ( is-prop-is-natural-transformation-Precategory C D
          ( constant-functor-Precategory C D _)
          ( constant-functor-Precategory C D _)
          ( _)))
```

## External links

- [constant functor](https://ncatlab.org/nlab/show/constant+functor) at $n$Lab