SWI-Prolog has two name spaces. One name space for predicates. And one name space for evaluable functions. round/1 is supposed to be an evaluable function, so you need to use is/2 to invoke it:

```
Welcome to SWI-Prolog (threaded, 64 bits, version 8.1.6)
?- X is round(1.1).
X = 1.
```

That Prolog has predicates and evaluable functions is again rooted in the ISO core standard (ISO/IEC 13211-1 First edition 1995-06-01). Evaluable functors were introduced already there, see section 7.9 Evaluating an Expression.

The ISO core standard depends a minimum set of evaluable functors, which are defined in its own chapter 9 Evaluable functors. They also form the basis for predicates such as (=:=)/2, (>=)/2, etc…, see section 8.7 arithmetic comparison.