Module Push

val chain : blocked:((int * int) -> bool) -> pushable:((int * int) -> bool) -> ?limit:int -> (int * int) -> (int * int) -> (int * int) list option