prop_commutative :: SetOf e s => (s -> s -> s) -> s -> s -> Bool
prop_commutative op x y = (x `op` y) `sameAs` (y `op` x)
prop_commutative :: SetOf e s => (s -> s -> s) -> s -> s -> Bool
prop_commutative op x y = (x `op` y) `sameAs` (y `op` x)
prop_commutative op x y = (x `op` y) `sameAs` (y `op` x)