Module NatList.
Inductive natprod : Type :=
| pair : nat -> nat -> natprod.
Instance dec_natprod (p q : natprod) : Dec (p = q).
Admitted. (* QuickChick surjective_pairing. *)
Admitted. (* QuickChick snd_fst_is_swap. *)
Admitted. (* QuickChick fst_swap_is_snd. *)
Inductive natlist : Type :=
| nil  : natlist
| cons : nat -> natlist -> natlist.
Instance dec_natlist (p q : natlist) : Dec (p = q).
Admitted. (* QuickChick tl_length_pred. *)

Theorem app_assoc : forall l1 l2 l3 : natlist,
(l1 ++ l2) ++ l3 = l1 ++ (l2 ++ l3).