Clausura reflexiva
Usando el tipo de las relaciones binarias, definir la función
| 
					 1  | 
						   clausuraReflexiva :: Eq a => Rel a -> Rel a  | 
					
tal que clausuraReflexiva r es la clausura reflexiva de r; es decir, la menor relación reflexiva que contiene a r. Por ejemplo,
| 
					 1 2  | 
						   λ> clausuraReflexiva (R ([1,3],[(1,1),(3,1)]))    R ([1,3],[(1,1),(3,1),(3,3)])  | 
					
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
| 
					 1 2 3 4 5 6 7  | 
						import Relaciones_binarias (Rel(R)) import Data.List (union) import Test.QuickCheck (quickCheck) clausuraReflexiva :: Eq a => Rel a -> Rel a clausuraReflexiva (R (u,g)) =   R (u, g `union` [(x,x) | x <- u])  | 
					
| 
					 1 2 3 4 5 6 7 8 9  | 
						from typing import TypeVar from src.Relaciones_binarias import Rel A = TypeVar('A') def clausuraReflexiva(r: Rel[A]) -> Rel[A]:     (u, g) = r     return (u, list(set(g) | {(x, x) for x in u}))  |