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_ext {X} (f g: nat -> X) n: (forall x, f x = g x) -> tab f n = tab g n.