test = do
  quickCheck $ \n (NonNegative i) -> n == (sharp i . flat i   $ n)
  quickCheck $ \n (NonNegative i) -> n == (raise i . lower i  $ n)
  quickCheck $ \n (NonNegative i) -> n == (halve i . double i $ n)
  quickCheck $ \n (NonNegative i) -> n == (dot i   . undot i  $ n)

  quickCheck $ \n (Positive i) -> Duration n > Duration (halve i n)
  quickCheck $ \n (Positive i) -> Duration n < Duration (dot i n)
  quickCheck $ \n (Positive i) -> Duration n < Duration (double i n)
  quickCheck $ \n (Positive i) -> Duration n > Duration (undot i n)
  quickCheck $ \n (Positive i) -> Location n < Location (raise i n)
  quickCheck $ \n (Positive i) -> Location n > Location (lower i n)
  quickCheck $ \n (Positive i) -> Pitch n < Pitch (sharp i n)
  quickCheck $ \n (Positive i) -> Pitch n > Pitch (flat i n)
  
  quickCheck $ \n (Positive i) -> i == (sharp i n ~-~ n)
  quickCheck $ \n (Positive i) -> i == (raise i n #-# n)
test = do
  quickCheck $ \n (NonNegative i) -> n == (sharp i . flat i   $ n)
  quickCheck $ \n (NonNegative i) -> n == (raise i . lower i  $ n)
  quickCheck $ \n (NonNegative i) -> n == (halve i . double i $ n)
  quickCheck $ \n (NonNegative i) -> n == (dot i   . undot i  $ n)

  quickCheck $ \n (Positive i) -> Duration n > Duration (halve i n)
  quickCheck $ \n (Positive i) -> Duration n < Duration (dot i n)
  quickCheck $ \n (Positive i) -> Duration n < Duration (double i n)
  quickCheck $ \n (Positive i) -> Duration n > Duration (undot i n)
  quickCheck $ \n (Positive i) -> Location n < Location (raise i n)
  quickCheck $ \n (Positive i) -> Location n > Location (lower i n)
  quickCheck $ \n (Positive i) -> Pitch n < Pitch (sharp i n)
  quickCheck $ \n (Positive i) -> Pitch n > Pitch (flat i n)
  
  quickCheck $ \n (Positive i) -> i == (sharp i n ~-~ n)
  quickCheck $ \n (Positive i) -> i == (raise i n #-# n)
test = do
  quickCheck $ \n (NonNegative i) -> n == (sharp i . flat i   $ n)
  quickCheck $ \n (NonNegative i) -> n == (raise i . lower i  $ n)
  quickCheck $ \n (NonNegative i) -> n == (halve i . double i $ n)
  quickCheck $ \n (NonNegative i) -> n == (dot i   . undot i  $ n)

  quickCheck $ \n (Positive i) -> Duration n > Duration (halve i n)
  quickCheck $ \n (Positive i) -> Duration n < Duration (dot i n)
  quickCheck $ \n (Positive i) -> Duration n < Duration (double i n)
  quickCheck $ \n (Positive i) -> Duration n > Duration (undot i n)
  quickCheck $ \n (Positive i) -> Location n < Location (raise i n)
  quickCheck $ \n (Positive i) -> Location n > Location (lower i n)
  quickCheck $ \n (Positive i) -> Pitch n < Pitch (sharp i n)
  quickCheck $ \n (Positive i) -> Pitch n > Pitch (flat i n)
  
  quickCheck $ \n (Positive i) -> i == (sharp i n ~-~ n)
  quickCheck $ \n (Positive i) -> i == (raise i n #-# n)