  Abstract interpretation is a well-established technique for performing static
analyses of logic programs. However, choosing the abstract domain, widening,
fixpoint, etc. that provides the best precision-cost trade-off remains an open
problem. This is in a good part because of the challenges involved in measuring
and comparing the precision of different analyses. We propose a new approach
for measuring such precision, based on defining distances in abstract domains
and extending them to distances between whole analyses of a given program, thus
allowing comparing precision across different analyses. We survey and extend
existing proposals for distances and metrics in lattices or abstract domains,
and we propose metrics for some common domains used in logic program analysis,
as well as extensions of those metrics to the space of whole program analysis.
We implement those metrics within the CiaoPP framework and apply them to
measure the precision of different analyses over both benchmarks and a
realistic program.
