added Syntax.mk_fresh_{bool_,int_,}{tpat,tvar}
Z3 pure operations are pure (was: not pure)
support for pure checks and fresh vars side-conditions

Also a bugfix in the way the pure check was handled in Prover.
support for "equivalence" rules

Convenience function for clients.
added Debug.prof_fun4

because why not?
heuristic for more powerful matching

The heuristic attempts to use current equalities to improve matching.