functions of one variable:

    -   trigonometric: $\sin, \cos, \tan$

    -   inverse trigonometric (cyclometric): $\arcsin, \arccos, \arctan$

    -   hyperbolic: $\sinh, \cosh, \operatorname{arsinh}, \operatorname{arcosh}, \operatorname{tgh}, \operatorname{artgh}$

    -   $\sqrt{\quad}  \;, \; \lg_2 \; , \;  \ln \;, \; \exp$

    -   usually unnamed functions: $1/x, x+1, -x, x^2, 2x, x^x \ldots$

6.  function composition

The choice of complex instead of real field is justified by mathematical simplicity. In practical numerical implementation it might be sub-optimal, due to reduced numerical performance and still missing implementation of some elementary functions (e.g: `clog2`) in standard libraries [@glibc]. Last item in the above list, function composition, is important for completeness. E.g: $\ln{(\ln{(\ln{x})})}$ is well-defined elementary expression, although rarely used in practice. No special functions are used.

Particularly troublesome are sets of symbols related to integers and rationals, as they both are potentially infinite. Without proper handling enumeration quickly get stuck on rational approximations with large integer numerator/denominator. Therefore, we must restrict to some ”small” subset of them. Standard computer languages (C, C++, Fortran) use ”small” integers still too large from our point of view, e.g. 8-bit signed and unsigned ones. Complexity of numbers 0, $2^{7}=128$, 188, …is identical using such an approach. The other extreme follows reductionist definition 