sig type t = Mpa.Q.t val euclid : t -> t -> t * t * t val solve : t list -> t -> (t * t list) option end