The human language faculty is a bidirectional system, i.e. it can be used by processes of approximately equal computational complexity to understand and to generate utterances of a language. We assume the general framework of optimality theory and treat the language faculty as a constraint-based system where the very same constraints are uses both in comprehension and in generation. In the simplest case comprehension and generation can be modelled by unidirectional optimization: finding an optimal interpretations for a given speech input in the case of comprehension; producing an optimal expression for a given message in case of generation. In the simplest case, the speaker and the listener roles are strictly separated. However, there are l...