  A propositional logic program $P$ may be identified with a $P_fP_f$-coalgebra
on the set of atomic propositions in the program. The corresponding
$C(P_fP_f)$-coalgebra, where $C(P_fP_f)$ is the cofree comonad on $P_fP_f$,
describes derivations by resolution. That correspondence has been developed to
model first-order programs in two ways, with lax semantics and saturated
semantics, based on locally ordered categories and right Kan extensions
respectively. We unify the two approaches, exhibiting them as complementary
rather than competing, reflecting the theorem-proving and proof-search aspects
of logic programming. While maintaining that unity, we further refine lax
semantics to give finitary models of logic programs with existential variables,
and to develop a precise semantic relationship between variables in logic
programming and worlds in local state.
