Condensed detachment

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

Condensed detachment (Rule D) is a method of finding the most general possible conclusion given two formal logical statements. It was developed by the Irish logician Carew Meredith in the 1950s[citation needed] and inspired by the work of Łukasiewicz.

Informal description

A rule of detachment (often referred to as modus ponens) says:
"Given that p implies q, and given p, infer q."

The condensed detachment goes a step further and says:
"Given that p implies q, and given an r, use a unifier of p and r to make p and r the same, then use a standard rule of detachment."

A substitution A that when applied to p produces t, and substitution B that when applied to r produces t, are called unifiers of p and r.

Various unifiers may produce expressions with varying numbers of free variables. Some possible unifying expressions are substitution instances of others. If one expression is a substitution instance of another (and not just a variable renaming), then that other is called "more general".

If the most general unifier is used in condensed detachment, then the logical result is the most general conclusion that can be made in the given inference with the given second expression. (And since any weaker inference you can get is a substitution instance of the most general one, nothing less than the most general unifier is ever used in practice.)

In some logics (such as standard PC)[clarification needed] have a set of defining axioms with the "D-completeness" property. If a set of axioms is D-Complete, then any valid theorems of the system can be generated by condensed detachment alone. Note that "D-completeness" is a property of an axiomatic basis for a system, not an intrinsic property of a logic system itself.

J.A.Kalman proved that any conclusion that can be generated by a sequence of uniform[clarification needed] substitution and modus ponens steps can either be generated by condensed detachment alone, or is a substitution instance of something that can be generated by condensed detachment alone. This makes condensed detachment useful for any logic system that has modus ponens and substitution, regardless of whether or not it is D-complete.

D-notation

Since a given major premise and a given minor premise uniquely determine the conclusion (up to variable renaming), Meredith observed that it was only necessary to note which two statements were involved and that the condensed detachment can be used without any other notation required. This led to the "D-notation" for proofs. This notation uses the "D" operator to mean condensed detachment, and takes 2 arguments, in a standard prefix notation string. For example, if you have four axioms a typical proof in D-notation might look like: DD12D34 which shows a condensed detachment step using the result of two prior condensed detachment steps, the first of which used axioms 1 and 2, and the second of which used axioms 3 and 4.

This notation, besides being used in some automated theorem provers, sometimes appears in catalogs of proofs.

Condensed detachment's use of unification predates the resolution techniques of automated theorem proving.[citation needed]

Advantages

For automated theorem proving condensed detachment has a number of advantages over raw modus ponens and uniform substitution.

At a Modus Ponens and substitution proof you have an infinite number of choices for what you can substitute for variables. This means that you have an infinite number of possible next steps. With condensed detachment there are only a finite number of possible next steps in a proof.[clarification needed]

The D-notation for complete condensed detachment proofs allows easy description of proofs for cataloging and search. A typical complete 30 step proof is less than 60 characters long in D-notation (excluding the statement of the axioms.)

References

  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.
  • Lua error in package.lua at line 80: module 'strict' not found.