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_map X Y (f: nat -> X) (g: X -> Y) k:
map g (tab f k) = tab (fun x => g (f x)) k.