sig
  type t = { num : int; den : int; }
  val add : Fractions.t -> Fractions.t -> Fractions.t
  val sub : Fractions.t -> Fractions.t -> Fractions.t
  val mult : Fractions.t -> Fractions.t -> Fractions.t
  val inv : Fractions.t -> Fractions.t option
  val div : Fractions.t -> Fractions.t -> Fractions.t option
  val is_equal : Fractions.t -> Fractions.t -> bool
  val of_int : int -> Fractions.t
  val is_zero : Fractions.t -> bool
  val one : Fractions.t
  val zero : Fractions.t
end