+ (is (= (length the-list) (length (reverse the-list))))
+ (is (equalp the-list (intersection the-list (reverse the-list)))))
+--------------------------------
+
+The xref:OP_FOR-ALL[`for-all`] macro is the main driver behind
+fiveam's random testing functionality. It will execute its body a
+certian number of time (`*num-trials*` times) generating new data each
+time.
+
+The generators themselves are functions, usually lambdas, which, when
+called, produce a fresh datum. The standard generators included in
+fivame have been written in a way that's its easy to combine them. For
+examples the gen-list function, which returns a list generator, takes
+as its :length parameter and integer generator, which is what the
+gen-integer function returns.
+
+Sometime though it's not enough to generate values independantly,
+sometimes we want, for example, two numbers where one is less than the
+other. Let's say we were testing a simple max function, we could start
+out with this:
+
+--------------------------------
+(for-all ((a (gen-integer))
+ (b (gen-integer)))
+ (is-true (if (= a (max a b))
+ (<= a b)
+ (<= b a))))
+--------------------------------
+
+Which works, but it might be cleaner to generate two randowm numbers
+and require that one be less than the other:
+