A congruence relation on a language is an equivalence relation that is compatible with the term constructors of that language.
Consider the untyped lambda-calculus:
e::=x∣λx.e∣e1 e2
A congruence relation e1=e2 must be closed under the equivalence rules,
e=e\mboxrefle2=e1e1=e2\mboxsymme1=e3e1=e2e2=e3\mboxtrans,
and the compatibility rules,
x=xλx.e1=λx.e2e1=e2e1 e2=e1′ e2′e1=e1′e2=e2′.