In 1965, the logician John Alan Robinson discovered something remarkable: you can compress all of logic into a single inference rule. Given two clauses that each contain a complementary literal — one asserts , the other denies — you may combine them into one clause with cancelled out. He called it resolution.
That one rule, applied repeatedly, is enough to decide whether any set of first-order logical clauses has a contradiction hidden in it. Proving a goal then becomes proof by refutation: add the negation of what you want to prove to your axioms, run resolution, and if you derive an empty clause (a contradiction), the original goal must be true.
A decade later, Alain Colmerauer and Robert Kowalski turned this into a programming language: Prolog. You write facts and rules, ask a query, and the engine systematically applies resolution — combined with unification to match variable patterns — until it finds a proof or exhausts all paths. Every Prolog execution is, at its core, a resolution proof search.
Comments
Loading comments...