my-server
← Wiki

Well-founded semantics

In computer science, the well-founded semantics is a three-valued semantics for logic programming, which gives a precise meaning to general logic programs.

History

The well-founded semantics was defined by Van Gelder, et al. in 1988. The Prolog system XSB implements the well-founded semantics since 1997.

Three-valued logic

The well-founded semantics assigns a unique model to every general logic program. However, instead of only assigning propositions true or false, it adds a third value unknown for representing ignorance.

A simple example is the logic program that encodes two propositions <code>a</code> and <code>b</code>, and in which <code>a</code> must be true whenever <code>b</code> is not and vice versa:

neither <code>a</code> nor <code>b</code> are true or false, but both have the truth value unknown. In the two-valued stable model semantics, there are two stable models, one in which <code>a</code> is true and <code>b</code> is false, and one in which <code>b</code> is true and <code>a</code> is false.

Stratified logic programs have a 2-valued well-founded model, in which every proposition is either true or false. This coincides with the unique stable model of the program. The well-founded semantics can be viewed as a three-valued version of the stable model semantics.

Complexity

In 1989, Van Gelder suggested an algorithm to compute the well-founded semantics of a propositional logic program whose time complexity is quadratic in the size of the program. , no general subquadratic algorithm for the problem was known.

References