---
layout: default
title : "Legacy.Base.Homomorphisms.Properties module (The Agda Universal Algebra Library)"
date : "2021-09-08"
author: "agda-algebras development team"
---
### <a id="properties-of-homomorphisms">Properties of Homomorphisms</a>
This is the [Legacy.Base.Homomorphisms.Properties][] module of the [Agda Universal Algebra Library][].
```agda
{-# OPTIONS --cubical-compatible --exact-split --safe #-}
open import Overture using (Signature ; ๐ ; ๐ฅ )
module Legacy.Base.Homomorphisms.Properties {๐ : Signature ๐ ๐ฅ} where
open import Data.Product using ( _,_ )
open import Function using ( _โ_ )
open import Level using ( Level )
open import Relation.Binary.PropositionalEquality as โก
using ( _โก_ ; module โก-Reasoning )
open import Overture using ( โฃ_โฃ ; โฅ_โฅ )
open import Legacy.Base.Algebras {๐ = ๐} using ( Algebra ; _ฬ_ ; Lift-Alg )
open import Legacy.Base.Homomorphisms.Basic {๐ = ๐} using ( hom ; is-homomorphism )
private variable ฮฑ ฮฒ ฮณ ฯ : Level
```
#### <a id="homomorphism-composition">Homomorphism composition</a>
The composition of homomorphisms is again a homomorphism. We formalize this in a
number of alternative ways.
```agda
open โก-Reasoning
module _ (๐จ : Algebra ฮฑ){๐ฉ : Algebra ฮฒ}(๐ช : Algebra ฮณ) where
โ-hom : hom ๐จ ๐ฉ โ hom ๐ฉ ๐ช โ hom ๐จ ๐ช
โ-hom (g , ghom) (h , hhom) = h โ g , Goal where
Goal : โ ๐ a โ (h โ g)((๐ ฬ ๐จ) a) โก (๐ ฬ ๐ช)(h โ g โ a)
Goal ๐ a = (h โ g)((๐ ฬ ๐จ) a) โกโจ โก.cong h ( ghom ๐ a ) โฉ
h ((๐ ฬ ๐ฉ)(g โ a)) โกโจ hhom ๐ ( g โ a ) โฉ
(๐ ฬ ๐ช)(h โ g โ a) โ
โ-is-hom : {f : โฃ ๐จ โฃ โ โฃ ๐ฉ โฃ}{g : โฃ ๐ฉ โฃ โ โฃ ๐ช โฃ}
โ is-homomorphism ๐จ ๐ฉ f โ is-homomorphism ๐ฉ ๐ช g
โ is-homomorphism ๐จ ๐ช (g โ f)
โ-is-hom {f} {g} fhom ghom = โฅ โ-hom (f , fhom) (g , ghom) โฅ
```
A homomorphism from `๐จ` to `๐ฉ` can be lifted to a homomorphism from
`Lift-Alg ๐จ โแต` to `Lift-Alg ๐ฉ โแต`.
```agda
open Level
Lift-hom : {๐จ : Algebra ฮฑ}(โแต : Level){๐ฉ : Algebra ฮฒ} (โแต : Level)
โ hom ๐จ ๐ฉ โ hom (Lift-Alg ๐จ โแต) (Lift-Alg ๐ฉ โแต)
Lift-hom {๐จ = ๐จ} โแต {๐ฉ} โแต (f , fhom) = lift โ f โ lower , Goal
where
lABh : is-homomorphism (Lift-Alg ๐จ โแต) ๐ฉ (f โ lower)
lABh = โ-is-hom (Lift-Alg ๐จ โแต) ๐ฉ {lower}{f} (ฮป _ _ โ โก.refl) fhom
Goal : is-homomorphism(Lift-Alg ๐จ โแต)(Lift-Alg ๐ฉ โแต) (lift โ (f โ lower))
Goal = โ-is-hom (Lift-Alg ๐จ โแต) (Lift-Alg ๐ฉ โแต)
{f โ lower}{lift} lABh ฮป _ _ โ โก.refl
```
We should probably point out that while the lifting and lowering homomorphisms
are important for our formal treatment of algebras in type theory, they never
arise---in fact, they are not even definable---in classical universal algebra
based on set theory.