  We describe eclingo, a solver for epistemic logic programs under Gelfond 1991
semantics built upon the Answer Set Programming system clingo. The input
language of eclingo uses the syntax extension capabilities of clingo to define
subjective literals that, as usual in epistemic logic programs, allow for
checking the truth of a regular literal in all or in some of the answer sets of
a program. The eclingo solving process follows a guess and check strategy. It
first generates potential truth values for subjective literals and, in a second
step, it checks the obtained result with respect to the cautious and brave
consequences of the program. This process is implemented using the multi-shot
functionalities of clingo. We have also implemented some optimisations, aiming
at reducing the search space and, therefore, increasing eclingo's efficiency in
some scenarios. Finally, we compare the efficiency of eclingo with two
state-of-the-art solvers for epistemic logic programs on a pair of benchmark
scenarios and show that eclingo generally outperforms their obtained results.
Under consideration for acceptance in TPLP.
