sig type t val euclid : Euclid.S.t -> Euclid.S.t -> Euclid.S.t * Euclid.S.t * Euclid.S.t val solve : Euclid.S.t list -> Euclid.S.t -> (Euclid.S.t * Euclid.S.t list) option end