[make our bestMatchings behaviour opt-out
Helmut Grohne <grohne@cs.uni-bonn.de>**20150909121806
 Ignore-this: 96f9d94b30f4bb78dd509691d483ba00
 
 Due to our tests we converted the RuleDevelopment.Matching to only use
 matchings with an optimal number of closed parameter functions. Add a setting
 "-greedyMtch" to revert to the old behavior to be able to compare the
 improvement.
] 
<
[Consequently used ArgList and FunList throughout Matching.hs, and removed some dead code.
tobias@goedderz.info**20150311150101
 Ignore-this: f037c5c80971ecd43cfe82f25a789d48
] 
[Added :test inputs for most tests.
tobias@goedderz.info**20150211142436
 Ignore-this: f701e3e3dbfc37cde75d07635b029cb3
] 
[Added more eq examples and updated the eq test.
tobias@goedderz.info**20150219123253
 Ignore-this: 8355b4bf6a0037ef6cfd96f36664ee81
 
 Generalising eq resulted in false results due to incomplete examples. This patch
 completes the example set and adds a :test in tests/eq.bat that would trigger
 the previous wrong behaviour.
] 
[Updated tests/*.out files to reflect the behaviour of the new branch-and-bound algorithm
tobias@goedderz.info**20150311112654
 Ignore-this: 1a8381ae0fc08ddd9c906e2fa0783929
] 
[update test suite to match behaviour of improved matching algorithm
Helmut Grohne <grohne@cs.uni-bonn.de>**20150306140248
 Ignore-this: 58cce84fb596e79e75659841480f059b
] 
[Reuse closed lggs in mkIndirectCall and eliminate constant functions there
tobias@goedderz.info**20150312131506
 Ignore-this: 48be319d8052c1bab274e0312540d85c
] 
[adapt type of allMatchings to match bestMatchings
Helmut Grohne <grohne@cs.uni-bonn.de>**20150902090638
 Ignore-this: bf7c8c9267c3576a15675bcaf0e6f8c1
 
 allMatchings is no longer used, but it serves as documentation for the old way
 of doing things. In the mean time the type of bestMatchings changed, so
 allMatchings was no longer a drop-in replacement.
] 
> hunk ./src/Igor2/Config.hs 31
+    , scr_greedyMtch :: Bool
hunk ./src/Igor2/Config.hs 54
+    , scr_greedyMtch = True
hunk ./src/Igor2/Data/IgorMonad.hs 16
-    introduceAccums, usePara, atMaxLoops, atMaxTiers, getPatComparison,
+    introduceAccums,
+    doGreedyMtch,
+    usePara, atMaxLoops, atMaxTiers, getPatComparison,
hunk ./src/Igor2/Data/IgorMonad.hs 131
+-- | whether to match calls greedily
+doGreedyMtch :: IM Bool
+doGreedyMtch = gets $ scr_greedyMtch . igor_cnf
+
hunk ./src/Igor2/RuleDevelopment/Matching.hs 112
+                        greedyMatch <- doGreedyMtch
hunk ./src/Igor2/RuleDevelopment/Matching.hs 114
-                        let matchings = bestMatchings context m
+                        let matchings = if greedyMatch
+                                            then bestMatchings context m
+                                            else allMatchings m
hunk ./src/Igor2/UI/Help.hs 119
-    indent 5 (fill 20 (text "+enhanced") <> 
+    indent 5 (fill 20 (text "+greedyMtch") <>
+              align (fillwords "Match calls greedily, i.e. only allow calls where a maximal number of parameters results in closed rules.")) <$$>
+    indent 5 (fill 20 (text "+enhanced") <>
hunk ./src/Igor2/UI/UIStarter.hs 72
+greedyMtch = scr_greedyMtch . config
hunk ./src/Igor2/UI/UIStarter.hs 434
+    , ("greedyMtch",        "greedily match calls",
+            greedyMtch, \ v s -> s{ config= (config s) {scr_greedyMtch = v}})