The use of finite domains as *arguments* of functions works
like their use in relations.
For instance, the two directed equations
(```:-&`'' is a left-to-right directed ```=`'')

use `anonymous'separates(dom[canada,mexico,usa],japan) :-& pacific. separates(dom[canada,mexico,usa], dom[denmark,france,germany,italy,spain,sweden,uk]) :-& atlantic.

The query

bindsseparates(bnd[Source,dom[canada,usa,panama]], Destination)

Analogously, finite exclusions act as function arguments as was shown
for relation arguments.
For instance, the `safe-divide` function

or, using a post-typing function definition (``safe-divide(Nominator,bnd[Denominator,exc[0]]) :-& /(Nominator,Denominator).

`excludes'safe-divide(Nominator,Denominator) :- Denominator is exc[0] & /(Nominator,Denominator).

Thus, the query

returnssafe-divide(8,4)

yieldssafe-divide(8,0)

Many function definitions, e.g. factorial and `fib`onacci
(below) over the naturals, become more declarative than in PROLOG by `exc`luding,
in a defining clause, arguments of earlier clauses: the definition
thus needs no cut and in fact has disjoint, order-independent (`OR-parallel')
clauses. The `fib` definition can even be shortened to two clauses via complementary `dom` and `exc` arguments:

fib(dom[0,1]) :-& 1. fib(bnd[N,exc[0,1]]) :-& +(fib(-(N,2)),fib(-(N,1))).