Ltac elim_if :=  match goal with 
   | |- context [if ?c then ?c1 else ?c2]  => case_eq c
 end.

(* Specifications: *)
Lemma scalar_arities : forall a n e, arities e = ok_arities n 0 -> arities (scalar_e a n e) = ok_arities n 0.
Lemma scalar_correct : forall a n nl e, length (sem (scalar_e a n e) nl nil) = a * length (sem e nl nil).
Lemma multl_arities : forall el n, andl (fun e => arities e = ok_arities n 0) el -> arities (multl_e n el) = ok_arities n 0.
Lemma multl_correct : forall n nl el, length (sem (multl_e n el) nl nil) = multl (map (fun e => length (sem e nl nil)) el).