prop_associative :: (Eq a, Show a, Arbitrary a) => (a -> a -> a) -> PropBox
prop_associative f = atomProp "associative" prop
  where prop a b c = f a (f b c) == f (f a b) c
prop_associative :: (Eq a, Show a, Arbitrary a) => (a -> a -> a) -> PropBox
prop_associative f = atomProp "associative" prop
  where prop a b c = f a (f b c) == f (f a b) c
prop_associative f = atomProp "associative" prop
  where prop a b c = f a (f b c) == f (f a b) c