Transitive ideal closure tool

sage.combinat.tools.transitive_ideal(f, x)[source]

Return a list of all elements reachable from x in the abstract reduction system whose reduction relation is given by the function f.

In more elementary terms:

If S is a set, and f is a function sending every element of S to a list of elements of S, then we can define a digraph on the vertex set S by drawing an edge from s to t for every sS and every tf(s).

If xS, then an element yS is said to be reachable from x if there is a path xy in this graph.

Given f and x, this method computes the list of all elements of S reachable from x.

Note that if there are infinitely many such elements, then this method will never halt.

For more powerful versions, see sage.combinat.backtrack

EXAMPLES:

sage: f = lambda x: [x-1] if x > 0 else []
sage: sage.combinat.tools.transitive_ideal(f, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> from sage.all import *
>>> f = lambda x: [x-Integer(1)] if x > Integer(0) else []
>>> sage.combinat.tools.transitive_ideal(f, Integer(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]