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 \(s \in S\) and every \(t \in f(s)\).

If \(x \in S\), then an element \(y \in S\) is said to be reachable from \(x\) if there is a path \(x \to y\) 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]