There are many forms of uncertainty; for example there is vagueness (fuzziness in particular), probability, and so on . Furthermore there are a lot of theoretical models to simulate the various kinds of uncertainty. To stay flexible in RELFUN , 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) :
(uc (c ..) (ucfb1 ..) ... (ucfbM ..) UC_FACTOR)
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:
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:
(ft (c ..) (combrule (ucfb1 ..) ... (ucfbM ..) UC_FACTOR))
c(..) :- combrule(ucfb1(..), ... ,ucfbM(..), UC_FACTOR).