Definition Zero_e (n:nat) : Cobham :=
  Comp n Zero nil.

(* Specifications: *)
Lemma arity_Zero n : arity (Zero_e n) = ok_arity n.
Lemma rec_bounded_Zero n : rec_bounded (Zero_e n).
Lemma arity_One n : arity (One_e n) = ok_arity n.
Lemma rec_bounded_One n : rec_bounded (One_e n).
Lemma arity_App : arity App_e = ok_arity 2.
Lemma rec_bounded_App : rec_bounded App_e.
Lemma App_correct : forall l, Sem App_e l = hd nil l ++ hd nil (tl l).
Lemma arity_Rev : arity Rev_e = ok_arity 1.
Lemma rec_bounded_Rev : rec_bounded Rev_e.
Lemma Rev_correct l : Sem Rev_e l = List.rev (hd nil l).
Lemma arity_RemoveLSZ : arity RemoveLSZ_e = ok_arity 1.
Lemma rec_bounded_RemoveLSZ : rec_bounded RemoveLSZ_e.
Lemma RemoveLSZ_app u v l : Sem RemoveLSZ_e ((u++v)::l) = match Sem RemoveLSZ_e (u::l) with | nil => Sem RemoveLSZ_e (v::l) | u' => u'++v end.
Lemma arity_Cond : arity Cond = ok_arity 4.
Lemma rec_bounded_Cond : rec_bounded' Cond.
Lemma Cond_correct : forall l, Sem Cond l = match hd nil l with | nil => hd nil (tl l) | true::_ => hd nil (tl (tl l)) | false::_ => hd nil (tl (tl (tl l))) end.