          :args args}))]))
 
 (defn for-all*
+  "Creates a property (properties are also generators). A property
+  is a generator that generates the result of applying the function
+  under test with the realized arguments. Once realized, the arguments
+  will be applied to `function` with `apply`.
+
+  Example:
+
+    (for-all* [gen/int gen/int] fn [a b] (>= (+ a b) a))
+  "
   [args function]
   (gen/bind (gen/tuple args)
             (apply-gen function)))

(ns simple-check.properties
  (:require [simple-check.generators :as gen]))

;; The fields that should be returned from each test
;; run:
;;

;; stamp: haskell QC nomenclature for stats/values collected
;; callbacks: maybe this is where printing/clojure.test stuff goes?

(defn- apply-gen
  [function]
  (fn [args]
    [:gen (fn [random-seed size]
