Methods, systems, and apparatus, including computer programs encoded on computer storage media, for computing transitive closures of relations. One of the methods includes initializing the transitive closure F of an initial iteration with the tuples in another relation f. New first tuples and new second tuples are iteratively computed until no new first tuples are generated, including: generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration, generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and adding the new first tuples and the new second tuples to F of a current iteration.
Please help me write a proper abstract based on the patent claims. CLAIM: 1. A computer-implemented method comprising: receiving a request to compute a transitive closure F of a relation f, wherein the relation f includes tuples that each relate a source element s to a destination element d; initializing F of an initial iteration with the tuples in f; initializing an auxiliary relation of the initial iteration with the tuples in f; iteratively computing new first tuples and new second tuples on each iteration until no new first tuples are generated, including: generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration, generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and adding the new first tuples and the new second tuples to F of a current iteration; and providing an indication that the tuples in F of the current iteration represent the transitive closure off. 2. The method of claim 1, further comprising: generating evaluation predicates that include: a first predicate that when evaluated generates the new first tuples, a second predicate that when evaluated generates the new second tuples, and an Fn+1 predicate that when evaluated generates a relation having tuples in Fn, tuples generated by the first predicate, and tuples generated by the second predicate, wherein iteratively computing new first tuples and new second tuples comprises iteratively evaluating the evaluation predicates. 3. The method of claim 2, wherein: the first predicate is defined by: ψ1(s,d):—f(s,d) ψn+1(s,d):—exists(a: ψn(s,a), ψn(a,d)), Fn(s,d), and the second predicate is defined by: F1(s,d):—f(s, d) Fn+1(s,d):—Fn(s,d); ψn+1(s,d); exists(a: ψn+1(s,a), Fn(a,d)). 4. The method of claim 1, further comprising: adding the new first tuples to a new auxiliary relation for a current iteration. 5. The method of claim 1, wherein the new first tuples for an iteration n includes tuples representing 2n chained uses of f. 6. The method of claim 1, wherein the second tuples for an iteration n includes tuples representing between 2n and 2n+1 chained uses of f. 7. The method of claim 1, further comprising computing the transitive relation off while generating duplicate tuples only due to branches and loops. 8. The method of claim 1, further comprising computing the transitive relation of f in O(log2(lsp)) iterations, wherein lsp represents a length of a longest shortest path of tuples in F. 9. A system comprising: one or more computers and one or more storage devices storing instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations comprising: receiving a request to compute a transitive closure F of a relation f, wherein the relation f includes tuples that each relate a source element s to a destination element d; initializing F of an initial iteration with the tuples in f; initializing an auxiliary relation of the initial iteration with the tuples in f; iteratively computing new first tuples and new second tuples on each iteration until no new first tuples are generated, including: generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration, generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and adding the new first tuples and the new second tuples to F of a current iteration; and providing an indication that the tuples in F of the current iteration represent the transitive closure off. 10. The system of claim 9, wherein the operations further comprise: generating evaluation predicates that include: a first predicate that when evaluated generates the new first tuples, a second predicate that when evaluated generates the new second tuples, and an Fn+1 predicate that when evaluated generates a relation having tuples in Fn, tuples generated by the first predicate, and tuples generated by the second predicate, wherein iteratively computing new first tuples and new second tuples comprises iteratively evaluating the evaluation predicates. 11. The system of claim 10, wherein: the first predicate is defined by: ψ1(s,d):—f(s,d) ψn+1(s,d):—exists(a: ψn(s,a), ψn(a,d)), Fn(s,d), and the second predicate is defined by: F1(s,d):—f(s, d) Fn+1(s,d):—Fn(s,d); ψn+1(s,d); exists(a: ψn+1(s,a), Fn(a,d)). 12. The system of claim 9, wherein the operations further comprise: adding the new first tuples to a new auxiliary relation for a current iteration. 13. The system of claim 9, wherein the new first tuples for an iteration n includes tuples representing 2n chained uses of f. 14. The system of claim 9, wherein the second tuples for an iteration n includes tuples representing between 2n and 2n+1 chained uses of f. 15. The system of claim 9, wherein the operations further comprise computing the transitive relation off while generating duplicate tuples only due to branches and loops. 16. The system of claim 9, wherein the operations further comprise computing the transitive relation of f in O(log2(lsp)) iterations, wherein lsp represents a length of a longest shortest path of tuples in F. 17. A computer program product, encoded on one or more non-transitory computer storage media, comprising instructions that when executed by one or more computers cause the one or more computers to perform operations comprising: receiving a request to compute a transitive closure F of a relation f, wherein the relation f includes tuples that each relate a source element s to a destination element d; initializing F of an initial iteration with the tuples in f; initializing an auxiliary relation of the initial iteration with the tuples in f; iteratively computing new first tuples and new second tuples on each iteration until no new first tuples are generated, including: generating new first tuples on each iteration by matching destination elements of tuples in the auxiliary relation of a previous iteration with source elements of tuples in the auxiliary relation of the previous iteration, generating second tuples on each iteration by matching destination elements of the new first tuples with source elements of tuples in F of the previous iteration, and adding the new first tuples and the new second tuples to F of a current iteration; and providing an indication that the tuples in F of the current iteration represent the transitive closure off. 18. The computer program product of claim 17, wherein the operations further comprise: generating evaluation predicates that include: a first predicate that when evaluated generates the new first tuples, a second predicate that when evaluated generates the new second tuples, and an Fn+1 predicate that when evaluated generates a relation having tuples in Fn, tuples generated by the first predicate, and tuples generated by the second predicate, wherein iteratively computing new first tuples and new second tuples comprises iteratively evaluating the evaluation predicates. 19. The computer program product of claim 18, wherein: the first predicate is defined by: ψ1(s,d):—f(s,d) ψn+1(s,d):—exists(a: ψn(s,a), ψn (a,d)), Fn(s,d), and the second predicate is defined by: F1(s,d):—f(s, d) Fn+1(s,d):—Fn(s,d); ψn+1(s,d); exists(a: ψn+1(s,a), Fn(a,d)). 20. The computer program product of claim 17, wherein the operations further comprise: adding the new first tuples to a new auxiliary relation for a current iteration. 21. The computer program product of claim 17, wherein the new first tuples for an iteration n includes tuples representing 2n chained uses of f. 22. The computer program product of claim 17, wherein the second tuples for an iteration n includes tuples representing between 2n and 2n+1 chained uses of f. 23. The computer program product of claim 17, wherein the operations further comprise computing the transitive relation off while generating duplicate tuples only due to branches and loops. 24. The computer program product of claim 17, wherein the operations further comprise computing the transitive relation of f in O(log2(lsp)) iterations, wherein lsp represents a length of a longest shortest path of tuples in F.