compatible :: Polynomial -> YesNoMaybe
compatible p = case comp of
            True -> Yes
            False -> case linear p of
                True -> No
                False -> Maybe
        where
        comp = all criteria ms
        (Polynomial ms) = normalize p
        criteria (Monomial c []) = minElement c >= 0 && atIndex c (0,0) > 0 --constant
        criteria (Monomial c _) = minElement c >= 0                         --coefficient

-- | 'monotone' @p@ takes a polynomial and checks if its monotonically increasing
compatible :: Polynomial -> YesNoMaybe
compatible p = case comp of
            True -> Yes
            False -> case linear p of
                True -> No
                False -> Maybe
        where
        comp = all criteria ms
        (Polynomial ms) = normalize p
        criteria (Monomial c []) = minElement c >= 0 && atIndex c (0,0) > 0 --constant
        criteria (Monomial c _) = minElement c >= 0                         --coefficient

-- | 'monotone' @p@ takes a polynomial and checks if its monotonically increasing
compatible p = case comp of
            True -> Yes
            False -> case linear p of
                True -> No
                False -> Maybe
        where
        comp = all criteria ms
        (Polynomial ms) = normalize p
        criteria (Monomial c []) = minElement c >= 0 && atIndex c (0,0) > 0 --constant
        criteria (Monomial c _) = minElement c >= 0                         --coefficient

-- | 'monotone' @p@ takes a polynomial and checks if its monotonically increasing