In a LogicProgramming system (or a RelationalDatabase, or a ConstraintProgramming system, etc); one builds a collection of *facts* (things held to be true) and *axioms* (rules for deriving additional facts from the set of base facts).
If a theorem can be shown to be true based on the facts and axioms; then it is true.
How do you handle a query that *cannot* be shown from the above (in other words, isn't derivable?)
Two possibilities, the ClosedWorldAssumption and the OpenWorldAssumption.
The ClosedWorldAssumption holds that anything that cannot be shown to be true is false; no explicit declaration of falsehood is needed. Consequently, any query (which terminates) will either return true or false; there is no possibility of "unknown".

CategoryLogic

- Technically, one can ask the system to prove that something is Unknown, or to prove that something is Known, so long as there is a means to represent such a query. It is not a violation of the ClosedWorldAssumption to have
*facts*of the sort Known(X) and Unknown(Y), or even axioms like Forall X: (SomePredicate(X)-> Unknown(OtherPredicate(X))), Forall X: X<->Known(X), etc. The ClosedWorldAssumption does not enforce restrictions on the sort of logic used. However, it cannot answer 'unknown' directly; to make use of such, you'd need to craft your queries correctly -- ask Known(P), or Known(Unknown(P)). - The real difficulty with the ClosedWorldAssumption is that you cannot add information. Everything is known
*a priori*. One cannot assert "oh, yeah! X is known!" without creating a new world and adding this fact to that world, along with all the other facts except the one that said: Unknown(X), which would need to be removed. (If this is done regularly, one would be wise to utilize ModalLogic?, where reasoning over worlds can happen). This is less a problem with the OpenWorldAssumption, where 'unknown' isn't expressed as a fact in the database, but rather as the absence of a fact. --db

- PrologLanguage
- RelationalDatabases (these can be viewed as predicate systems)

CategoryLogic

EditText of this page (last edited July 9, 2010) or FindPage with title or text search