Logic programming
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  from the facts and rules, the system will assume that its negation is true.