Opaque Mult_e.
Fixpoint Multl_e (ar:nat)(el:list Cobham) : Cobham :=
match el with
| nil => One_e ar
| e' :: el' => Comp ar Mult_e [e'; Multl_e ar el']
end.

(* Specifications: *)
Lemma arity_Multl ar el :
andl (fun e => arity e = ok_arity ar) el ->
arity (Multl_e ar el) = ok_arity ar.
Lemma rec_bounded_Multl ar el :
andl rec_bounded el -> rec_bounded (Multl_e ar el).
Lemma Multl_correct : forall ar el l,
length (Sem (Multl_e ar el) l) =
multl (map (fun e => length (Sem e l)) el).