Require Import subsequences. Require Import Sorting.Permutation. Require Import Nat. Require Import PeanoNat. Require Import List. Import ListNotations. Definition complete_sequence {X: Type} (u base : list X) := forall v, Permutation base v -> subsequence u v. Definition shortest_complete_sequence {X: Type} (u base : list X) := complete_sequence u base /\ forall v, length v < length u -> ~ complete_sequence v base. Theorem complete_sequence_rev {X: Type} : forall (u base : list X), complete_sequence u base -> complete_sequence (rev u) base. Proof. intros u base. intro H. intro p. intro I. apply subsequence_rev. rewrite rev_involutive. apply H. apply Permutation_trans with (l' := p). assumption. apply Permutation_rev. Qed.