+ ANSWER:
+
+ let neq? = \n m. neg (num_eq? n m) in
+ let mem? = \n xs. neg (empty? (drop_while (neq? n) xs)) in
+ let without = \n xs. append (take_while (neq? n) xs) (tail (drop_while (neq? n) xs)) in
+ let set_cons = \x xs. (mem? x xs) xs (cons x xs) in
+ let set_equal? = Y (\set_equal?. \xs ys. (empty? xs)
+ (empty? ys)
+ ; else when xs aren't empty
+ ((mem? (head xs) ys)
+ (set_equal? (tail xs) (without (head xs) ys))
+ ; else when head xs not in ys
+ false))