## 19.3 Adding new morphisms

A morphism is nothing else than a function compatible with the equivalence relation. You can only replace a term by an equivalent in position of argument of a morphism. That's why each morphism has to be declared to the system, which will ask you to prove the accurate compatibility lemma.
The syntax is the following :

> `Add Morphism` f : ident

where f is the name of a term which type is a non dependent product (the term you want to declare as a morphism) and ident is a new identifier which will denote the compatibility lemma.
Error messages:

1. `The term` term`is already declared as a morphism`
2. `The term` term`is not a product`
3. `The term` term`should not be a dependent product`

The compatibility lemma genereted depends on the setoids already declared.