Well-founded semantics
In logic programming, the well-founded semantics is one definition of how we can make conclusions from a set of logical rules. In logic programming, we give a computer a set of facts, and a set of "inference rules" about how these facts relate. There are several different ways that we might want the computer to apply these rules; the well-founded semantics is one of these ways.
History
The well-founded semantics was defined by Van Gelder, et al. in a 1991 paper.[1]
Relations to other models
The well-founded semantics can be viewed as a three-valued version of the stable model semantics.[2] Instead of only assigning propositions true or false, it also allows for a value representing ignorance.
For example, if we know that
Specimen A is a moth if specimen A does not fly during daylight.
but we do not know whether or not specimen A flies during the day, the well-founded semantics would assign the proposition ``specimen A is a moth`` the value bottom which is neither true nor false.
Applications
The well-founded semantics is also a way of making safe inferences in the presence of contradictory data such as noisy data, or data acquired from different experts who may posit differing opinions. Many two-valued semantics simply won't consider such a problem state workable. The well-founded semantics, however, has a built-in mechanism to circumvent the presence of the contradictions and proceeds to derive as many two-valued facts as possible, even though some consequences may remain unknown.
Complexity and algorithms
The fastest known algorithm to compute the WF-Semantics in general, is of quadratic complexity.