---
layout: default
file: "src/Examples/Classical/CommutativeSemigroup.lagda.md"
title: "Examples.Classical.CommutativeSemigroup module"
date: "2026-05-24"
author: "the agda-algebras development team"
---

### Worked Example: `(ℕ, +, 0)` as a commutative semigroup

This is the [Examples.Classical.CommutativeSemigroup][] module of the [Agda Universal Algebra Library][].

<!--
```agda
{-# OPTIONS --cubical-compatible --exact-split --safe #-}
module Examples.Classical.CommutativeSemigroup where

open import Data.Nat                               using (  ; _+_ )
open import Data.Nat.Properties                    using ( +-assoc ; +-comm )
open import Relation.Binary.PropositionalEquality  using ( _≡_ ; refl )

open import Classical.Small.Structures.CommutativeSemigroup
  using ( CommutativeSemigroup ; eqsToCommutativeSemigroup )

import Classical.Structures.CommutativeSemigroup as Polymorphic
```
-->

```agda
ℕ-commutativeSemigroup : CommutativeSemigroup
ℕ-commutativeSemigroup = eqsToCommutativeSemigroup  _+_ +-assoc +-comm

open Polymorphic.CommutativeSemigroup-Op ℕ-commutativeSemigroup using ( _∙_ )

∙-is-+-cs :  (a b : )  a  b  a + b
∙-is-+-cs a b = refl
```