diff --git a/checkers.cabal b/checkers.cabal
--- a/checkers.cabal
+++ b/checkers.cabal
@@ -1,5 +1,5 @@
 Name:                checkers
-Version:             0.4.9.5
+Version:             0.4.10
 Cabal-Version:       >= 1.6
 Synopsis:            Check properties on standard classes and data structures.
 Category:            Testing
@@ -27,6 +27,10 @@
   hs-Source-Dirs:      src
   Extensions:
   Build-Depends:       base >= 4 && < 5, random, QuickCheck>=2.3, array >= 0.1, semigroupoids >= 5 && < 6
+  if !impl(ghc >= 8.0)
+    build-depends:
+      semigroups          >= 0.18.4  && < 0.19
+
   Exposed-Modules:
                        Test.QuickCheck.Utils
                        Test.QuickCheck.Checkers
diff --git a/src/Test/QuickCheck/Classes.hs b/src/Test/QuickCheck/Classes.hs
--- a/src/Test/QuickCheck/Classes.hs
+++ b/src/Test/QuickCheck/Classes.hs
@@ -17,6 +17,7 @@
 
 module Test.QuickCheck.Classes
   ( ordRel, ord, ordMorphism, semanticOrd
+  , semigroup
   , monoid, monoidMorphism, semanticMonoid
   , functor, functorMorphism, semanticFunctor, functorMonoid
   , apply, applyMorphism, semanticApply
@@ -34,6 +35,7 @@
 import Data.Functor.Alt (Alt ((<!>)))
 import Data.Functor.Bind (Bind ((>>-)), apDefault)
 import qualified Data.Functor.Bind as B (Bind (join))
+import Data.Semigroup (Semigroup ((<>)))
 import Data.Monoid (Monoid (mappend, mempty))
 import Data.Traversable (Traversable (..), fmapDefault, foldMapDefault)
 import Control.Applicative
@@ -111,6 +113,16 @@
                  , ("associativity" , isAssoc (mappend :: Binop a))
                  ]
                )
+
+-- | Properties to check that the 'Semigroup' 'a' satisfies the semigroup
+-- properties.  The argument value is ignored and is present only for its
+-- type.
+semigroup :: forall a. (Semigroup a, Show a, Arbitrary a, EqProp a) =>
+             a -> TestBatch
+semigroup = const ( "semigroup"
+                  , [("associativity", isAssoc ((<>) :: Binop a))
+                    ]
+                  )
 
 -- | Monoid homomorphism properties.  See also 'homomorphism'.
 monoidMorphism :: (Monoid a, Monoid b, EqProp b, Show a, Arbitrary a) =>
