Tabling is a memoization technique for Prolog and in general Tabled Logic Programming that improves efficiency and termination.