Programs consist of a set of rules and facts. In most cases, logic programming uses what is called negation as failure or "weak negation:" This means that if it is not possible to derive some clause formula_1 from the facts and rules, the system will assume that its negation is true.