[avoid duplicate partitioning
Helmut Grohne <grohne@cs.uni-bonn.de>**20150108162514
 Ignore-this: ae1ec4df2cbd0b2d11ebdd8fe1db2dc3
 
 In the partitioning step, a hypothesis can be partitioned at multiple
 variables. Different splits can produce the same generalized hypotheses on the
 given iodata. For example, if a function is given two lists and in all examples
 the length of both lists is equal, then splitting on each argument results in
 the same hypotheses. By not returning duplicate hypotheses, work may be saved
 in later iterations of the algorithm. Accordingly, a few tests run in fewer
 iterations and the enjoySport test no longer produces two identical hypotheses
 after this change.
] hunk ./src/Igor2/RuleDevelopment/Partition.hs 43
+    let nubbedparts = nub parts
hunk ./src/Igor2/RuleDevelopment/Partition.hs 48
-             text "Into:" <+> pretty parts
+             text "Into:" <+> pretty nubbedparts
hunk ./src/Igor2/RuleDevelopment/Partition.hs 55
-    return $ map (\p -> (p,[])) parts 
+    return $ map (\p -> (p, [])) nubbedparts
hunk ./tests/add.out 28
-             add          in 290     loops
+             add          in 266     loops
hunk ./tests/add.out 36
-fun11295 (S _) (S a1) = a1
-fun11296 (S a0) (S _) = a0
-fun49 (S a0) (S a1) = S (fun923 (S a0) (S a1))
-fun923 (S a0) (S a1) = add (fun11295 (S a0) (S a1)) (fun11296 (S a0) (S a1))
+fun10227 (S _) (S a1) = a1
+fun10228 (S a0) (S _) = a0
+fun49 (S a0) (S a1) = S (fun874 (S a0) (S a1))
+fun874 (S a0) (S a1) = add (fun10227 (S a0) (S a1)) (fun10228 (S a0) (S a1))
hunk ./tests/add.out 48
-fun11301 (S a0) (S _) = a0
-fun11302 (S _) (S a1) = a1
-fun49 (S a0) (S a1) = S (fun923 (S a0) (S a1))
-fun923 (S a0) (S a1) = add (fun11301 (S a0) (S a1)) (fun11302 (S a0) (S a1))
+fun10233 (S a0) (S _) = a0
+fun10234 (S _) (S a1) = a1
+fun49 (S a0) (S a1) = S (fun874 (S a0) (S a1))
+fun874 (S a0) (S a1) = add (fun10233 (S a0) (S a1)) (fun10234 (S a0) (S a1))
hunk ./tests/add.out 60
-fun11327 (S _) (S a1) = a1
-fun11328 (S a0) (S _) = a0
-fun49 (S a0) (S a1) = S (fun923 (S a0) (S a1))
-fun923 (S a0) (S a1) = add (fun11327 (S a0) (S a1)) (fun11328 (S a0) (S a1))
+fun10259 (S _) (S a1) = a1
+fun10260 (S a0) (S _) = a0
+fun49 (S a0) (S a1) = S (fun874 (S a0) (S a1))
+fun874 (S a0) (S a1) = add (fun10259 (S a0) (S a1)) (fun10260 (S a0) (S a1))
hunk ./tests/add.out 72
-fun11333 (S a0) (S _) = a0
-fun11334 (S _) (S a1) = a1
-fun49 (S a0) (S a1) = S (fun923 (S a0) (S a1))
-fun923 (S a0) (S a1) = add (fun11333 (S a0) (S a1)) (fun11334 (S a0) (S a1))
+fun10265 (S a0) (S _) = a0
+fun10266 (S _) (S a1) = a1
+fun49 (S a0) (S a1) = S (fun874 (S a0) (S a1))
+fun874 (S a0) (S a1) = add (fun10265 (S a0) (S a1)) (fun10266 (S a0) (S a1))
hunk ./tests/enjoySport.out 31
-                 [1mHYPOTHESIS 1 of 2[0m
-
-enjoySport (Rain, Cold, High, Strong, Warm, Change) = False
-enjoySport (Sunny, Warm, _, Strong, _, _) = True
-
-
-
-                 [1mHYPOTHESIS 2 of 2[0m
+                 [1mHYPOTHESIS 1 of 1[0m
hunk ./tests/flatapp.out 28
-             flatapp      in 7     loops
+             flatapp      in 4     loops
hunk ./tests/flatten.out 28
-             flatten      in 17     loops
+             flatten      in 10     loops
hunk ./tests/powapp.out 28
-             powapp       in 27     loops
+             powapp       in 14     loops