  We show how a bi-directional grammar can be used to specify and verbalise
answer set programs in controlled natural language. We start from a program
specification in controlled natural language and translate this specification
automatically into an executable answer set program. The resulting answer set
program can be modified following certain naming conventions and the revised
version of the program can then be verbalised in the same subset of natural
language that was used as specification language. The bi-directional grammar is
parametrised for processing and generation, deals with referring expressions,
and exploits symmetries in the data structure of the grammar rules whenever
these grammar rules need to be duplicated. We demonstrate that verbalisation
requires sentence planning in order to aggregate similar structures with the
aim to improve the readability of the generated specification. Without
modifications, the generated specification is always semantically equivalent to
the original one; our bi-directional grammar is the first one that allows for
semantic round-tripping in the context of controlled natural language
processing. This paper is under consideration for acceptance in TPLP.
