type point2d = int * int type vector2d = int * int module Point2d : sig type t = point2d end module Vector2d : sig type t = vector2d val add : int * int -> int * int -> int * int val sub : int * int -> int * int -> int * int val mul : int * int -> int -> int * int val div : int * int -> int -> int * int module Infix : sig val ( +. ) : int * int -> int * int -> int * int val ( -. ) : int * int -> int * int -> int * int val ( *. ) : int * int -> int -> int * int val ( /. ) : int * int -> int -> int * int end end val interval : int * int module Curves2d : sig module Bezier : sig module Linear : sig val pnt : (int * int) * (int * int) -> int -> int * int end end end