Section Undup.
Variable X : eqType.
Implicit Types A B : list X.
Fixpoint undup A : list X :=
match A with
| nil => nil
| x::A' => if decision (x el A') then undup A' else  x :: undup A'
end.

Lemma power_extensional A B U :
dupfree U -> A el power U -> B el power U -> A === B -> A = B.