sig
  module S :
    sig
      type point = float * float
      val ccw : point -> point -> point -> bool
      val in_circle : point -> point -> point -> point -> bool
    end
  type triangulation
  val triangulate : S.point array -> triangulation
  val iter : (S.point -> S.point -> unit) -> triangulation -> unit
  val fold : (S.point -> S.point -> '-> 'a) -> triangulation -> '-> 'a
  val iter_triangles :
    (S.point -> S.point -> S.point -> unit) -> triangulation -> unit
end