Fixpoint Sem (e: Cobham) (vl:list bs) : bs :=
match e with
| Zero => nil
| Proj n j => nth j vl nil
| Succ b => b :: hd nil vl
| Smash => smash_bs (hd nil vl) (hd nil (tl vl))
| Rec g h0 h1 j =>
sem_Rec (Sem g) (Sem h0) (Sem h1) (hd nil vl) (tail vl)
| Comp _ h l => Sem h (List.map (fun e => Sem e vl) l)
end.

Lemma Sem_add_zero : forall e n,
arity e = ok_arity n ->
forall l,
length l <= n ->
Sem e l = Sem e (l ++ (map (fun e => nil) (seq 0 (n - length l)))).