Meta-reasoning and Data Structuring for Improving PROLOG Programming Style