Opaque PlusOneMinusMod2_e.
(** Def 13 of (Rose) *)
Definition MultTwoPowerLength'_e : Cobham :=
Rec2
(Proj 1 0)
(Comp 3 (Succ false) [Proj 3 1])
(Comp 2 Smash [Comp 2 (Succ true) [Proj 2 0]; Comp 2 (Succ true) [Proj 2 1] ] ).
(* FIXME: According to Rose (Def 13), 'plus 1' in arguments of Smash are not necessary *)

(* Specifications: *)
Lemma arity_MultTwoPowerLength' :
arity MultTwoPowerLength'_e = ok_arity 2.
Lemma rec_bounded_MultTwoPowerLength' :
rec_bounded MultTwoPowerLength'_e.
Lemma MultTwoPowerLength'_correct : forall l,
bs2nat (Sem MultTwoPowerLength'_e l) =
power 2 (length (hd nil l)) * bs2nat (hd nil (tl l)).