let const_sign c = try let n = ref (Num.Int 0) in MConst.iter (fun c i -> if i <> 0 then match c with | ConstName _ -> raise Exit | ConstInt a | ConstReal a -> n := Num.add_num (Num.mult_num (Num.Int i) a) !n) c; Some (Num.compare_num !n (Num.Int 0)) with Exit -> None