check call graph
	deterministic preds should only call deterministic preds
	except before cuts (preds which are called can be user
	defined deterministic preds or system preds like functor/3).

preds which have no eager/lazy det declarations should be output
unchanged

preds which have eager/lazy deterministic declarations and when
declarations should be checked to make sure they are binding
deterministic.

Currently thhings before cuts have $sn and $fn around them - this is not
necessary for deterministic things (eg <).

clean up and_body, or_body and pnp.nl

use debugging library, not assert2.nl


All this is out of date:
=======================

(combine with groundness analyser??)
Fix bugs (see kemps).
clean up and_body, or_body and pnp.nl
insert pcall
check call graph
check procs with whens are binding det (declare det but dont change?)
make ledet.nl binding det

All this is *really* out of date:
=================================

Insert var/ground tests in indet guards.

Make cuts optional for indet (default is at start like other langs).

Implement det with modes.

Use i/o instead of in and out?

Fix so repeated vars are not moved into guard unless they are both input
(see merge [] clauses).

Make det smarter (with <, >=, =, ~=, isAtomic, isTerm,....).

Make det handle cut (similar to indet).

Make more robust ('my brain hurts ... $VAR(_)........)

Print out preds not declared (in)det.
