proposition: Lemma uniquize_nonnil {A} beq (ls : list A) : ls <> nil <-> Operations.List.uniquize beq ls <> nil.
proof: Proof. induction ls as [|a ls IHls]; simpl. { reflexivity. } { split; intros H H'. { destruct (list_bin beq a (Operations.List.uniquize beq ls)) eqn:Heq. { rewrite H' in IHls. destruct ls; simpl in *; try congruence. destruct IHls. specialize_by congruence. congruence. } { congruence. } } { congruence. } } Qed.
imports: Fiat.Common.Coq__8_4__8_5__Compat Coq.ZArith.ZArith Coq.Lists.List Coq.Lists.SetoidList Coq.Bool.Bool Fiat.Common Fiat.Common.List.Operations Fiat.Common.Equality Fiat.Common.List.FlattenList Fiat.Common.LogicFacts