A Study of Generalisation in Logic Programs