|- (LIST2SET [] = {}) /\ !h t. LIST2SET (h::t) = h INSERT LIST2SET t
|- SET2LIST = WFREC (@R. WF R /\ !s. FINITE s /\ ~(s = {}) ==> R (REST s) s) (\SET2LIST' a. (if FINITE a then (if a = {} then [] else CHOICE a::SET2LIST' (REST a)) else ARB))
|- !s. FINITE s ==> (LENGTH (SET2LIST s) = CARD s)
|- !s. FINITE s ==> !x. x IN s = MEM x (SET2LIST s)
|- !P. (!s. (FINITE s /\ ~(s = {}) ==> P (REST s)) ==> P s) ==> !v. P v
|- !s. FINITE s ==> (LIST2SET (SET2LIST s) = s)
|- FINITE s ==> (SET2LIST s = (if s = {} then [] else CHOICE s::SET2LIST (REST s)))