sig
  type kind
  val simple :
    ?color:Mlpost.Color.t ->
    ?brush:Mlpost.Brush.t ->
    ?pen:Mlpost.Pen.t ->
    ?dashed:Mlpost.Dash.t -> Mlpost.Path.t -> Mlpost.Command.t
  val draw :
    ?kind:Mlpost.Arrow.kind ->
    ?tex:string ->
    ?pos:float ->
    ?anchor:Mlpost.Command.position -> Mlpost.Path.t -> Mlpost.Command.t
  type ('a, 'b) arrow_from_to =
      ?kind:Mlpost.Arrow.kind ->
      ?tex:string ->
      ?pos:float ->
      ?anchor:Mlpost.Command.position ->
      ?style:Mlpost.Path.joint ->
      ?outd:Mlpost.Path.direction ->
      ?ind:Mlpost.Path.direction ->
      ?sep:Mlpost.Num.t -> '-> '-> Mlpost.Command.t
  val point_to_point :
    (Mlpost.Point.t, Mlpost.Point.t) Mlpost.Arrow.arrow_from_to
  val box_to_box : (Mlpost.Box.t, Mlpost.Box.t) Mlpost.Arrow.arrow_from_to
  val point_to_box :
    (Mlpost.Point.t, Mlpost.Box.t) Mlpost.Arrow.arrow_from_to
  val box_to_point :
    (Mlpost.Box.t, Mlpost.Point.t) Mlpost.Arrow.arrow_from_to
  val classic : Mlpost.Arrow.kind
  val triangle : Mlpost.Arrow.kind
  val triangle_full : Mlpost.Arrow.kind
  val implies : Mlpost.Arrow.kind
  val iff : Mlpost.Arrow.kind
  type head_description
  val make_head :
    ?cut:Mlpost.Path.t -> Mlpost.Command.t -> Mlpost.Arrow.head_description
  type head =
      Mlpost.Point.t -> Mlpost.Point.t -> Mlpost.Arrow.head_description
  val head_classic :
    ?color:Mlpost.Color.t ->
    ?brush:Mlpost.Brush.t ->
    ?pen:Mlpost.Pen.t ->
    ?dashed:Mlpost.Dash.t ->
    ?angle:float -> ?size:Mlpost.Num.t -> Mlpost.Arrow.head
  val head_triangle :
    ?color:Mlpost.Color.t ->
    ?brush:Mlpost.Brush.t ->
    ?pen:Mlpost.Pen.t ->
    ?dashed:Mlpost.Dash.t ->
    ?angle:float -> ?size:Mlpost.Num.t -> Mlpost.Arrow.head
  val head_triangle_full :
    ?color:Mlpost.Color.t ->
    ?angle:float -> ?size:Mlpost.Num.t -> Mlpost.Arrow.head
  val empty : Mlpost.Arrow.kind
  val add_line :
    ?brush:Mlpost.Brush.t ->
    ?dashed:Mlpost.Dash.t ->
    ?color:Mlpost.Color.t ->
    ?pen:Mlpost.Pen.t ->
    ?from_point:float ->
    ?to_point:float ->
    ?dist:Mlpost.Num.t -> Mlpost.Arrow.kind -> Mlpost.Arrow.kind
  val add_head :
    ?head:Mlpost.Arrow.head -> Mlpost.Arrow.kind -> Mlpost.Arrow.kind
  val add_foot :
    ?head:Mlpost.Arrow.head -> Mlpost.Arrow.kind -> Mlpost.Arrow.kind
  val add_belt :
    ?clip:bool ->
    ?rev:bool ->
    ?point:float ->
    ?head:Mlpost.Arrow.head -> Mlpost.Arrow.kind -> Mlpost.Arrow.kind
  val draw_thick :
    ?style:Mlpost.Path.joint ->
    ?boxed:bool ->
    ?line_color:Mlpost.Color.t ->
    ?fill_color:Mlpost.Color.t ->
    ?outd:Mlpost.Path.direction ->
    ?ind:Mlpost.Path.direction ->
    ?width:Mlpost.Num.t ->
    ?head_length:Mlpost.Num.t ->
    ?head_width:Mlpost.Num.t ->
    Mlpost.Point.t -> Mlpost.Point.t -> Mlpost.Command.t
end