diff --git a/checkers.cabal b/checkers.cabal
--- a/checkers.cabal
+++ b/checkers.cabal
@@ -1,5 +1,5 @@
 Name:                checkers
-Version:             0.1.1
+Version:             0.1.2
 Cabal-Version:       >= 1.2
 Synopsis:            Check properties on standard classes and data structures.
 Category:            Testing
@@ -10,9 +10,6 @@
   for common data types.
   .
   Project wiki page: <http://haskell.org/haskellwiki/checkers>
-  .
-  The module documentation pages have links to colorized source code and
-  to wiki pages where you can read and contribute user comments.  Enjoy!
   .
   &#169; 2008 by Conal Elliott; BSD3 license.
   .
diff --git a/src/Test/QuickCheck/Checkers.hs b/src/Test/QuickCheck/Checkers.hs
--- a/src/Test/QuickCheck/Checkers.hs
+++ b/src/Test/QuickCheck/Checkers.hs
@@ -25,6 +25,7 @@
   , FracT, NumT, OrdT, T
   -- * Generalized equality
   , EqProp(..), eq
+  , BinRel, reflexive, transitive, symmetric, antiSymmetric
   , leftId, rightId, bothId, isAssoc, isCommut, commutes
   , MonoidD, monoidD, endoMonoidD, homomorphism
   , idempotent, idempotent2, idemElem
@@ -209,6 +210,47 @@
 
 -- Other types
 -- instance EqProp a => EqProp (S.Stream a) where (=-=) = eqModels
+
+-- Binary relation
+type BinRel  a = a -> a -> Bool
+
+-- | Reflexive property: @a `rel` a@
+reflexive :: (Arbitrary a, Show a) =>
+             BinRel a -> Property
+reflexive rel = property $ \ a -> a `rel` a
+
+-- | Transitive property: @a `rel` b && b `rel` c ==> a `rel` c@.
+-- Generate @a@ randomly, but use @gen a@ to generate @b@ and @gen b@ to
+-- generate @c@.  @gen@ ought to satisfy @rel@ fairly often.
+transitive :: (Arbitrary a, Show a) =>
+              BinRel a -> (a -> Gen a) -> Property
+transitive rel gen =
+  property $ \ a ->
+    forAll (gen a) $ \ b ->
+      forAll (gen b) $ \ c ->
+        (a `rel` b) && (b `rel` c) ==> (a `rel` c)
+
+-- | Symmetric property: @a `rel` b ==> b `rel` a@.  Generate @a@
+-- randomly, but use @gen a@ to generate @b@.  @gen@ ought to satisfy
+-- @rel@ fairly often.
+symmetric :: (Arbitrary a, Show a) =>
+             BinRel a -> (a -> Gen a) -> Property
+symmetric rel gen =
+  property $ \ a ->
+    forAll (gen a) $ \ b ->
+      (a `rel` b) ==> (b `rel` a)
+
+-- | Symmetric property: @a `rel` b && b `rel` a ==> a == b@.  Generate
+-- @a@ randomly, but use @gen a@ to generate @b@.  @gen@ ought to satisfy
+-- @rel@ fairly often.
+antiSymmetric :: (Arbitrary a, Show a, Eq a) =>
+                 BinRel a -> (a -> Gen a) -> Property
+antiSymmetric rel gen =
+  property $ \ a ->
+    forAll (gen a) $ \ b ->
+      (a `rel` b) && (b `rel` a) ==> a == b
+
+
 
 
 -- | Has a given left identity, according to '(=-=)'
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
@@ -16,8 +16,8 @@
 ----------------------------------------------------------------------
 
 module Test.QuickCheck.Classes
-  (
-    monoid, monoidMorphism, semanticMonoid
+  ( ordRel, ord
+  , monoid, monoidMorphism, semanticMonoid
   , functor, functorMorphism, semanticFunctor, functorMonoid
   , applicative, applicativeMorphism, semanticApplicative
   , monad, monadMorphism, semanticMonad, monadFunctor
@@ -37,6 +37,24 @@
 
 import Test.QuickCheck.Checkers
 import Test.QuickCheck.Instances.Char ()
+
+
+-- | Total ordering.  @gen a@ ought to generate values @b@ satisfying @a
+-- `rel` b@ fairly often.
+ordRel :: forall a. (Ord a, Show a, Arbitrary a, EqProp a) =>
+          BinRel a -> (a -> Gen a) -> TestBatch
+ordRel rel gen =
+  ( "ord"
+  , [ ("reflexive"    , reflexive     rel    )
+    , ("transitive"   , transitive    rel gen)
+    , ("antiSymmetric", antiSymmetric rel gen)
+    ]
+  )
+
+-- | Total ordering
+ord :: forall a. (Ord a, Show a, Arbitrary a, EqProp a) =>
+       (a -> Gen a) -> TestBatch
+ord = ordRel (<=)
 
 
 -- | Properties to check that the 'Monoid' 'a' satisfies the monoid
diff --git a/wikipage.tw b/wikipage.tw
--- a/wikipage.tw
+++ b/wikipage.tw
@@ -2,12 +2,12 @@
 
 == Abstract ==
 
-'''checkers''' is a library for reusable QuickCheck properties, particularly for standard type classes (class laws and [http://conal.net/papers/simply-reactive class morphisms]).  For instance, most of [[Reactive]] can be specified and tested using just these properties.  Checkers also lots of support for randomly generating data values (thanks to Thomas Davie).
+'''checkers''' is a library for reusable QuickCheck properties, particularly for standard type classes (class laws and [http://conal.net/papers/simply-reactive class morphisms]).  For instance, a good deal of [[Reactive]] can be specified and tested using just these properties.  Checkers also lots of support for randomly generating data values (thanks to Thomas Davie).
 
 Besides this wiki page, here are more ways to find out about checkers:
-* Read [http://code.haskell.org/checkers/doc/html/ the library documentation].
-* Get the code repository: '''<tt>darcs get http://code.haskell.org/checkers</tt>'''.
-* Install from [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/checkers Hackage].
-* See the [[checkers/Versions| version history]].
+* Visit the [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/checkers Hackage page] for library documentation and to download & install.
+* Or install with <tt>cabal install checkers</tt>.
+* Get the code repository: <tt>darcs get http://code.haskell.org/checkers</tt>.
+<!-- * See the [[checkers/Versions| version history]]. -->
 
 Please leave comments at the [[Talk:checkers|Talk page]].
