Boolean functions can be used to express the groundness of, and trace grounding dependencies
between, program variables in (constraint) logic programs. In this paper, a variety of issues
pertaining to the efficient Prolog implementation of groundness analysis are investigated,
focusing on the domain of definite Boolean functions, Def. The systematic design of the
representation of an abstract domain is discussed in relation to its impact on the algorithmic
complexity of the domain operations; the most frequently called operations should be the most
lightweight. This methodology is applied to Def, resulting in a new representation, together
with new algorithms for its domain operations utilising previously unexploited properties of
Def – for instance, quadratic-time entailment checking. The iteration strategy driving the
analysis is also discussed and a simple, but very effective, optimisation of induced magic is
described. The analysis can be implemented straightforwardly in Prolog and the use of a non-ground
representation results in an efficient, scalable tool which does not require widening to
be invoked, even on the largest benchmarks. An extensive experimental evaluation is given.