title: Prolog 'is/2' predicate implementation
body: <p>How is the 'is/2' Prolog predicate implemented?
  I know that</p>
  
  <pre><code>X is 3*4
  </code></pre>
  
  <p>is equivalent with</p>
  
  <pre><code>is(X, 3*4)
  </code></pre>
  
  <p>But is the predicate implemented using imperative programming?
  In other words, is the implementation equivalent with the following C code?</p>
  
  <pre><code>if(uninstantiated(x)) 
  {
      X = 3*4;
  }
  else
  {
      //signal an error
  }
  </code></pre>
  
  <p>Or is it implemented using declarative programming and other predicates?</p>