Analysis of functionally defined operations
-------------------------------------------

This analysis checks whether an operation is defined in a pure functional
manner.

An operation is functionally defined if its definition does not contain
overlapping left-hand sides or free variables, and it depends only
on functionally defined operations.

This analysis is stronger than the `Deterministic` analysis,
since the latter classifies an operation as deterministic
if calls to possibly non-deterministic operations are wrapped
with encapsulated search operators, whereas this analysis
does not allow the use of any logic features.
