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.

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).