[Added a bunch of tests for accumulators.
tobias@goedderz.info**20150312164222
 Ignore-this: ca19d136cafa06a37fc7c44696b5201
] 
<
[Introduced accumulators
tobias@goedderz.info**20150312163840
 Ignore-this: 8fb4545670b3af3bdbd52c36f2382cdf
 
 When some variable-free term occurs in all IO examples of a given rule, it may
 be replaced by an accumulator variable. By setting the +accum parameter, this
 additional step is added to the derivation steps for new hypotheses.
] 
> addfile ./tests/ack-accum.bat
hunk ./tests/ack-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise ack
+:quit
addfile ./tests/ack-accum.out
hunk ./tests/ack-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/ack-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'ack'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             ack          in 571     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+ack (Z) a0 = S a0
+ack (S a0) a1 = ack a0 (fun7 (S a0) a1)
+fun7 (S _) (Z) = S Z
+fun7 (S a0) (S a1) = ack (S a0) a1
+
+...batch processing finished.
+Bye.
addfile ./tests/add-accum.bat
hunk ./tests/add-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise add
+:test add on "add (S (S (S (S Z)))) (S (S (S (S Z))))"
+:quit
addfile ./tests/add-accum.out
hunk ./tests/add-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/add-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'add'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             add          in 23     loops
+             
+
+                 [1mHYPOTHESIS 1 of 4[0m
+
+add a0 (Z) = a0
+add (Z) a0 = a0
+add (S a0) (S a1) = S (S (add a0 a1))
+
+
+
+                 [1mHYPOTHESIS 2 of 4[0m
+
+add a0 (Z) = a0
+add (Z) a0 = a0
+add (S a0) (S a1) = S (S (add a1 a0))
+
+
+
+                 [1mHYPOTHESIS 3 of 4[0m
+
+add a0 (Z) = a0
+add (Z) a0 = a0
+add (S a0) (S a1) = S (S (add a0 a1))
+
+
+
+                 [1mHYPOTHESIS 4 of 4[0m
+
+add a0 (Z) = a0
+add (Z) a0 = a0
+add (S a0) (S a1) = S (S (add a1 a0))
+
+Testing 1. hypothesis of: 'add'
+  add (S (S (S (S Z)))) (S (S (S (S Z))))  ==  S (S (S (S (S (S (S (S Z)))))))
+
+Testing 2. hypothesis of: 'add'
+  add (S (S (S (S Z)))) (S (S (S (S Z))))  ==  S (S (S (S (S (S (S (S Z)))))))
+
+Testing 3. hypothesis of: 'add'
+  add (S (S (S (S Z)))) (S (S (S (S Z))))  ==  S (S (S (S (S (S (S (S Z)))))))
+
+Testing 4. hypothesis of: 'add'
+  add (S (S (S (S Z)))) (S (S (S (S Z))))  ==  S (S (S (S (S (S (S (S Z)))))))
+
+...batch processing finished.
+Bye.
addfile ./tests/anD-accum.bat
hunk ./tests/anD-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise anD
+:quit
addfile ./tests/anD-accum.out
hunk ./tests/anD-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/anD-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'anD'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             anD          in 1     loops
+             
+
+                 [1mHYPOTHESIS 1 of 2[0m
+
+anD (False) _ = False
+anD (True) a0 = a0
+
+
+
+                 [1mHYPOTHESIS 2 of 2[0m
+
+anD _ (False) = False
+anD a0 (True) = a0
+
+...batch processing finished.
+Bye.
addfile ./tests/andL-accum.bat
hunk ./tests/andL-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise andL
+:test andL on "andL [True, True, True, True]"
+:test andL on "andL [True, True, True, False]"
+:quit
addfile ./tests/andL-accum.out
hunk ./tests/andL-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/andL-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'andL'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             andL         in 3     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+andL [] = True
+andL (False : _) = False
+andL (True : a0) = andL a0
+
+Testing 1. hypothesis of: 'andL'
+  andL [True, True, True, True]  ==  True
+
+Testing 1. hypothesis of: 'andL'
+  andL [True, True, True, False]  ==  False
+
+...batch processing finished.
+Bye.
addfile ./tests/appenD-accum.bat
hunk ./tests/appenD-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise appenD
+:test appenD on "appenD [0, 1, 2, 3, 4] [5, 6, 7, 8, 9]"
+:quit
addfile ./tests/appenD-accum.out
hunk ./tests/appenD-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/appenD-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'appenD'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             appenD       in 4     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+appenD [] a0 = a0
+appenD (a0 : a1) a2 = a0 : appenD a1 a2
+
+Testing 1. hypothesis of: 'appenD'
+  appenD [0, 1, 2, 3, 4] [5, 6, 7, 8, 9]  ==  [0,1,2,3,4,5,6,7,8,9]
+
+...batch processing finished.
+Bye.
addfile ./tests/balloons-accum.bat
hunk ./tests/balloons-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise balloons
+:quit
addfile ./tests/balloons-accum.out
hunk ./tests/balloons-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/balloons-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'balloons'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             balloons     in 5     loops
+             
+
+                 [1mHYPOTHESIS 1 of 2[0m
+
+balloons (_, Large, _, _) = FF
+balloons (Purple, Small, _, _) = FF
+balloons (Yellow, Small, _, _) = TT
+
+
+
+                 [1mHYPOTHESIS 2 of 2[0m
+
+balloons (Purple, _, _, _) = FF
+balloons (Yellow, Large, _, _) = FF
+balloons (Yellow, Small, _, _) = TT
+
+...batch processing finished.
+Bye.
addfile ./tests/droP-accum.bat
hunk ./tests/droP-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise droP
+:quit
addfile ./tests/droP-accum.out
hunk ./tests/droP-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/droP-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'droP'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             droP         in 1333     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+droP (Z) a0 = a0
+droP (S a0) a1 = droP a0 (fun7 (S a0) a1)
+fun7 (S _) [] = []
+fun7 (S _) (_ : a2) = a2
+
+...batch processing finished.
+Bye.
addfile ./tests/enjoySport-accum.bat
hunk ./tests/enjoySport-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise enjoySport
+:quit
addfile ./tests/enjoySport-accum.out
hunk ./tests/enjoySport-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/enjoySport-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'enjoySport'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             enjoySport   in 1     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+enjoySport (Rain, Cold, High, Strong, Warm, Change) = False
+enjoySport (Sunny, Warm, _, Strong, _, _) = True
+
+...batch processing finished.
+Bye.
addfile ./tests/eq-accum.bat
hunk ./tests/eq-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise eq
+:test eq on "eq (S (S (S (S Z)))) (S (S (S (S Z))))"
+:test eq on "eq (S (S (S (S Z)))) (S Z)"
+:quit
addfile ./tests/eq-accum.out
hunk ./tests/eq-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/eq-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'eq'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             eq           in 636     loops
+             
+
+                 [1mHYPOTHESIS 1 of 2[0m
+
+eq (Z) (Z) = True
+eq (Z) (S _) = False
+eq (S _) (Z) = False
+eq (S a0) (S a1) = eq a1 a0
+
+
+
+                 [1mHYPOTHESIS 2 of 2[0m
+
+eq (Z) (Z) = True
+eq (Z) (S _) = False
+eq (S _) (Z) = False
+eq (S a0) (S a1) = eq a0 a1
+
+Testing 1. hypothesis of: 'eq'
+  eq (S (S (S (S Z)))) (S (S (S (S Z))))  ==  True
+
+Testing 2. hypothesis of: 'eq'
+  eq (S (S (S (S Z)))) (S (S (S (S Z))))  ==  True
+
+Testing 1. hypothesis of: 'eq'
+  eq (S (S (S (S Z)))) (S Z)  ==  False
+
+Testing 2. hypothesis of: 'eq'
+  eq (S (S (S (S Z)))) (S Z)  ==  False
+
+...batch processing finished.
+Bye.
addfile ./tests/eveN-accum.bat
hunk ./tests/eveN-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise eveN
+:test eveN on "eveN (S (S (S (S (S (S Z))))))"
+:test eveN on "eveN (S (S (S (S (S (S (S Z)))))))"
+:quit
addfile ./tests/eveN-accum.out
hunk ./tests/eveN-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/eveN-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'eveN'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             eveN         in 3     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+eveN (Z) = True
+eveN (S (Z)) = False
+eveN (S (S a0)) = eveN a0
+
+Testing 1. hypothesis of: 'eveN'
+  eveN (S (S (S (S (S (S Z))))))  ==  True
+
+Testing 1. hypothesis of: 'eveN'
+  eveN (S (S (S (S (S (S (S Z)))))))  ==  False
+
+...batch processing finished.
+Bye.
addfile ./tests/evenpos-accum.bat
hunk ./tests/evenpos-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise evenpos
+:test evenpos on "evenpos [1, 2, 3, 4, 5, 6, 7, 8, 9]"
+:quit
addfile ./tests/evenpos-accum.out
hunk ./tests/evenpos-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/evenpos-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'evenpos'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             evenpos      in 13     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+evenpos [] = []
+evenpos [_] = []
+evenpos (_ : (a1 : a2)) = a1 : evenpos a2
+
+Testing 1. hypothesis of: 'evenpos'
+  evenpos [1, 2, 3, 4, 5, 6, 7, 8, 9]  ==  [2,4,6,8]
+
+...batch processing finished.
+Bye.
addfile ./tests/fib-accum.bat
hunk ./tests/fib-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise fib
+:test fib on "fib (S (S (S (S (S (S Z))))))"
+:quit
addfile ./tests/fib-accum.out
hunk ./tests/fib-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/fib-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'fib'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             fib          in 59     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+fib a0 = fun1 a0 Z
+fun1 (Z) a0 = a0
+fun1 (S a0) a1 = fun1 a0 (fun5 (S a0) a1)
+fun5 (S (Z)) a0 = S a0
+fun5 (S (S a0)) a1 = fun1 a0 a1
+
+Testing 1. hypothesis of: 'fib'
+  fib (S (S (S (S (S (S Z))))))  ==  S (S (S (S (S (S (S (S Z)))))))
+
+...batch processing finished.
+Bye.
addfile ./tests/fibAdd-accum.bat
hunk ./tests/fibAdd-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:generalise fibAdd
+:test fibAdd on "fibAdd (S (S (S Z))) (S (S (S (S (S Z)))))"
+:quit
addfile ./tests/fibAdd-accum.out
hunk ./tests/fibAdd-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/fibAdd-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'fibAdd'
+Background           <none>
+Simplified           False
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             fibAdd       in 38     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+fibAdd a0 (S a1) = S (fun1 a0 (S a1))
+fun1 a0 (S (Z)) = a0
+fun1 (S _) (S (S a0)) = S (fun29 (S a0) (S (S a0)))
+fun29 (S _) (S (S a0)) = fibAdd a0 (S a0)
+
+Testing 1. hypothesis of: 'fibAdd'
+  fibAdd (S (S (S Z))) (S (S (S (S (S Z)))))  ==  S (S (S (S (S (S (S (S (S Z))))))))
+
+...batch processing finished.
+Bye.
addfile ./tests/flatapp-accum.bat
hunk ./tests/flatapp-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise flatapp
+:quit
addfile ./tests/flatapp-accum.out
hunk ./tests/flatapp-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/flatapp-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'flatapp'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             flatapp      in 58     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+flatapp [] [] = []
+flatapp [a0] [a1] = [a0, a1]
+flatapp [a0, a1, a2] [a3, a4, a5] = [a0, a1, a2, a3, a4, a5]
+
+...batch processing finished.
+Bye.
addfile ./tests/flatten-accum.bat
hunk ./tests/flatten-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise flatten
+:test flatten on "flatten (Node 1 (Node 2 (Node 3 (Node 4 NilT NilT) (Node 5 NilT NilT)) (Node 6 (Node 7 NilT NilT) (Node 8 NilT NilT))) (Node 9 (Node 10 (Node 11 NilT NilT) (Node 12 NilT NilT)) (Node 13 (Node 14 NilT NilT) (Node 15 NilT NilT))))"
+:quit
addfile ./tests/flatten-accum.out
hunk ./tests/flatten-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/flatten-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'flatten'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             flatten      in 13     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+flatten a0 = fun1 a0 []
+fun1 (NilT) a0 = a0
+fun1 (Node a0 a1 a2) a3 = a0 : fun1 a1 (fun1 a2 a3)
+
+Testing 1. hypothesis of: 'flatten'
+  flatten (Node 1 (Node 2 (Node 3 (Node 4 NilT NilT) (Node 5 NilT NilT)) (Node 6 (Node 7 NilT NilT) (Node 8 NilT NilT))) (Node 9 (Node 10 (Node 11 NilT NilT) (Node 12 NilT NilT)) (Node 13 (Node 14 NilT NilT) (Node 15 NilT NilT))))  ==  [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
+
+...batch processing finished.
+Bye.
addfile ./tests/hanoi-accum.bat
hunk ./tests/hanoi-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise hanoi
+-- TODO: write a :test
+:quit
addfile ./tests/hanoi-accum.out
hunk ./tests/hanoi-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/hanoi-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'hanoi'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             hanoi        in 95     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+hanoi (D0) a0 _ a2 a3 = MV D0 a0 a2 a3
+hanoi (D a0) a1 a2 a3 a4 = hanoi a0 a2 a1 a3 (MV (D a0) a1 a3 (hanoi a0 a1 a3 a2 a4))
+
+...batch processing finished.
+Bye.
addfile ./tests/heaD-accum.bat
hunk ./tests/heaD-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise heaD
+:test heaD on "heaD [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/heaD-accum.out
hunk ./tests/heaD-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/heaD-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'heaD'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             heaD         in 0     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+heaD (a0 : _) = a0
+
+Testing 1. hypothesis of: 'heaD'
+  heaD [0, 1, 2, 3, 4]  ==  0
+
+...batch processing finished.
+Bye.
addfile ./tests/incr-accum.bat
hunk ./tests/incr-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise incr
+:test incr on "incr [S (S Z), Z, S (S (S Z))]"
+:quit
addfile ./tests/incr-accum.out
hunk ./tests/incr-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/incr-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'incr'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             incr         in 5     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+incr [] = []
+incr (a0 : a1) = S a0 : incr a1
+
+Testing 1. hypothesis of: 'incr'
+  incr [S (S Z), Z, S (S (S Z))]  ==  [S (S (S Z)),S Z,S (S (S (S Z)))]
+
+...batch processing finished.
+Bye.
addfile ./tests/lasT-accum.bat
hunk ./tests/lasT-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise lasT
+:test lasT on "lasT [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/lasT-accum.out
hunk ./tests/lasT-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/lasT-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'lasT'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             lasT         in 2     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+lasT [a0] = a0
+lasT (_ : (a1 : a2)) = lasT (a1 : a2)
+
+Testing 1. hypothesis of: 'lasT'
+  lasT [0, 1, 2, 3, 4]  ==  4
+
+...batch processing finished.
+Bye.
addfile ./tests/lastM-accum.bat
hunk ./tests/lastM-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise lastM
+:test lastM on "lastM [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/lastM-accum.out
hunk ./tests/lastM-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/lastM-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'lastM'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             lastM        in 4     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+lastM [] = Nothing
+lastM [a0] = Just a0
+lastM (_ : (a1 : a2)) = lastM (a1 : a2)
+
+Testing 1. hypothesis of: 'lastM'
+  lastM [0, 1, 2, 3, 4]  ==  Just 4
+
+...batch processing finished.
+Bye.
addfile ./tests/lasts-accum.bat
hunk ./tests/lasts-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise lasts
+:test lasts on "lasts [[0, 1, 2], [3], [4, 5], [6, 7, 8, 9]]"
+:quit
addfile ./tests/lasts-accum.out
hunk ./tests/lasts-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/lasts-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'lasts'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             lasts        in 22     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+lasts [] = []
+lasts ([a0] : a1) = a0 : lasts a1
+lasts ((_ : (a1 : a2)) : a3) = lasts ((a1 : a2) : a3)
+
+Testing 1. hypothesis of: 'lasts'
+  lasts [[0, 1, 2], [3], [4, 5], [6, 7, 8, 9]]  ==  [2,3,5,9]
+
+...batch processing finished.
+Bye.
addfile ./tests/lengtH-accum.bat
hunk ./tests/lengtH-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise lengtH
+:test lengtH on "lengtH [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/lengtH-accum.out
hunk ./tests/lengtH-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/lengtH-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'lengtH'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             lengtH       in 4     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+lengtH a0 = fun1 a0 Z
+fun1 [] a0 = a0
+fun1 (_ : a1) a2 = fun1 a1 (S a2)
+
+Testing 1. hypothesis of: 'lengtH'
+  lengtH [0, 1, 2, 3, 4]  ==  S (S (S (S (S Z))))
+
+...batch processing finished.
+Bye.
addfile ./tests/lenses-accum.bat
hunk ./tests/lenses-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise lenses
+:quit
addfile ./tests/lenses-accum.out
hunk ./tests/lenses-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/lenses-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'lenses'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             lenses       in 206     loops
+             
+
+                 [1mHYPOTHESIS 1 of 3[0m
+
+lenses (_, _, _, Reduced) = None
+lenses (_, Hypermetrope, No, Norml) = Soft
+lenses (_, Myope, Yes, Norml) = Hard
+lenses (PrePresbyopic, Hypermetrope, Yes, Norml) = None
+lenses (PrePresbyopic, Myope, No, Norml) = Soft
+lenses (Presbyopic, Hypermetrope, Yes, Norml) = None
+lenses (Presbyopic, Myope, No, Norml) = None
+lenses (Young, Hypermetrope, Yes, Norml) = Hard
+lenses (Young, Myope, No, Norml) = Soft
+
+
+
+                 [1mHYPOTHESIS 2 of 3[0m
+
+lenses (_, _, _, Reduced) = None
+lenses (_, Hypermetrope, No, Norml) = Soft
+lenses (_, Myope, Yes, Norml) = Hard
+lenses (PrePresbyopic, Hypermetrope, Yes, Norml) = None
+lenses (PrePresbyopic, Myope, No, Norml) = Soft
+lenses (Presbyopic, Hypermetrope, Yes, Norml) = None
+lenses (Presbyopic, Myope, No, Norml) = None
+lenses (Young, Hypermetrope, Yes, Norml) = Hard
+lenses (Young, Myope, No, Norml) = Soft
+
+
+
+                 [1mHYPOTHESIS 3 of 3[0m
+
+lenses (_, _, _, Reduced) = None
+lenses (_, Myope, Yes, Norml) = Hard
+lenses (PrePresbyopic, _, No, Norml) = Soft
+lenses (PrePresbyopic, Hypermetrope, Yes, Norml) = None
+lenses (Presbyopic, Hypermetrope, No, Norml) = Soft
+lenses (Presbyopic, Hypermetrope, Yes, Norml) = None
+lenses (Presbyopic, Myope, No, Norml) = None
+lenses (Young, _, No, Norml) = Soft
+lenses (Young, Hypermetrope, Yes, Norml) = Hard
+
+...batch processing finished.
+Bye.
addfile ./tests/mem-accum.bat
hunk ./tests/mem-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise mem
+-- Non-exhaustive patterns
+-- :test mem on "mem 4 [1, 2, 3, 4, 5]"
+:quit
addfile ./tests/mem-accum.out
hunk ./tests/mem-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/mem-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'mem'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             mem          in 56     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+mem _ [] = False
+mem 1 [1] = True
+mem 1 (2 : a0) = mem 1 a0
+mem 1 (3 : a0) = mem 1 a0
+mem 2 [1] = False
+mem 2 (2 : _) = True
+mem 2 [3] = False
+mem 3 [1] = False
+mem 3 [2] = False
+mem 3 [3] = True
+
+...batch processing finished.
+Bye.
addfile ./tests/mirror-accum.bat
hunk ./tests/mirror-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise mirror
+-- TODO: write a :test
+:quit
addfile ./tests/mirror-accum.out
hunk ./tests/mirror-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/mirror-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'mirror'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             mirror       in 197     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+mirror (NilT) = NilT
+mirror (Node a0 a1 a2) = Node a0 (mirror a2) (mirror a1)
+
+...batch processing finished.
+Bye.
addfile ./tests/multfst-accum.bat
hunk ./tests/multfst-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise multfst
+:test multfst on "multfst [0, 1, 2, 3, 4, 5]"
+:quit
addfile ./tests/multfst-accum.out
hunk ./tests/multfst-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/multfst-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'multfst'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             multfst      in 356     loops
+             
+
+                 [1mHYPOTHESIS 1 of 2[0m
+
+multfst a0 = fun1 a0 []
+fun1 [] a0 = a0
+fun1 (a0 : a1) a2 = fun1 (fun4 (a0 : a1) a2) (a0 : a2)
+fun4 [_] _ = []
+fun4 (a0 : (_ : a2)) _ = a0 : a2
+
+
+
+                 [1mHYPOTHESIS 2 of 2[0m
+
+multfst [] = []
+multfst (a0 : a1) = a0 : multfst (fun7 (a0 : a1))
+fun7 [_] = []
+fun7 (a0 : (_ : a2)) = a0 : a2
+
+Testing 1. hypothesis of: 'multfst'
+  multfst [0, 1, 2, 3, 4, 5]  ==  [0,0,0,0,0,0]
+
+Testing 2. hypothesis of: 'multfst'
+  multfst [0, 1, 2, 3, 4, 5]  ==  [0,0,0,0,0,0]
+
+...batch processing finished.
+Bye.
addfile ./tests/multlst-accum.bat
hunk ./tests/multlst-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise multlst
+:test multlst on "multlst [0, 1, 2, 3, 4, 5]"
+:quit
addfile ./tests/multlst-accum.out
hunk ./tests/multlst-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/multlst-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'multlst'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             multlst      in 53     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+multlst a0 = fun1 a0 []
+fun1 [] a0 = a0
+fun1 (a0 : a1) a2 = fun1 a1 (fun5 (a0 : a1) a2)
+fun5 [a0] a1 = a0 : a1
+fun5 (_ : (a1 : a2)) a3 = fun5 (a1 : a2) a3
+
+Testing 1. hypothesis of: 'multlst'
+  multlst [0, 1, 2, 3, 4, 5]  ==  [5,5,5,5,5,5]
+
+...batch processing finished.
+Bye.
addfile ./tests/negateAll-accum.bat
hunk ./tests/negateAll-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise negateAll
+:test negateAll on "negateAll [True, True, False, True, True, False, False]"
+:quit
addfile ./tests/negateAll-accum.out
hunk ./tests/negateAll-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/negateAll-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'negateAll'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             negateAll    in 19     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+negateAll [] = []
+negateAll (a0 : a1) = fun2 (a0 : a1) : negateAll a1
+fun2 (False : _) = True
+fun2 (True : _) = False
+
+Testing 1. hypothesis of: 'negateAll'
+  negateAll [True, True, False, True, True, False, False]  ==  [False,False,True,False,False,True,True]
+
+...batch processing finished.
+Bye.
addfile ./tests/odD-accum.bat
hunk ./tests/odD-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise odD
+:test odD on "odD (S (S (S (S (S (S Z))))))"
+:test odD on "odD (S (S (S (S (S (S (S Z)))))))"
+:quit
addfile ./tests/odD-accum.out
hunk ./tests/odD-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/odD-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'odD'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             odD          in 3     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+odD (Z) = False
+odD (S (Z)) = True
+odD (S (S a0)) = odD a0
+
+Testing 1. hypothesis of: 'odD'
+  odD (S (S (S (S (S (S Z))))))  ==  False
+
+Testing 1. hypothesis of: 'odD'
+  odD (S (S (S (S (S (S (S Z)))))))  ==  True
+
+...batch processing finished.
+Bye.
addfile ./tests/oddpos-accum.bat
hunk ./tests/oddpos-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise oddpos
+:test oddpos on "oddpos [1, 2, 3, 4, 5, 6, 7, 8]"
+:quit
addfile ./tests/oddpos-accum.out
hunk ./tests/oddpos-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/oddpos-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'oddpos'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             oddpos       in 610     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+oddpos [] = []
+oddpos (a0 : a1) = a0 : oddpos (fun11 (a0 : a1))
+fun11 [_] = []
+fun11 (_ : (_ : a2)) = a2
+
+Testing 1. hypothesis of: 'oddpos'
+  oddpos [1, 2, 3, 4, 5, 6, 7, 8]  ==  [1,3,5,7]
+
+...batch processing finished.
+Bye.
addfile ./tests/pepper-accum.bat
hunk ./tests/pepper-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise pepper
+:test pepper on "pepper Z [0, 1, 2, 3]"
+:quit
addfile ./tests/pepper-accum.out
hunk ./tests/pepper-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/pepper-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'pepper'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             pepper       in 458     loops
+             
+
+                 [1mHYPOTHESIS 1 of 2[0m
+
+pepper a0 a1 = fun1 a0 a1 : fun35 a0 a1 []
+fun1 a0 [] = (a0, Nothing)
+fun1 a0 (a1 : _) = (a0, Just (a1, S a0))
+fun35 _ [] a1 = a1
+fun35 a0 (a1 : a2) a3 = (S a0, fun376 a0 (a1 : a2) a3) : fun35 (S a0) a2 a3
+fun376 _ [_] _ = Nothing
+fun376 a0 (_ : (a2 : _)) _ = Just (a2, S (S a0))
+
+
+
+                 [1mHYPOTHESIS 2 of 2[0m
+
+pepper a0 a1 = fun4 a0 a1 []
+fun379 _ [_] _ = Nothing
+fun379 a0 (_ : (a2 : _)) _ = Just (a2, S (S a0))
+fun4 a0 a1 a2 = fun8 a0 a1 a2 : fun9 a0 a1 a2
+fun8 a0 [] _ = (a0, Nothing)
+fun8 a0 (a1 : _) _ = (a0, Just (a1, S a0))
+fun9 _ [] a1 = a1
+fun9 a0 (a1 : a2) a3 = (S a0, fun379 a0 (a1 : a2) a3) : fun9 (S a0) a2 a3
+
+Testing 1. hypothesis of: 'pepper'
+  pepper Z [0, 1, 2, 3]  ==  [(Z,Just (0,S Z)),(S Z,Just (1,S (S Z))),(S (S Z),Just (2,S (S (S Z)))),(S (S (S Z)),Just (3,S (S (S (S Z))))),(S (S (S (S Z))),Nothing)]
+
+Testing 2. hypothesis of: 'pepper'
+  pepper Z [0, 1, 2, 3]  ==  [(Z,Just (0,S Z)),(S Z,Just (1,S (S Z))),(S (S Z),Just (2,S (S (S Z)))),(S (S (S Z)),Just (3,S (S (S (S Z))))),(S (S (S (S Z))),Nothing)]
+
+...batch processing finished.
+Bye.
addfile ./tests/playTennis-accum.bat
hunk ./tests/playTennis-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise playTennis
+:quit
addfile ./tests/playTennis-accum.out
hunk ./tests/playTennis-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/playTennis-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'playTennis'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             playTennis   in 18     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+playTennis (Overcast, _, _, _) = True
+playTennis (Rain, _, _, Strong) = False
+playTennis (Rain, _, _, Weak) = True
+playTennis (Sunny, _, High, _) = False
+playTennis (Sunny, _, Normal, _) = True
+
+...batch processing finished.
+Bye.
addfile ./tests/powapp-accum.bat
hunk ./tests/powapp-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise powapp
+-- Non-exhaustive patterns
+-- :test powapp on "powapp [0, 1, 2, 3, 4, 5, 6, 7] [8, 9, 10, 11, 12, 13, 14, 15]"
+:quit
addfile ./tests/powapp-accum.out
hunk ./tests/powapp-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/powapp-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'powapp'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             powapp       in 2176     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+powapp [a0] [a1] = [a0, a1]
+powapp [a0, a1] [a2, a3] = [a0, a1, a2, a3]
+powapp [a0, a1, a2, a3] [a4, a5, a6, a7] = [a0, a1, a2, a3, a4, a5, a6, a7]
+
+...batch processing finished.
+Bye.
addfile ./tests/reversE-accum.bat
hunk ./tests/reversE-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise reversE
+:test reversE on "reversE [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/reversE-accum.out
hunk ./tests/reversE-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/reversE-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'reversE'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             reversE      in 4     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+reversE a0 = fun1 a0 []
+fun1 [] a0 = a0
+fun1 (a0 : a1) a2 = fun1 a1 (a0 : a2)
+
+Testing 1. hypothesis of: 'reversE'
+  reversE [0, 1, 2, 3, 4]  ==  [4,3,2,1,0]
+
+...batch processing finished.
+Bye.
addfile ./tests/rocket-accum.bat
hunk ./tests/rocket-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise rocket
+:test rocket on "rocket [O1, O2, O3] START"
+:quit
addfile ./tests/rocket-accum.out
hunk ./tests/rocket-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/rocket-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'rocket'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             rocket       in 3     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+rocket [] a0 = FLY a0
+rocket (a0 : a1) a2 = UNL a0 (rocket a1 (LOD a0 a2))
+
+Testing 1. hypothesis of: 'rocket'
+  rocket [O1, O2, O3] START  ==  UNL O1 (UNL O2 (UNL O3 (FLY (LOD O3 (LOD O2 (LOD O1 START))))))
+
+...batch processing finished.
+Bye.
addfile ./tests/shiftl-accum.bat
hunk ./tests/shiftl-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise shiftl
+:test shiftl on "shiftl [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/shiftl-accum.out
hunk ./tests/shiftl-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/shiftl-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'shiftl'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             shiftl       in 136     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+shiftl [] = []
+shiftl [a0] = [a0]
+shiftl (a0 : (a1 : a2)) = a1 : shiftl (a0 : a2)
+
+Testing 1. hypothesis of: 'shiftl'
+  shiftl [0, 1, 2, 3, 4]  ==  [1,2,3,4,0]
+
+...batch processing finished.
+Bye.
addfile ./tests/shiftr-accum.bat
hunk ./tests/shiftr-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise shiftr
+:test shiftr on "shiftr [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/shiftr-accum.out
hunk ./tests/shiftr-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/shiftr-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'shiftr'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             shiftr       in 458     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+shiftr [] = []
+shiftr (a0 : a1) = fun2 (a0 : a1) : fun3 (a0 : a1)
+fun2 [a0] = a0
+fun2 (_ : (a1 : a2)) = fun2 (a1 : a2)
+fun3 [_] = []
+fun3 (a0 : (a1 : a2)) = a0 : fun3 (a1 : a2)
+
+Testing 1. hypothesis of: 'shiftr'
+  shiftr [0, 1, 2, 3, 4]  ==  [4,0,1,2,3]
+
+...batch processing finished.
+Bye.
adddir ./tests/slow
addfile ./tests/slow/addN-accum.bat
hunk ./tests/slow/addN-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise addN
+:test addN on "addN (S (S (S Z))) [S (S Z), Z, S (S (S Z))]"
+:quit
addfile ./tests/slow/addN-accum.out
hunk ./tests/slow/addN-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/slow/addN-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'addN'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             addN         in 12462     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+addN _ [] = []
+addN a0 (a1 : a2) = fun3 a0 (a1 : a2) : addN a0 a2
+fun3 a0 (Z : _) = a0
+fun3 a0 (S a1 : _) = S (fun3 a0 [a1])
+
+Testing 1. hypothesis of: 'addN'
+  addN (S (S (S Z))) [S (S Z), Z, S (S (S Z))]  ==  [S (S (S (S (S Z)))),S (S (S Z)),S (S (S (S (S (S Z)))))]
+
+...batch processing finished.
+Bye.
addfile ./tests/slow/lengths-accum.bat
hunk ./tests/slow/lengths-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise lengths
+:test lengths on "lengths [[0], [1, 2, 3], [4, 5], [6]]"
+:quit
addfile ./tests/slow/lengths-accum.out
hunk ./tests/slow/lengths-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/slow/lengths-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'lengths'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             lengths      in 15325     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+lengths [] = []
+lengths (a0 : a1) = fun2 (a0 : a1) : lengths a1
+fun2 ([] : _) = Z
+fun2 ((_ : a1) : a2) = S (fun2 (a1 : a2))
+
+Testing 1. hypothesis of: 'lengths'
+  lengths [[0], [1, 2, 3], [4, 5], [6]]  ==  [S Z,S (S (S Z)),S (S Z),S Z]
+
+...batch processing finished.
+Bye.
addfile ./tests/slow/weave-accum.bat
hunk ./tests/slow/weave-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:generalise weave
+:quit
addfile ./tests/slow/weave-accum.out
hunk ./tests/slow/weave-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/slow/weave-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'weave'
+Background           <none>
+Simplified           False
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             weave        in 16887     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+weave [] a0 = a0
+weave [a0] a1 = a0 : a1
+weave (a0 : (a1 : a2)) a3 = a0 : fun26867 (a0 : (a1 : a2)) a3
+fun26867 (_ : (a1 : a2)) a3 = weave a3 (a1 : a2)
+
+...batch processing finished.
+Bye.
addfile ./tests/snoc-accum.bat
hunk ./tests/snoc-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise snoc
+:test snoc on "snoc 0 [1, 2, 3, 4]"
+:quit
addfile ./tests/snoc-accum.out
hunk ./tests/snoc-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/snoc-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'snoc'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             snoc         in 7     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+snoc a0 [] = [a0]
+snoc a0 (a1 : a2) = a1 : snoc a0 a2
+
+Testing 1. hypothesis of: 'snoc'
+  snoc 0 [1, 2, 3, 4]  ==  [1,2,3,4,0]
+
+...batch processing finished.
+Bye.
addfile ./tests/switch-accum.bat
hunk ./tests/switch-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise switch
+:test switch on "switch [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/switch-accum.out
hunk ./tests/switch-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/switch-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'switch'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             switch       in 1212     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+switch [] = []
+switch (a0 : a1) = fun2 (a0 : a1) : fun3 (a0 : a1)
+fun2 [a0] = a0
+fun2 (_ : (a1 : a2)) = fun2 (a1 : a2)
+fun3 [_] = []
+fun3 (a0 : (a1 : a2)) = switch (a0 : fun3 (a1 : a2))
+
+Testing 1. hypothesis of: 'switch'
+  switch [0, 1, 2, 3, 4]  ==  [4,1,2,3,0]
+
+...batch processing finished.
+Bye.
addfile ./tests/taiL-accum.bat
hunk ./tests/taiL-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise taiL
+:test taiL on "taiL [0, 1, 2, 3, 4]"
+:quit
addfile ./tests/taiL-accum.out
hunk ./tests/taiL-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/taiL-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'taiL'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             taiL         in 0     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+taiL (_ : a1) = a1
+
+Testing 1. hypothesis of: 'taiL'
+  taiL [0, 1, 2, 3, 4]  ==  [1,2,3,4]
+
+...batch processing finished.
+Bye.
addfile ./tests/unsuccessful/evens-accum.bat
hunk ./tests/unsuccessful/evens-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise evens
+:test evens on "evens [S (S (S (S Z))), S (S (S (S (S Z)))), S (S (S (S (S (S Z))))), S Z, Z]"
+:quit
addfile ./tests/unsuccessful/member-accum.bat
hunk ./tests/unsuccessful/member-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:generalise member
+:quit
addfile ./tests/unsuccessful/pepper'-accum.bat
hunk ./tests/unsuccessful/pepper'-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise pepper'
+:test pepper' on "pepper' Z [0, 1, 2, 3]"
+:quit
addfile ./tests/unsuccessful/powset-accum.bat
hunk ./tests/unsuccessful/powset-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise powset
+:test powset on "powset [0, 1, 2, 3]"
+:quit
addfile ./tests/unsuccessful/takE-accum.bat
hunk ./tests/unsuccessful/takE-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise takE
+:test takE on "takE (S (S (S (S Z)))) [0, 1, 2, 3, 4, 5]"
+:quit
addfile ./tests/zeros-accum.bat
hunk ./tests/zeros-accum.bat 1
+:load expl/Examples.hs
+:set +accum
+:set +simplify
+:generalise zeros
+:test zeros on "zeros [Z, S (S Z), S Z, Z, S Z, S (S (S Z)), Z]"
+:quit
addfile ./tests/zeros-accum.out
hunk ./tests/zeros-accum.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: tests/zeros-accum.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'zeros'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         True
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             zeros        in 25     loops
+             
+
+                 [1mHYPOTHESIS 1 of 1[0m
+
+zeros a0 = fun1 a0 []
+fun1 [] a0 = a0
+fun1 (a0 : a1) a2 = fun1 a1 (fun4 (a0 : a1) a2)
+fun4 (Z : _) a1 = Z : a1
+fun4 (S _ : _) a2 = a2
+
+Testing 1. hypothesis of: 'zeros'
+  zeros [Z, S (S Z), S Z, Z, S Z, S (S (S Z)), Z]  ==  [Z,Z,Z]
+
+...batch processing finished.
+Bye.