Opaque plus_e.
Fixpoint plusl_e (n:nat)(el:list BC) : BC :=
match el with
| nil => zero_e n 0
| e' :: el' => comp n 0 plus_e [e'] [plusl_e n el']
end.

(* Specifications: *)
Lemma plusl_arities n el :
andl (fun e => arities e = ok_arities n 0) el ->
arities (plusl_e n el) = ok_arities n 0.
Lemma plusl_correct :
forall n nl el,
length (sem (plusl_e n el) nl nil) = plusl (map (fun e => length (sem e nl nil)) el).