Differences between versions 3.0 and 3.1 of SB-Prolog
=====================================================
1. The builtin predicate $getenv/2 has disappeared (it wasn't obvious that
this was used often enough to justify having it as a builtin). The way
the environment variable SIMPATH is accessed has changed: it is now
accessed once, when SB-Prolog is started up. This is more efficient,
but changes to SIMPATH after startup are now invisible to the system.
2. Arithmetic expressions (within is/2 and the various relational
predicates can now contain functional syntax. This is just syntactic
sugar, and is converted to a relational syntax for execution (so
listing/{0,1}, clause/{2,3} may show something different). Thus,
code of the form "X is 1 + sqrt(Y)" is allowed: it is converted to
square(U, Y), X is 1 + U
where U is a new variable. The new evaluable functors are the following:
sqrt/1 (square root)
square/1 (square)
integer/1 (convert number to integer)
float/1 (convert number to float)
exp/1 (exponential)
ln/1 (natural logarithm)
sin/1 (sine)
arcsin/1 (inverse sine)
3. Floating point unification has been changed so that it is no longer
"fuzzy". In previous versions, two numbers were considered equal if
they were "sufficiently close" to each other; now, two numbers must
have the same value to be considered equal.
However, there is still no need for explicit type conversions when
unifying integers and floats.