Seja um conjunto A = {a,b,c} e R uma relação em A onde R = {(a,b), (b,c)}, o fecho transitivo deve conter a tupla (a,c), uma vez que (a,b) e (b,c) pertencem à R, então, por transitividade, (a,c) deve estar na nova relação: R+ = {(a,b),(b,c),(a,c)} Já o fecho reflexivo de R resulta em {(a,b),(b,c),(a,a),(b,b),(c,c)} O fecho transitivo-reflexivo será {(a,b),(b,c),(a,c),(a,a),(b,b),(c,c)}
Já a função flatten, o exemplo é o seguinte: seja A uma lista A=[1,[2,[3,[4]]]], flatten(A) = [1,2,3,4] (obs. não importando a profundidade do aninhamento das listas, a função deve sempre retornar uma lista plana)