theory Iterate imports Main begin consts iterate :: "nat \\ ('a \\ 'a) \\ 'a \\ 'a" primrec "iterate 0 f a = a" "iterate (Suc n) f a = f (iterate n f a)" end