title: Prolog - differences between red cut and green cut
body: <p>I started learning prolog, and wanted to make the whole cuts thing clearer. 
  I have read that "green cut doesnt change declarative meaning of the program, while red cut does". But, the meaning of the program isnt really pure declarative (just from the fact that prolog actually backtracks for all  options).</p>
  
  <p>Here is an example:</p>
  
  <pre><code>p(1).
  p(2) :- !.
  p(3).
  </code></pre>
  
  <p>it has been said that this is green cut. But if I run this:</p>
  
  <pre><code>p(X), X =:= 3.
  </code></pre>
  
  <p>I will get "true" without a cut, and "false" with a cut.
  so, what do I miss?</p>
  
  <p>Thanks in advance.</p>