(** * Addition

  - arities: (1,1)
*)

Definition plus_e : BC :=
  rec (proj 0 1 0)
      (comp 1 2 succ_e nil ((proj 1 2 1) :: nil))
      (comp 1 2 succ_e nil ((proj 1 2 1) :: nil)).

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