---
layout: default
file: "src/Classical/Signatures/Monoid.lagda.md"
title: "Classical.Signatures.Monoid module"
date: "2026-05-22"
author: "the agda-algebras development team"
---
### The signature of monoids
This is the [Classical.Signatures.Monoid][] module of the [Agda Universal Algebra Library][].
A monoid's signature expands the magma signature by a single *nullary* operation
symbol `ε-Op` denoting the identity element. This is the first signature in the
[`Classical/`][Classical] tree that genuinely grows — `Semigroup` reused
`Sig-Magma` — so it is the first place the forgetful projection is a reduct rather
than `proj₁`. Distinguished elements are nullary operation symbols of the
signature per [ADR-002 v2 §9](../../docs/adr/002-classical-layer-design.md);
`ε-Op` has arity `Fin 0`. The constructor- and arity-naming conventions are those
established by `Classical.Signatures.Magma`.
<!--
```agda
{-# OPTIONS --cubical-compatible --exact-split --safe #-}
module Classical.Signatures.Monoid where
open import Agda.Primitive using () renaming ( Set to Type )
open import Data.Fin.Base using ( Fin )
open import Data.Product using ( _,_ )
open import Level using ( 0ℓ )
open import Overture.Signatures using ( Signature )
```
-->
```agda
data Op-Monoid : Type where
∙-Op ε-Op : Op-Monoid
ar-Monoid : Op-Monoid → Type
ar-Monoid ∙-Op = Fin 2
ar-Monoid ε-Op = Fin 0
Sig-Monoid : Signature 0ℓ 0ℓ
Sig-Monoid = Op-Monoid , ar-Monoid
```