iterate näher betrachtet werden.
iterate :: (α -> α) -> α -> [α] iterate f x = x : iterate f (f x)
iterate f x = x : map f (iterate f x)
iterate das
gleiche Ergebnis liefert. Es muss also überprüft
werde, ob die beiden unenendlichen Listen gleich sind. Allerdings kann diese
Behauptung hier nicht mit Hilfe der der  Induktion bewiesen werden, da kein geeignetes
Argument zur Anwendung des Induktionsbeweises zur Verfügung steht. xs !! n = ys !! n
xs = ⊥ und ys = [⊥]
deutlich. Diese beiden Listen sind unterschiedlich, liefern beim Indizieren mit natürlichen Zahlen jedoch das gleiche Ergebnis und zwar das undefinierte
Element ⊥.approx. Für diese Funktion gilt:approx n xs = xs für alle Listen xs.approx n xs = approx n ys für alle n
auch xs = ys gilt.
xs ⊆ ys 
dadurch bewiesen werden, dass gezeigt wird, dass 
approx n xs ⊆ approx n ys für alle n gilt.
iterate kann folgende Gleichung definiert werden:
iterate f (f x) = map f (iterate f x)
Beweis:
approx n (iterate f (f x)) = approx n (map f (iterate f x))
Fall (0) : Es gilt: approx 0 xs = ⊥ für alle Listen xs
Fall (n + 1): linke Seite: approx (n +1) (iterate f (f x)) = {Definition von iterate} approx (n + 1) (f x : iterate f (f (f x))) = {Definition von approx} f x : approx n (iterate f (f (f x))) = {Induktionshypothese} f x : approx n (map f (iterate f (f x)))
rechte Seite: approx (n + 1) (map f (iterate f x)) = {Definition von iterate} approx (n + 1) (map f (x : iterate f (f x))) = {Definition von map} approx (n + 1) (f x : map f ( iterate f (f x))) = {Definition von approx} f x : approx n (map f (iterate f (f x)))