Canonical rcons_tuple t x := Tuple (rcons_tupleP t x).Canonical nseq_tuple x := Tuple (nseq_tupleP x).Canonical iota_tuple := Tuple iota_tupleP.Canonical behead_tuple t := Tuple (behead_tupleP t).Canonical belast_tuple x t := Tuple (belast_tupleP x t).Canonical cat_tuple t u := Tuple (cat_tupleP t u).Canonical take_tuple t := Tuple (take_tupleP t).Canonical drop_tuple t := Tuple (drop_tupleP t).Canonical rev_tuple t := Tuple (rev_tupleP t).Canonical rot_tuple t := Tuple (rot_tupleP t).Canonical rotr_tuple t := Tuple (rotr_tupleP t).Canonical map_tuple f t := Tuple (map_tupleP f t).Canonical scanl_tuple f x t := Tuple (scanl_tupleP f x t).Canonical pairmap_tuple f x t := Tuple (pairmap_tupleP f x t).Canonical zip_tuple t u := Tuple (zip_tupleP t u).Canonical allpairs_tuple f t u := Tuple (allpairs_tupleP f t u).

(* Specifications: *)
Lemma tupleP u : tuple1_spec u.
Lemma all_tnthP a t : reflect (forall i, a (tnth t i)) (all a t).
Lemma has_tnthP a t : reflect (exists i, a (tnth t i)) (has a t).