Types equipped with endomorphisms

Content created by Jonathan Prieto-Cubides, Egbert Rijke, Fredrik Bakke and Victor Blanchi.

Created on 2022-05-07.
Last modified on 2023-10-08.

module structured-types.types-equipped-with-endomorphisms where
Imports
open import foundation.dependent-pair-types
open import foundation.endomorphisms
open import foundation.function-types
open import foundation.unit-type
open import foundation.universe-levels

Idea

A type equipped with an endomorphism consists of a type A equipped with a map A → A.

Definitions

Types equipped with endomorphisms

Type-With-Endomorphism : (l : Level)  UU (lsuc l)
Type-With-Endomorphism l = Σ (UU l) endo

module _
  {l : Level} (X : Type-With-Endomorphism l)
  where

  type-Type-With-Endomorphism : UU l
  type-Type-With-Endomorphism = pr1 X

  endomorphism-Type-With-Endomorphism :
    type-Type-With-Endomorphism  type-Type-With-Endomorphism
  endomorphism-Type-With-Endomorphism = pr2 X

Example

Unit type equipped with endomorphisms

trivial-Type-With-Endomorphism : {l : Level}  Type-With-Endomorphism l
pr1 (trivial-Type-With-Endomorphism {l}) = raise-unit l
pr2 trivial-Type-With-Endomorphism = id

Recent changes