Admitted. (* QuickChick plus_comm3_take3. *)
Fixpoint rev_append {X} (l1 l2 : list X) : list X :=
match l1 with
| [] => l2
| x :: l1' => rev_append l1' (x :: l2)
end.
Definition tr_rev {X} (l : list X) : list X :=
rev_append l [].

(* Specifications: *)
Lemma tr_rev_correct : forall X, @tr_rev X = @rev X.
Admitted. (* Higher Order *)
Theorem evenb_double : forall k, evenb (double k) = true.
Admitted.  (* QuickChick evenb_double. *)
Theorem evenb_double_conv : forall n,
exists k, n = if evenb n then double k
else S (double k).