Learn X in Y minutes Where X=Prolog
This is horrible! Prolog is nothing like the language described in this
&quot;tutorial&quot;. The author has completely made up a bunch of programming language
semantics that have nothing to do with Prolog.<p>Just for the most blatant example of made-up semantics: unification is not
&quot;essentially a combination of assignment and equality&quot;.<p>Unification is not assignment: Prolog predicates are immutable. You can&#x27;t
assign to an immutable data structure.<p>Unification is not equality, either. For example, in Prolog 2 = 1+1 fails
because &quot;2&quot; does not unify with &quot;1+1&quot; (and not because &quot;unification can&#x27;t do
arithmetic&quot;; it&#x27;s because unification is not equality).<p>Unification is an algorithm to decide whether two Horn clauses can be
<i>resolved</i> with each other. Resolution is the inference rule used in Prolog&#x27;s
automated theorem proving. This is it:<p><pre><code>   ¬p ∨ q, p
  ----------
      q
</code></pre>
The horizontal line is read as &quot;entails&quot;. p and q are predicates. The rule
says that if we can show that p is false or q is true and that p is true, then
we can show that q is true. If ¬p and p unify, they can be resolved and q can
be shown to be true.<p>Resolution is used in Prolog to prove a query by refutation. Queries are the
goals that the author calls &quot;commands&quot;. These are not commands: they are
predicates, just like &quot;facts&quot; and &quot;rules&quot;. Prolog tries to disprove a goal by
finding a clause with a head literal that unifies with the query (only &quot;facts&quot;
and &quot;rules&quot; have heads, whereas goals only have bodies). If it can, it then
recursively proves each literal in the body of the clause, by finding a clause
with a head that unifies with the literal.<p>Unfortunately, none of this will make sense if you try to understand Prolog in
terms of assignment and equality tests, and so on. Reading this article and
trying to &quot;learn Prolog in Y minutes&quot; will only serve to confuse any further
attempts to understand and learn the language.