+let (@@) l1 n = if List.exists (function n' -> n===n') l1 then l1 else l1@[n]
+
+let rec leq_reachable node =
+ function
+ [] -> false
+ | node'::_ when node === node' -> true
+ | (_,_,leq,_)::tl -> leq_reachable node (!leq@tl)
+;;
+
+let rec geq_reachable node =
+ function
+ [] -> false
+ | node'::_ when node === node' -> true
+ | (_,_,_,geq)::tl -> geq_reachable node (!geq@tl)
+;;