Section Tabulate.
Implicit Type  X: Type.
Fixpoint tab {X} (f: nat -> X) k  :=
match k with
| 0 => nil
| S n => tab f n ++ [f n]
end.

Lemma tab_plus X (f: nat -> X) n m:
tab f (n + m) = tab f n ++ tab (fun k => f (n + k)) m.