title: Prolog arrow operator
body: <pre><code>| ?- true ; (true-&gt;false)
  yes
  | ?- (true-&gt;false) ; true.
  no
  | ?- false ; true.
  yes
  </code></pre>
  
  <p>From what I understand the 'yes'/'no' result tells the user whether the query was successful or not. The query is always successful on the predicate <code>true</code> and it always fails on <code>false</code>.</p>
  
  <ol>
  <li><p>since <code>;/2</code> means OR (which is commutative) the first two queries should be equivalent(both successful)</p></li>
  <li><p>in predicative logic the formulas <code>(true-&gt;false)</code> and <code>false</code> evaluate to FALSE, so the last two queries should be equivalent</p></li>
  </ol>
  
  <p>Therefore: the second query appears to be inconsistent with theoretical logic</p>
  
  <p>Is there a mistake in my reasoning? I feel I'm not understanding something fundamental.</p>