  We introduce a generalized logic programming paradigm where programs,
consisting of facts and rules with the usual syntax, can be enriched by
co-facts, which syntactically resemble facts but have a special meaning. As in
coinductive logic programming, interpretations are subsets of the complete
Herbrand basis, including infinite terms. However, the intended meaning
(declarative semantics) of a program is a fixed point which is not necessarily
the least, nor the greatest one, but is determined by co-facts. In this way, it
is possible to express predicates on non well-founded structures, such as
infinite lists and graphs, for which the coinductive interpretation would be
not precise enough. Moreover, this paradigm nicely subsumes standard
(inductive) and coinductive logic programming, since both can be expressed by a
particular choice of co-facts, hence inductive and coinductive predicates can
coexist in the same program. We illustrate the paradigm by examples, and
provide declarative and operational semantics, proving the correctness of the
latter. Finally, we describe a prototype meta-interpreter.
