proposition: Lemma NoDupA_uniquize {A} (beq : A -> A -> bool) (ls : list A) (H : NoDupA (fun x y => beq y x) ls) : uniquize beq ls = ls.
proof: Proof. induction ls as [|x xs IHxs]; simpl; [ solve [ constructor ] | ]. inversion H; subst. rewrite IHxs by assumption; clear IHxs. destruct (Equality.list_bin beq x xs) eqn:H'; trivial. exfalso. apply Equality.list_inA_bl in H'. tauto. 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