Predicates that impede or prohibit a declarative reading of Prolog programs are extra-logical. Examples of such predicates are:
!/0
(->)/2 and if-then-else
(\+)/1
These predicates can only be understood procedurally, by taking into account the actual control flow of the interpreter, and a...