There are many forms of uncertainty; for example there is vagueness
(fuzziness in particular), probability, and so on [4]. Furthermore there are a lot
of theoretical models to simulate the various kinds of uncertainty.
To stay flexible in RELFUN [1], no special model is chosen here.
It is left to
the user to decide in which way he wants to describe the uncertainty
of his particular problem.
For this, uncertainty clauses or ``uc` clauses' are introduced (we
show RELFUN's two syntax styles, with the focus on the former) :

Lisp style:`(`**uc** `(c ..) (ucfb1 ..) ... (ucfbM ..) UC_FACTOR)`

Prolog style:`c(..)` **:-#** ` ucfb1(..), ... ,ucfbM(..), UC_FACTOR.`

The premises `(ucfb1 ..), ... ,(ucfbM ..)` are functional and their
returned values represent uncertainty factors. The explicit uncertainty
factor, UC_FACTOR, stands for the uncertainty of the rule itself.
Normally, and later on in this paper, uncertainty factors will be numerical
values in . But it is also possible to think of qualitative
or quantitative values in a symbolic way, for which there are two
possible treatments:

- Translate symbolic values into numerical values in .

Calculate with these numerical values in the `normal' way.

Retranslate numerical values into symbolic values. - Use a special combination table for the symbolic values.

Neither the compiler nor the interpreter of normal RELFUN can directly
handle uncertainty clauses. So they have to be translated into
(non-ground, non-deterministic) footed clauses by embedding the premises
and the uncertainty factor into a combination function, `combrule`:

Lisp style:`(ft (c ..) (combrule (ucfb1 ..) ... (ucfbM ..) UC_FACTOR))`

Prolog style:`c(..) :- combrule(ucfb1(..), ... ,ucfbM(..), UC_FACTOR)`.