title: What is meant by "logical purity" in Prolog?
body: <p>What is meant by "logical purity" (in the context of Prolog programming)? The <a href="/questions/tagged/logical-purity" class="post-tag" title="show questions tagged &#39;logical-purity&#39;" rel="tag">logical-purity</a> tag info says <em>"programs using only Horn clauses"</em>, but then, how would predicates like <a href="https://stackoverflow.com/a/27358600/4609915"><code>if_/3</code></a> qualify, using as much as it does the cut, and the various meta-logical (what's the proper terminology? <code>var/1</code> and such) predicates, i.e. the low-level stuff. </p>
  
  <p>I get it that it achieves some "pure" effect, but what does this mean, precisely? </p>
  
  <p>For a more concrete illustration, please explain how does <code>if_/3</code> qualify as logically pure, seen in use e.g. <a href="https://stackoverflow.com/a/30453357/849891">in this answer</a>? </p>