Fixpoint Cobham_to_BC' sl (e : Cobham) : BC :=
match e with
| Zero => comp 1 sl zero nil nil
| Proj n i => proj 1 sl (S i)
| Succ b => comp 1 sl (succ b) nil [proj 1 sl 1]
| Smash => f sl (one_e 1 1)
(BC_dummies 0 1 1 2 (comp 1 2 f_smash' [proj 1 0 0] [proj 1 2 2; proj 1 2 1]))
(BC_dummies 0 1 1 2 (comp 1 2 f_smash' [proj 1 0 0] [proj 1 2 2; proj 1 2 1]))
| Rec g' h0' h1' _ =>
let g  := Cobham_to_BC' (sl - 1) g' in
let h0 := Cobham_to_BC' (S sl) h0' in
let h1 := Cobham_to_BC' (S sl) h1' in
f sl g h0 h1
| Comp n h l => comp 1 sl (Cobham_to_BC' (length l) h)
[proj 1 0 0] (map (Cobham_to_BC' sl) l)
end.
Opaque f.

(* Specifications: *)
Lemma Cobham_to_BC'_inf : forall e sl,
arity e = ok_arity sl ->
arities (Cobham_to_BC' sl e) = ok_arities 1 sl.