# Maps between set-magmoids

```agda
module category-theory.maps-set-magmoids where
```

<details><summary>Imports</summary>

```agda
open import category-theory.set-magmoids

open import foundation.action-on-identifications-functions
open import foundation.commuting-pentagons-of-identifications
open import foundation.dependent-pair-types
open import foundation.function-types
open import foundation.identity-types
open import foundation.universe-levels
```

</details>

## Idea

A **map** from a [set-magmoid](category-theory.set-magmoids.md) `C` to a set
magmoid `D` consists of:

- a map `F₀ : C → D` on objects, and
- a map `F₁ : hom x y → hom (F₀ x) (F₀ y)` on morphisms.

## Definitions

### Maps between set-magmoids

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

  map-Set-Magmoid : UU (l1  l2  l3  l4)
  map-Set-Magmoid =
    Σ ( obj-Set-Magmoid C  obj-Set-Magmoid D)
      ( λ F₀ 
        {x y : obj-Set-Magmoid C} 
        hom-Set-Magmoid C x y 
        hom-Set-Magmoid D (F₀ x) (F₀ y))

  obj-map-Set-Magmoid :
    (F : map-Set-Magmoid)  obj-Set-Magmoid C  obj-Set-Magmoid D
  obj-map-Set-Magmoid = pr1

  hom-map-Set-Magmoid :
    (F : map-Set-Magmoid) {x y : obj-Set-Magmoid C} 
    hom-Set-Magmoid C x y 
    hom-Set-Magmoid D (obj-map-Set-Magmoid F x) (obj-map-Set-Magmoid F y)
  hom-map-Set-Magmoid = pr2
```

### The identity map on a set-magmoid

```agda
module _
  {l1 l2 : Level} (A : Set-Magmoid l1 l2)
  where

  id-map-Set-Magmoid : map-Set-Magmoid A A
  pr1 id-map-Set-Magmoid = id
  pr2 id-map-Set-Magmoid = id
```

### Composition of maps on set-magmoids

Any two compatible maps can be composed to a new map.

```agda
module _
  {l1 l2 l3 l4 l5 l6 : Level}
  (A : Set-Magmoid l1 l2)
  (B : Set-Magmoid l3 l4)
  (C : Set-Magmoid l5 l6)
  (G : map-Set-Magmoid B C)
  (F : map-Set-Magmoid A B)
  where

  obj-comp-map-Set-Magmoid : obj-Set-Magmoid A  obj-Set-Magmoid C
  obj-comp-map-Set-Magmoid =
    obj-map-Set-Magmoid B C G  obj-map-Set-Magmoid A B F

  hom-comp-map-Set-Magmoid :
    {x y : obj-Set-Magmoid A} 
    hom-Set-Magmoid A x y 
    hom-Set-Magmoid C (obj-comp-map-Set-Magmoid x) (obj-comp-map-Set-Magmoid y)
  hom-comp-map-Set-Magmoid =
    hom-map-Set-Magmoid B C G  hom-map-Set-Magmoid A B F

  comp-map-Set-Magmoid : map-Set-Magmoid A C
  pr1 comp-map-Set-Magmoid = obj-comp-map-Set-Magmoid
  pr2 comp-map-Set-Magmoid = hom-comp-map-Set-Magmoid
```

## Properties

### Categorical laws for map composition

#### Unit laws for map composition

```agda
module _
  {l1 l2 l3 l4 : Level}
  (A : Set-Magmoid l1 l2) (B : Set-Magmoid l3 l4)
  (F : map-Set-Magmoid A B)
  where

  left-unit-law-comp-map-Set-Magmoid :
    comp-map-Set-Magmoid A B B (id-map-Set-Magmoid B) F  F
  left-unit-law-comp-map-Set-Magmoid = refl

  right-unit-law-comp-map-Set-Magmoid :
    comp-map-Set-Magmoid A A B F (id-map-Set-Magmoid A)  F
  right-unit-law-comp-map-Set-Magmoid = refl
```

#### Associativity of map composition

```agda
module _
  {l1 l1' l2 l2' l3 l3' l4 l4' : Level}
  (A : Set-Magmoid l1 l1')
  (B : Set-Magmoid l2 l2')
  (C : Set-Magmoid l3 l3')
  (D : Set-Magmoid l4 l4')
  (F : map-Set-Magmoid A B)
  (G : map-Set-Magmoid B C)
  (H : map-Set-Magmoid C D)
  where

  associative-comp-map-Set-Magmoid :
    comp-map-Set-Magmoid A B D (comp-map-Set-Magmoid B C D H G) F 
    comp-map-Set-Magmoid A C D H (comp-map-Set-Magmoid A B C G F)
  associative-comp-map-Set-Magmoid = refl
```

#### Mac Lane pentagon for map composition

The Mac Lane pentagon is a higher coherence of the associator for map
composition. Since map composition is strictly associative, the Mac Lane
pentagon also follows by reflexivity.

```text
    (I(GH))F ---- I((GH)F)
          /        \
         /          \
  ((IH)G)F          I(H(GF))
          \        /
            \    /
           (IH)(GF)
```

```agda
module _
  {l1 l1' l2 l2' l3 l3' l4 l4' : Level}
  (A : Set-Magmoid l1 l1')
  (B : Set-Magmoid l2 l2')
  (C : Set-Magmoid l3 l3')
  (D : Set-Magmoid l4 l4')
  (E : Set-Magmoid l4 l4')
  (F : map-Set-Magmoid A B)
  (G : map-Set-Magmoid B C)
  (H : map-Set-Magmoid C D)
  (I : map-Set-Magmoid D E)
  where

  mac-lane-pentagon-comp-map-Set-Magmoid :
    coherence-pentagon-identifications
      { x =
        comp-map-Set-Magmoid A B E
        ( comp-map-Set-Magmoid B D E I
          ( comp-map-Set-Magmoid B C D H G))
        ( F)}
      { comp-map-Set-Magmoid A D E I
        ( comp-map-Set-Magmoid A B D
          ( comp-map-Set-Magmoid B C D H G)
          ( F))}
      { comp-map-Set-Magmoid A B E
        ( comp-map-Set-Magmoid B C E
          ( comp-map-Set-Magmoid C D E I H)
          ( G))
        ( F)}
      { comp-map-Set-Magmoid A D E
        ( I)
        ( comp-map-Set-Magmoid A C D
          ( H)
          ( comp-map-Set-Magmoid A B C G F))}
      { comp-map-Set-Magmoid A C E
        ( comp-map-Set-Magmoid C D E I H)
        ( comp-map-Set-Magmoid A B C G F)}
      ( associative-comp-map-Set-Magmoid A B D E
        ( F) (comp-map-Set-Magmoid B C D H G) (I))
      ( ap
        ( λ p  comp-map-Set-Magmoid A B E p F)
        ( inv (associative-comp-map-Set-Magmoid B C D E G H I)))
      ( ap
        ( λ p  comp-map-Set-Magmoid A D E I p)
        ( associative-comp-map-Set-Magmoid A B C D F G H))
      ( associative-comp-map-Set-Magmoid A B C E
        ( F) (G) (comp-map-Set-Magmoid C D E I H))
      ( inv
        ( associative-comp-map-Set-Magmoid A C D E
          (comp-map-Set-Magmoid A B C G F) H I))
  mac-lane-pentagon-comp-map-Set-Magmoid = refl
```

## See also

- [Functors between set-magmoids](category-theory.maps-set-magmoids.md)
- [The precategory of maps and natural transformations between precategories](category-theory.precategory-of-maps-precategories.md)

## External links

A wikidata identifier was not available for this concept.