subset :: [Int] -> [Int] -> Bool
-- testing 44 combinations of argument values
-- pruning with 29/39 rules
-- 2 candidates of size 1
-- 4 candidates of size 2
-- 8 candidates of size 3
-- 10 candidates of size 4
-- 64 candidates of size 5
-- 40 candidates of size 6
-- 64 candidates of size 7
-- 522 candidates of size 8
-- tested 553 candidates
subset [] xs  =  True
subset (x:xs) ys  =  subset xs ys && elem x ys

subset :: [Int] -> [Int] -> Bool
-- testing 44 combinations of argument values
-- pruning with 3/3 rules
-- 0 candidates of size 1
-- 0 candidates of size 2
-- 2 candidates of size 3
-- 6 candidates of size 4
-- 2 candidates of size 5
-- tested 9 candidates
subset xs ys  =  sort xs `isSubsequenceOf` sort ys

