Modified arityOp mechanism to use substitution instead of discrete ops.  This is much cleaner.
Added function constraints.