Cyclic Terms #
In this file, we define when a PreGroundTerm is cyclic.
This is exactly the case, when a function symbol contains twice in a nested fashion.
For example $h(d, f(g(f(c))))$ is cyclic but $h(f(d), f(c))$ is not.
Cyclic terms are mainly used to define MFA later.
The main result in this file then is cyclic_of_depth_too_big. That is, if a term exceeds a certain depth, then it is necessarily cyclic.
This of course requires that only finitely many different function symbols are usable.
A PreGroundTerm is cyclic if one of its children contains_func the function symbol of the term or if one of its children is already cyclic. Constants are never cyclic.
Equations
- One or more equations did not get rendered due to their size.
- PreGroundTerm.cyclic (FiniteTree.leaf a) = false
Instances For
Consider a (deduplicated) list of possible function symbols and a term. If the depth of the term is at least the number of function symbols + 2, then the term must be cyclic.