  We provide a generic algorithm for constructing formulae that distinguish
behaviourally inequivalent states in systems of various transition types such
as nondeterministic, probabilistic or weighted; genericity over the transition
type is achieved by working with coalgebras for a set functor in the paradigm
of universal coalgebra. For every behavioural equivalence class in a given
system, we construct a formula which holds precisely at the states in that
class. The algorithm instantiates to deterministic finite automata, transition
systems, labelled Markov chains, and systems of many other types. The ambient
logic is a modal logic featuring modalities that are generically extracted from
the functor; these modalities can be systematically translated into custom sets
of modalities in a postprocessing step. The new algorithm builds on an existing
coalgebraic partition refinement algorithm. It runs in time O((m+n) log n) on
systems with n states and m transitions, and the same asymptotic bound applies
to the dag size of the formulae it constructs. This improves the bounds on run
time and formula size compared to previous algorithms even for previously known
specific instances, viz. transition systems and Markov chains; in particular,
the best previous bound for transition systems was O(mn).
