                            :is-random-replacement true))))))
 
 
+

                :gecco2016 gecco2016-diversifying?
                :three-gens-diff-diffs three-gens-diff-diffs-diversifying?
                :three-gens-same-inputs-diff-diffs three-gens-same-inputs-diff-diffs-diversifying?
                :three-gens-some-diff-diffs three-gens-some-diff-diffs-diversifying?
                :size-and-instruction size-and-instruction-diversifying?
                :three-gens-size-and-instruction three-gens-size-and-instruction-diversifying?

      (and (> (reduce min diffs) 0)
           (apply distinct? diffs)))))

(defn four-gens-same-inputs-diff-diffs-diversifying?
  [ind argmap]
  (let [g (:genome ind)
        make-child #(produce-child-genome-by-autoconstruction % g g argmap)
        diff #(expressed-difference %1 %2 argmap)
        c1 (make-child g)
        c2 (make-child g)
        gc1 (make-child c1)
        gc2 (make-child c2)
        ggc1 (make-child gc1)
        ggc2 (make-child gc2)
        c1-diff (diff g c1)
        c2-diff (diff g c2)
        gc1-diff (diff c1 gc1)
        gc2-diff (diff c2 gc2)
        ggc1-diff (diff gc1 ggc1)
        ggc2-diff (diff gc2 ggc2)
        diffs [c1-diff c2-diff gc1-diff gc2-diff ggc1-diff ggc2-diff]]
    (assoc ind :diversifying
      (and (> (reduce min diffs) 0)
           (apply distinct? diffs)))))

(defn three-gens-some-diff-diffs-diversifying?
  [ind argmap]
  (let [g (:genome ind)
