let coefficient_choose p a =
    try
      List.iter
        (fun m ->
           let q = coefficient_of_mono m in
           let x = variable_of_mono m in
             if p q x then raise(FoundQ(q)))
        (nonconstant_monomials_of a);
      raise Not_found
    with
        FoundQ(q) -> q