proposition: Lemma eql_eq_list : forall l l', eq_list l l' -> eql l l'.
proof: Proof. elim => [ | hd tl hi] [ | hd' tl'] //=. - move => _; by reflexivity. - case: (eqA_dec hd hd') => //=. - move => heq1 heq2. apply eql_elim => x; split => /=. * case : (eqA_dec x hd) => h1 /=. case: (eqA_dec x hd')=> //=. case. by rewrite h1. case: (eqA_dec x hd')=> //=. move => hneq hIn. rewrite (@InA_eq2 tl' tl x) => //. by symmetry. * case : (eqA_dec x hd') => h1 /=. case: (eqA_dec x hd)=> //=. case. transitivity hd' => //. by symmetry. case: (eqA_dec x hd)=> //=. move => hneq hIn. by rewrite (@InA_eq2 tl tl' x) => //. Qed.
imports: Coq(RelationClasses Setoid Morphisms SetoidList Mergesort Permutation) mathcomp(ssreflect ssrfun ssrbool eqtype ssrnat seq fintype) mathcomp(bigop path) RegexpBrzozowski(glue)