[add a regression test for direct call missbehaviour
Helmut Grohne <grohne@cs.uni-bonn.de>**20150522115348
 Ignore-this: 780c714e8498c75068ca59d3fad1bc99
] 
<
[Allow the usage of "undefined" in I/O examples as a wildcard
tobias@goedderz.info**20150213102412
 Ignore-this: 5c8e31939f80e395830beb342306ca8d
] 
[Introduced monadic mapping functions for terms and rules
tobias@goedderz.info**20150213164658
 Ignore-this: 4bc67a627cf248cd9de12fd73d374aa7
] 
[Removed the code that renamed wildcards uniquely
tobias@goedderz.info**20150311111250
 Ignore-this: 840026c5697c0d6ca621e382953ca285
 
 As it's not possible to avoid duplicate names during unification completely,
 it's pointless to make some variables unique. This greatly simplifies and speeds
 up the introduction of wildcards.
] 
[remove fromVar from class Term
Helmut Grohne <grohne@cs.uni-bonn.de>**20150330143850
 Ignore-this: bfc7bfad917288de9d737111fb84d047
 
 fromVar is prone to error, so replace it with a new method getVar yielding a
 Maybe. Then isVar gains a default implementation. All users of fromVar are
 switched to getVar using a new helper foldTerm.
 
 Note that getVarNames now really returns a unique list unlike the original
 implementation which could collect variables with equal names and different
 types multiple times, but all callers do expect a unique list.
] 
[add predicate anySubterm
Helmut Grohne <grohne@cs.uni-bonn.de>**20150522114730
 Ignore-this: 18fec7b18695ead84368b07b0b760e74
] 
[fix wrong hypotheses generated from direct call
Helmut Grohne <grohne@cs.uni-bonn.de>**20150522115033
 Ignore-this: b902aa608385e9cd9d7b11ba35de6010
 
 In the direct call a small example for the caller is selected. If that example
 happens to have a wildcard on its rhs, the compatibility check always succeeds
 due to the implementation of (==) using equal for TExp. We are assuming
 transitivity here, but (==) isn't transitive. Thus add an extra check that
] 
> addfile ./regression_tests/wrongdirectcall.bat
hunk ./regression_tests/wrongdirectcall.bat 1
+:load regression_tests/wrongdirectcall.hs
+:set +simplify
+:generalise div1_5
+:quit
addfile ./regression_tests/wrongdirectcall.hs
hunk ./regression_tests/wrongdirectcall.hs 1
+module WrongDirectCall where
+
+data Nat = Z | S Nat deriving (Show, Eq)
+div1_5 :: Nat -> Nat
+div1_5 Z = Z
+div1_5 (S Z) = S Z
+div1_5 (S(S(S Z))) = S(S Z)
+div1_5 (S(S(S(S Z)))) = S(S(S Z))
+div1_5 (S(S(S(S(S(S Z)))))) = S(S(S(S Z)))
+div1_5 (S(S Z)) = undefined
addfile ./regression_tests/wrongdirectcall.out
hunk ./regression_tests/wrongdirectcall.out 1
+
+  .___                   ._ ._             
+  |   | ____  ____ ._____| || |  ._       
+  |   |/ __ \/  _ \|  __ \ || | _| |__ 
+  |   / /_/  ) <_> )  | \/ || |/_   _/   
+  |___\___  /\____/|__|  |_||_|  |_|    
+     /_____/                v0.8
+
+Welcome to IgorII. 
+Running IgorII in batch mode with file: regression_tests/wrongdirectcall.bat
+
+      [1m- - - - START SYNTHESIS WITH - - - -[0m
+
+Targets              'div1_5'
+Background           <none>
+Simplified           True
+Greedy rule-splitting False
+Accumulators         False
+Enhanced             False
+Use paramorphisms    False
+Compare rec args     AWise
+DumpLog              False
+Debug                False
+Maximal tiers        0
+Maximal loops        -1
+
+      [1m- - - - - - - FINISHED - - - - - - -[0m
+
+             div1_5       in 33     loops
+             
+
+                 [1mHYPOTHESIS 1 of 4[0m
+
+div1_5 (Z) = Z
+div1_5 (S a0) = S (fun1 (S a0))
+fun1 (S (Z)) = Z
+fun1 (S (S a0)) = S (div1_5 (fun13 (S (S a0))))
+fun13 (S (S (Z))) = Z
+fun13 (S (S (S a0))) = a0
+
+
+
+                 [1mHYPOTHESIS 2 of 4[0m
+
+div1_5 (Z) = Z
+div1_5 (S a0) = S (fun1 (S a0))
+fun1 (S (Z)) = Z
+fun1 (S (S a0)) = S (div1_5 (fun14 (S (S a0))))
+fun14 (S (S (Z))) = S Z
+fun14 (S (S (S a0))) = a0
+
+
+
+                 [1mHYPOTHESIS 3 of 4[0m
+
+div1_5 (Z) = Z
+div1_5 (S (Z)) = S Z
+div1_5 (S (S a0)) = S (S (div1_5 (fun17 (S (S a0)))))
+fun17 (S (S (Z))) = Z
+fun17 (S (S (S a0))) = a0
+
+
+
+                 [1mHYPOTHESIS 4 of 4[0m
+
+div1_5 (Z) = Z
+div1_5 (S (Z)) = S Z
+div1_5 (S (S a0)) = S (S (div1_5 (fun18 (S (S a0)))))
+fun18 (S (S (Z))) = S Z
+fun18 (S (S (S a0))) = a0
+
+...batch processing finished.
+Bye.