module Data.Sums.Shrinkers where import Data.Sums s0 :: S0 -> [S0] s0 _ = [] s1 :: (a -> [a]) -> S1 a -> [S1 a] s1 f (S1a a) = map S1a $ f a s2 :: (a -> [a]) -> (b -> [b]) -> S2 a b -> [S2 a b] s2 fa fb = caseS2 (map S2a . fa) (map S2b . fb) s3 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> S3 a b c -> [S3 a b c] s3 fa fb fc = caseS3 (map S3a . fa) (map S3b . fb) (map S3c. fc) s4 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> S4 a b c d -> [S4 a b c d] s4 fa fb fc fd = caseS4 (map S4a . fa) (map S4b . fb) (map S4c . fc) (map S4d . fd) s5 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> S5 a b c d e -> [S5 a b c d e] s5 fa fb fc fd fe = caseS5 (map S5a . fa) (map S5b . fb) (map S5c . fc) (map S5d . fd) (map S5e . fe) s6 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> S6 a b c d e f -> [S6 a b c d e f] s6 fa fb fc fd fe ff = caseS6 (map S6a . fa) (map S6b . fb) (map S6c . fc) (map S6d . fd) (map S6e . fe) (map S6f . ff) s7 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> S7 a b c d e f g -> [S7 a b c d e f g] s7 fa fb fc fd fe ff fg = caseS7 (map S7a . fa) (map S7b . fb) (map S7c . fc) (map S7d . fd) (map S7e . fe) (map S7f . ff) (map S7g . fg) s8 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> S8 a b c d e f g h -> [S8 a b c d e f g h] s8 fa fb fc fd fe ff fg fh = caseS8 (map S8a . fa) (map S8b . fb) (map S8c . fc) (map S8d . fd) (map S8e . fe) (map S8f . ff) (map S8g . fg) (map S8h . fh) s9 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> (i -> [i]) -> S9 a b c d e f g h i -> [S9 a b c d e f g h i] s9 fa fb fc fd fe ff fg fh fi = caseS9 (map S9a . fa) (map S9b . fb) (map S9c . fc) (map S9d . fd) (map S9e . fe) (map S9f . ff) (map S9g . fg) (map S9h . fh) (map S9i . fi) s10 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> (i -> [i]) -> (j -> [j]) -> S10 a b c d e f g h i j -> [S10 a b c d e f g h i j] s10 fa fb fc fd fe ff fg fh fi fj = caseS10 (map S10a . fa) (map S10b . fb) (map S10c . fc) (map S10d . fd) (map S10e . fe) (map S10f . ff) (map S10g . fg) (map S10h . fh) (map S10i . fi) (map S10j . fj) s11 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> (i -> [i]) -> (j -> [j]) -> (k -> [k]) -> S11 a b c d e f g h i j k -> [S11 a b c d e f g h i j k] s11 fa fb fc fd fe ff fg fh fi fj fk = caseS11 (map S11a . fa) (map S11b . fb) (map S11c . fc) (map S11d . fd) (map S11e . fe) (map S11f . ff) (map S11g . fg) (map S11h . fh) (map S11i . fi) (map S11j . fj) (map S11k . fk) s12 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> (i -> [i]) -> (j -> [j]) -> (k -> [k]) -> (l -> [l]) -> S12 a b c d e f g h i j k l -> [S12 a b c d e f g h i j k l] s12 fa fb fc fd fe ff fg fh fi fj fk fl = caseS12 (map S12a . fa) (map S12b . fb) (map S12c . fc) (map S12d . fd) (map S12e . fe) (map S12f . ff) (map S12g . fg) (map S12h . fh) (map S12i . fi) (map S12j . fj) (map S12k . fk) (map S12l . fl) s13 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> (i -> [i]) -> (j -> [j]) -> (k -> [k]) -> (l -> [l]) -> (m -> [m]) -> S13 a b c d e f g h i j k l m -> [S13 a b c d e f g h i j k l m] s13 fa fb fc fd fe ff fg fh fi fj fk fl fm = caseS13 (map S13a . fa) (map S13b . fb) (map S13c . fc) (map S13d . fd) (map S13e . fe) (map S13f . ff) (map S13g . fg) (map S13h . fh) (map S13i . fi) (map S13j . fj) (map S13k . fk) (map S13l . fl) (map S13m . fm) s14 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> (i -> [i]) -> (j -> [j]) -> (k -> [k]) -> (l -> [l]) -> (m -> [m]) -> (n -> [n]) -> S14 a b c d e f g h i j k l m n -> [S14 a b c d e f g h i j k l m n] s14 fa fb fc fd fe ff fg fh fi fj fk fl fm fn = caseS14 (map S14a . fa) (map S14b . fb) (map S14c . fc) (map S14d . fd) (map S14e . fe) (map S14f . ff) (map S14g . fg) (map S14h . fh) (map S14i . fi) (map S14j . fj) (map S14k . fk) (map S14l . fl) (map S14m . fm) (map S14n . fn) s15 :: (a -> [a]) -> (b -> [b]) -> (c -> [c]) -> (d -> [d]) -> (e -> [e]) -> (f -> [f]) -> (g -> [g]) -> (h -> [h]) -> (i -> [i]) -> (j -> [j]) -> (k -> [k]) -> (l -> [l]) -> (m -> [m]) -> (n -> [n]) -> (o -> [o]) -> S15 a b c d e f g h i j k l m n o -> [S15 a b c d e f g h i j k l m n o] s15 fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo = caseS15 (map S15a . fa) (map S15b . fb) (map S15c . fc) (map S15d . fd) (map S15e . fe) (map S15f . ff) (map S15g . fg) (map S15h . fh) (map S15i . fi) (map S15j . fj) (map S15k . fk) (map S15l . fl) (map S15m . fm) (map S15n . fn) (map S15o . fo)