Term reasoning.
	i.  Equality
	ii. Inductive proofs (well-founded sets)

Pure literal elimination.

Algorithms and complexity.
  As a test, take known algorithms from a textbook, with known complexity,
  and try to write in logic such that DTP solves query with the same
  complexity.

Disjunctive answers, when looking for ALL-ANSWERS
	i.  Return generalized answers as well as specific,
	    i.e. answer without unification: (or (p a ?x) (p ?x a))
	    with query (p ?i ?j) goes to (or ...) as well as (p a a)
	ii. Eliminate subsumed answers, so ((or a b) b) becomes just (b)

Meta/modal kb.  Perhaps learned over time (constant/var map -> # answers)

Dave Smith (AIJ Dec 86)
	i.  Eliminate duplicate answers
	ii. Recursion control on functions (term rewriting)

DE2Smith Thesis
   Conjunct ordering

Alon Levy's thesis (caching database lookups)

Independent subgoals (like Ginsberg's planner)

Procedural attachment
	i. Merged with slaving causes subtle bugs:
	    G ?x        G 2
	     |           |
	   (+ ?x 3)    (+ 2 3)
	   Ground expression could have been evaluated, but right
	   subtree is not expanded because G 2 gets slaved to G ?x,
	   which unfortunately doesn't return any answers.  Problem
	   is that no inverter for + exists.

Answer cache has (A) assumptions, (B) binding lists

Use MVL for database operations (discrimination net)

Substitute DTP for MVL's first-order theorem prover

Likelihoods
   Probability calculation -> Principle of Least Surprise

Decision Theory (#2 + computation cost)

General Caching
   Count access, utility estimate from first time solved problem

Constraint satisfaction
   Dynamic backtracking, map coloring, crosswords
   Arc consistency
   Bit vector implementation of domains (one-step lookahead / arc consist)
