The explanation function for a predicate is a function that takes the
same arguments as the predicate and returns an explanation.
The explanation should explain why the predicate, when invoked with
the arguments given to the explanation function, returns the value
that it returns. The explanation can be any object but should have a
comprehensible printed representation. If the return value of the
predicate needs no explanation for a given list of arguments, the
explanation function should return nil
.
To associate an explanation function with a predicate, add the
property ert-explainer
to the symbol that names the predicate.
The value of the property should be the symbol that names the
explanation function.