Prolog reasoning enhancement

Cleaning up predicates, splitting them up for easier use and clearer reasoning structure.