The first predicate we look at is good for `picking up' clauses from the current Prolog database. The remainder are useful for destructing and constructing arbitrary Prolog terms.