Extracting, organising, designing and reusing Prolog programming techniques - Vasconcelos, Wamberto Weber M. P. (The University of Edinburgh, 1995)