-
Notifications
You must be signed in to change notification settings - Fork 0
/
TuGames.wl
7247 lines (6019 loc) · 314 KB
/
TuGames.wl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
(* ::Package:: *)
(* :Title: TuGames.m *)
Off[Syntax::stresc];
Off[General::obspkg];
(* :Context: TuGames` *)
(* :Summary:
This package is an extension to the package written by Michael Carter for
modeling and calculating solutions and properties for cooperative games with
transferable utilities.
*)
(* :Author:
Holger Ingmar Meinhardt
Department of Economics
University of Karlsruhe (KIT)
*)
(* :Package Version: 3.1.4 *)
(*
:Mathematica Version: 12.x, 13.x, 14.x
The function ConstrainedMax/ConstrainedMin or Linear/DualLinearProgramming have been deprecated
in Version 3 and are replaced by LinearOptimization. Thus, this version is not any more compatible
with Mathematica versions prior to 12. This replacement allows supplying the Method options
of LinearOptimization. In this context, we strongly recommend applying for a MOSEK license, which
is in according to our experience up to 50 times faster than the other methods. To change the method
one needs just to set Method -> MOSEK. For changing the solver, one has to set CallMinimize -> True
or CallMaximize -> True, for instance. One shall check first with Options[command] if the solver
is available.
*)
(* :Package: Tested under RHEL 8.2, Lustre 2.12.6_ddn40,
RHEL 8.6, Lustre 2.12.6_ddn40,
RHEL 8.8, Lustre 2.12.9_ddn41,
Ubunutu: 18.04, 20.04.
*)
(*:Keywords:
Dual Game, Superadditive Game, Convex Game, Strong Convex Game, Average-Convex Game,
Kernel, balancing Maximum Excesses.
*)
(* :Sources:
G. Bergantinos & J. Masso, Notes on a new compromise value: The Chi-Value,
Optimization 1996, Vol. 38, pp. 277-286.
Chih Chang and Theo Driessen, (Pre)Kernel Catchers for Cooperative Games,
OR Spectrum, Vol. 17, 1995
Chih Chang and Ching Yu Kan, The Bound of the Kernel, Mathematical Social
Sciences, Vol. 25, 87-93, 1992.
Chih Chang and Chrong-Hisan Lian, Some Results on (Pre)Kernel Catchers and
the Coincidence of the Kernel and Prekernel, International Game Theory Review,
Vol. 4, No. 3, 201-211, 2002.
Pierre Dehez (2023), COOPERATIVE PRODUCT GAMES, LIDAM Discussion Paper CORE 2023 / 10.
Pierre Dehez (2023), Sharing a collective probability of success, Mathematical Social
Sciences 123, 122-127.
Theo Driessen, Cooperative Games, Solutions and Applications, Kluwer Academic
Publishers, Dordrecht, 1988.
Theo Driessen. The Greedy Bankruptcy Game: An Alternative Game Theoretic Analysis of a
Bankruptcy Problem. In L.A. Petrosjan and V.V. Mazalov, editors, Game Theory and Applications,
volume IV, pages 45\[Dash]61, Commack, New York, 1998. Nova Science Publishers Inc.
E. Inarra and J. Usategui, The Shapley value and average convex games,
IJGT, 22, 13-29, 1993.
U. Faigle, W. Kern and J. Kuipers, An efficient algorithm for nucleolus and
prekernel computation in some classes of Tu Games. Memorandum No. 1464,
Faculty of Mathematical Sciences, University of Twente, 1998.
Y. Funaki, Upper and Lower Bounds of the Kernel and Nucleolus,
IJGT, 121-129, 1986.
Y. Funaki and H. I. Meinhardt, A Note on the Pre-Kernel and Pre-Nucleolus
for Bankruptcy Game, The Waseda Journal of Political Science and Economics,
Waseda, Japan, 2006.
J. Getan, J. M. Izquierdo, J. Montes, C. Rafels. The bargaining set and the kernel
for almost-convex games, (2012). mimeo.
Hou, D., Xu, G., Sun, P., Driessen, T., 2018. The Shapley value for the probability game.
Oper. Res. Lett. 46, 457-461.
I. Katsev and E. Yanovskaya, Between the Prekernel and the Prenucleolus, mimeo, 2009.
K. Kido. A nonlinear Approximation of the Nucleolus. In W. Takahashi and T. Tanaka,
editors, Proceedings of the International Conference on Nonlinear Analysis and
Convex Analysis, pages 307\[Dash]317, Tokyo, 2004. Yokohama Publishers, Yokohama, Japan
K. Kido. Convergence Theorems for lp-Norm Minimizers with respect to p. Journal of
Optimization Theory and Applications, 125:577\[Dash]589, 2005.
K. Kido. A Modified Kohlberg Criterion and a Nonlinear Method to compute the Nucleolus
of a Cooperative Game. Taiwanese Journal of Mathematics, 12:1581\[Dash]1590, 2008.
M. Leng and M. Parlar. Analytic solution for the nucleolus of a three-player cooperative
game. Naval Research Logistics (NRL), 57(7):667\[Dash]672, 2010. doi: 10.1002/nav.20429.
URL https://onlinelibrary.wiley.com/doi/abs/10.1002/nav.20429.
M. Leng, Ch. Luo, L. Liang. Multi-Player Allocations in the Presence of Diminishing Marginal
Contributions: Cooperative Game Analysis and Applications in Management Science, 2020,
to appear in Management Science
S. C. Littlechild. A simple expression for the nucleolus in a special case. International
Journal of Game Theory, 3:21-29, 1974. URL https://doi.org/10.1007/BF01766216.
S. C. Littlechild and G. Owen. A simple expression for the shapely value in a special case.
Management Science, 20(3):370-372, 1973. ISSN 00251909, 15265501.
URL http://www.jstor.org/stable/2629727.
S. C. Littlechild and G. Owen. A further note on the nucleolus of the airport game.
International Journal of Game Theory, 5(2):91-95, 1976. URL https://doi.org/10.1007/BF01753311.
S. C. Littlechild and G. F. Thompson. Aircraft landing fees: A game theory approach.
The Bell Journal of Economics, 8(1):186-204, 1977. ISSN 0361915X.
URL http://www.jstor.org/stable/3003493.
S. C. Littlechild and KG. Vaidya, The propensity to disrupt and the disruption nucleolus
of a characteristic function game. International Journal of Game Theory 5(2):151-161,
1976.
M. Maschler, The Bargaining Set, Kernel and Nucleolus, Handbook of Game
Theory, Chapter 18, 591-647, 1992.
M. Maschler, B. Peleg and L.S. Shapley, Geometric Properties of Kernel,
Nucleolus and related Concepts, in Mathematics of Operations Research,
Vol4 Nov. 1979, p. 303-338.
J-E. Martinez-Legaz, Dual Representation of Cooperative Games based on
Fenchel-Moreau Conjugation, Optimization, pp. 291-319, Vol. 36, 1996.
H. I. Meinhardt, An LP approach to compute the pre-kernel for cooperative games,
Computers and Operation Research, Vol 33/2 pp. 535-557,2006.
H. I. Meinhardt, The Pre-Kernel as a Tractable Solution for Cooperative Games:
An Exercise in Algorithmic Game Theory, Theory and Decision Library C,
Springer Publisher, Heidelberg. pp. 1-247, 2013.
H. I. Meinhardt, A Characterization of Average-Convexity based on Unanimity Coordinates,
mimeo, 2009.
H. I. Meinhardt. The Modiclus Reconsidered. Technical report, Karlsruhe Institute of Technology
(KIT), Karlsruhe, Germany, 2018b. URL http://dx.doi.org/10.13140/RG.2.2.32651.75043.
H. I. Meinhardt. Reconsidering Related Solutions of the Modiclus. Technical report,
Karlsruhe Institute of Technology (KIT), Karlsruhe, Germany, 2018c.
URL http://dx.doi.org/10.13140/RG.2.2.27739.82729
A. Meseguer-Artola, Using the Indirect Function to characterize the Kernel of a TU-Game,
Departament d'Economia i d'Historia Economica, 1997.
G. Owen, A Note on the Nucleolus, International Journal of Game Theory,
Vol. 3., pp. 101-103, 1974.
G. Owen, Game Theory, Third Edition, Academic Press, 1995.
C. Rafels and N. Ybern, Even and Odd Marginal Worth Vectors, Owen's
Multilinear Extension and Convex Games, IJGT, 113-126, 1995.
L. M. Ruiz, F. Valenciano, and J. M. Zarzuelo. The Least Square Pre-Nucleolus and the
Least Square Nucleolus. Two Values for TU Games based on the Excess Vector.
International Journal of Game Theory, 25:113\[Dash]134, 1996.
R. T. Rockafellar, Convex Analysis, Princeton University Press, 1970.
Rosales, D. (2014), Cooperative product games (www.academia.edu/401764)
J. M. Solano and C. Rafels, Convexity versus average convexity: potential,
pmas, the shapley value and simple games, Documents de Treball, No. 3,
Universitat de Barcelona, 1996.
R.E. Stearns, Convergent Transfer Schemes for N-Person Games,
Transaction American Mathematical Society, 449-459, 1968.
Sudhoelter (1997), The modified nucleolus: Properties and axiomatizations.
International Journal of Game Theory, 26 (2):147\[Dash]182, Jun 1997. ISSN 1432-1270.
doi: 10.1007/BF01295846. URL https://doi.org/10.1007/BF01295846.
Hal Varian (Ed.). Economics and Financial Modeling with Mathematica,
Springer, 1992.
*)
(*
See ChangeLog file for a complete list of revisions.
Version 2.2:
Transcription of the old option rules to the new ones invented by Mathematica 8.x.
This package is now exclusively dedicated to Mathematica version 8.x and higher.
FilledCore[] is deprecated now. Using the old graphic concept Version 1.8 is required.
Version 2.3:
Modification:
Change protected command SubsetQ[] to SubSetQ[] from the VertexEnum package. Order is
reversed to SubsetQ[] which is new in Mathematica version 10.x.
Some minor code revision.
New Functions:
MLExtension[] - Computes the multilinear extension of the game.
ShapleyValueML[] - Computes the Shapley value from the multilinear extension of the game.
PreKernel[] - Computes a pre-kernel point by Algorithm 8.2.1 of Meinhardt (2013).
Bug fixes:
FindKernelSolution[] convergence process to the kernel should be now more robust.
Version 2.4
Some minor code revision.
Version 2.5
Adding the function ApproxNuc[] to compute the (p, k)-nucleolus which is an approximation of
the nucleolus by a non-linear optimization approach, i.e., minimizes a p-norm. The function
NonLinNuc[] is based on this function to compute the nucleolus. We extended this idea to the
pre-nucleolus through the commands ApproxPreNuc[] and NonLinPreNuc[]. In addition, we added
the least square computation of the (pre-)nucleolus by the functions LSNuc[] and LSPreNuc[].
Functions to compute the barycenter of the extreme points of the core, dual cover game,
dual extension, primal extension, modiclus, a proper modified pre-kernel element,
potential of a game, the Lorenz solution, and Dutta-Ray solution for convex games
have been added.
Bug fixes:
An insufficient coloring of the function FilledCoreV6[] caused by an incomplete delaunay
triangulation of the Mathematica built-in function DelaunayTriangulation[] has been fixed.
Version 2.5.1
Installation procedure has changed. The package is now distributed by Paclet. The documentation
was revised and extended. About 230 pages were added to the documentation. The error
handling of functions was improved.
Some minor code revision and bug fixes.
Version 2.5.2
We have revised the Installation procedure of the Cddmathlink library, which makes it not any more necessary
to explicitly formulate some conditions for all operating systems. Moreover, some binaries for RHEL 7.5
ships now with the package.
Some minor code revision and bug fixes.
Version 2.5.3
Adding some binaries for Mathematica 10.0 or later on OS X 10.9 or later. We are very grateful
to Szabolcs Horv\[AAcute]t for providing these to the community.
Change of the License to the MIT License terms.
Version 2.5.4
Functions to compute and to verify the simplified modified pre-kernel/nucleolus are added. They are called
SMPrenucleolus[], IsSMPrenucleolusQ[], SMPreKernel[], IsSMPreKernelQ[]. For the last two commands we implemented
parallel counterparts called ParaSMPreKernel[], and ParaIsSMPreKernelQ[] respectively.
Adding the function BalancedCollectionQ[] that should replace in the future the function BalancedSelectionQ[].
For n=>4 the function returns incorrect results, probably caused by a bug of the DualLinearProgramming[] function.
Example of incorrect results:
Consider the collection of sets given by
cS4={{1}, {2}, {3}, {1, 2}, {1, 3}, {2, 4}, {3, 4}, {2, 3, 4}};
then the return value is false
In[29]:= First[BalancedSystemQ[cS4, Range[4]]]
Out[29]= False
However, the system is balanced, since the balancing weights are given by
whgs = {3,1,1,1,1,2,2,1}/5
Related to this context we provide the function BalancedInequalityQ[] to check whether a balanced system
satisfies a balanced inequality of a TU-game. Notice that if all balanced systems satisfying this property
non-emptiness of the core is guaranteed. Recall that for n=4 we need to check 9 equivalence classes, however,
for n=6 we have to check 158 classes.
Version 2.6.0
Adding functions to compute the EPSD-Value, Chi-Value, PD-Value and the nucleolus by the Leng and Parlar (2010) formulae for three person
zero-normalized and super-additive games. Changing the package extension from *.m to *.wl.
Performing some code maintenance and minor bug fixes.
Version 2.6.1
Code revision and optimization. The (anti-)pre-kernel computation is now faster up to a factor 3 in serial as well as in parallel.
Version 2.6.2
Adding functions:
- AlmostConvexQ[] to check if the game is almost convex.
- AlmostConcaveQ[] to check if the game is almost concave.
- ADMCGameQ[] to check the property if the game satisfies almost diminishing marginal contributions.
- AIMCGameQ[] to check the property if the game satisfies almost increasing marginal contributions.
- kConvexity[] to check if the game is k-convex.
- EANSCValue[] to compute the Equal Allocation of Non-Separable Contribution/Cost value.
Revised the functions:
ConvexQ[], ConcaveQ[], Nuc1convex[].
Minor Bug fixes and code revision.
Version 3.0.0
Not any more backward compatible to Mathematica versions smaller than 12 due to the port
to the new collection of algorithms for solving convex problems introduced in version 12.
ConstrainedMax/ConstrainedMin and LinearProgramming/DualLinearProgramming are replaced by LinearOptimization.
This replacement has been conducted for the following functions:
Nucleolus -- Part of CooperativeGames. Function originally written by M. Carter.
LeastCoreAux -- Part of CooperativeGames. Function originally written by M. Carter.
ModifiedNucleolus -- Part of TuGames.
ModifiedKernel -- Part of TuGames.
PreNucleolus -- Part of TuGames.
LexiCenter -- Part of TuGames.
Modiclus -- Part of TuGames.
IsModiclusQ -- Part of TuGames.
Kernel -- Part of TuGames.
KernelCalculation -- Part of TuGames.
BalancedInequalityQ -- Part of TuGames.
BalancedCollectionQ -- Part of TuGames.
EpsCore -- Part of TuGames.
FirstCriticalVal -- Part of TuGames.
DeltaLP -- Part of TuGames.
FeasibleConstraints -- Part of TuGames.
KernelVertices -- Part of TuGames.
SolvePrimal -- Part of TuGamesAux.
SolveDual -- Part of TuGamesAux.
BalancedSystemQ -- Part of TuGamesAux.
ParaModiclus -- Part of ParaTuGames.
ParaIsModiclus -- Part of ParaTuGames.
New added functions are:
WeaklyBalancedCollectionQ -- Part of TuGames.
WeaklyBalancedSystemQ -- Part of TuGamesAux.
The function WeaklyBalancedCollectionQ replaces WeaklyBalancedSelectionQ, the latter will be deprecated in a future version.
Version 3.0.1
Improved exception handling for functions using LinearOptimization. Performance improving of revised functions in Version 3.
Some minor bug fixes.
Version 3.0.2
Adjusting the functions
ApproxPreNuc -- Part of TuGames,
ApproxNuc -- Part of TuGames,
DuttaRay -- Part of TuGames,
LorenzSolution -- Part of TuGames,
NonLinPreNuc -- Part of TuGames,
NonLinNuc -- Part of TuGames,
PreKernelSolution -- Part of TuGames
to the new set of optimization algorithms.
Adding options to the functions PreKernelQ, MaxExcessBalanced, AntiPreKernelQ, MinExcessBalanced, ParaPreKernelQ, ParaMaxExcessBalanced, ParaAntiPreKernelQ, ParaMinExcessBalanced.
Improving the performance of PreKernelSolution.
Some minor bug fixes and code revision.
Version 3.0.3
Adding the new functions:
VetoRichPlayers, DecomposeInPositiveGames, AverageConcaveQ, AlmostAverageConvexQ, AlmostAverageConcaveQ, PositiveGameQ, SemiConvexQ.
Fixing Bug in AnimationKernelProperty2d with the FigureSize option in Manipulate.
Fixing an issue in ModifiedNucleolus and ModifiedKernel w.r.t. the boundary Infinity, which was replaced by 1000*v[T].
Some minor bug fixes and code revision.
Version 3.1.0
Update of the Documentation references pages and adjustment to Mathematica Version 13.0.
Version 3.1.1
Adding the new functions:
ProductGame, ProbabilityGame, HarsanyiValue, ShapAirProb, TauValAirProb, NucAirProb.
Version 3.1.2
1. Revision
Update of the Documentation references pages.
2. Modification
Adding the new functions:
AirportProblem.
3. Bug Fixes
Fixing Bug related to the Harsanyi dividends in ProductGame and KernelCalculation related to missing output.
Some minor bug fixes and code revision.
Version 3.1.4
1. Revision
Update of the Documentation references pages.
Code Revision for FilledCoreV6 to avoid overlapping labeling.
2. Modification
Adding the new functions:
FilledWeberSetV6, PlotWeberSet3dV6, CddGmpPlotWeberSet, EqDistDividends, CostLocationGame, DualProbabilityGame, PQNorm.
3. Bug Fixes
Some minor bug fixes and code revision.
*)
(*
:Limitations:
see TUG/Guides/ManualTuGames from the Documentation Center.
*)
(*
:General Remarks:
Since version 2.5.3, this project is licensed under the MIT License terms.
*)
(*:Requirements:
The Package Cooperat.m by Michael Carter and VertexEnum.m
by Komei Fukuda and Ichiro Mizukoshi. The program 'cddmathlink' by Komei
Fukuda is highly recommended for calculating all extreme
points of the core. Nevertheless, it is not necessary to have installed
the C-library on your computer to run properly the package 'TuGames.m'.
Some pre-compiled binaries of the C-library can be found under
https://inf.ethz.ch/personal/fukudak/cdd_home/
As a substitute use the function VerticesCore[] that is based on
VertexEnum.m.
*)
(* :Acknowledgment:
We are very thankful to Szabolcs Horv\[AAcute]t for his helpful support, suggestion of improvements,
and of his piece of advice to follow best practice of publicizing a Mathematica package
that allows a custom installation for everyone. Moreover, we owe him executables for
MacOSX, which ship with this version.
The author acknowledge support by the state of Baden-W\[UDoubleDot]rttemberg through bwHPC.
*)
BeginPackage["TUG`TuGames`", {"TUG`coop`CooperativeGames`","TUG`TuGamesAux`","TUG`vertex`VertexEnum`","ComputationalGeometry`"}];
If[SameQ[Global`$ParaMode,"False"],
Print["==================================================="];
Print["Loading Package 'TuGames' for ", $OperatingSystem];
Print["==================================================="];
Print["TuGames V3.1.4 by Holger I. Meinhardt"];
Print["Release Date: 03.06.2024"];
Print["Program runs under Mathematica Version 12.0 or later"];
Print["Version 12.x or higher is recommended"];
Print["==================================================="];,
True];
(*
The following describes some useful functions in the package to
check properties of a game.
*)
DefineGame::usage =
"GameName := (DefineGame[T,values];); defines the game to be
analyzed. T is the player set and values are the worth for the coalitions.
Do not forget the semicolons, otherwise some compatibly problems with
M. Carter's ShapleyValue[] occurs";
DualGame::usage=
"DualGame[game] assigns to each coalition the value what it can extract from
the grand coalition by leaving the grand coalition.";
CostSaving::usage=
"CostSaving[costvec_List,T] computes the cost savings for each coalition
from the vector of costs 'costvec'. T is the player set. The resultant cost
saving vector can be used to define a new game.";
SuperAdditiveQ::usage =
"SuperAdditiveQ[game, options] checks if a game is superadditive.";
WeaklySuperAdditiveQ::usage =
"WeaklySuperAdditiveQ[game] checks if a game is weakly superadditive.
Suppose the coalitions S_1,S_2,...S_k partition the grand coalition T,
then the game v is weakly superadditive, if sum_i v(S_i) <= v(T).
This superadditivity property is a necessary condition for the core
of the game v to be nonempty.";
SelectSuperSets::usage =
"SelectSuperSets[i] selects all super sets of i";
PositiveGameQ::usage =
"PositiveGameQ[game] returns True whenever all unanimity coordinates are non-negative, otherwise False."
IncreasingMargContributions::usage =
"IncreasingMargContributions[game,i] checks if the marginal contributions of player i is increasing.";
DecomposeInPositiveGames::usage =
"{True/False,{pg1,pg2,cg}}=DecomposeInPositiveGames[game] decomposes a TU game into a difference of two positive (i.e., convex) games, denoted by pg1 and pg2. The symbol cg is the recomposed game.";
ConvCheck::usage =
"ConvCheck[game] checks the convexity of the game. It provides information whether
the marginal contributions are increasing for each player.";
ConvexQ::usage =
"ConvexQ[game] checks if the Tu-game is convex (super-modular). It returns the value 'True' or 'False'.";
AlmostConvexQ::usage =
"AlmostConvexQ[game] checks if the Tu-game is almost convex (average super-modular). It returns the value 'True' or 'False'.";
AlmostAverageConvexQ::usage =
"AlmostAverageConvexQ[game] checks if the Tu-game is almost average-convex (almost average super-modular). It returns the value 'True' or 'False'.";
AlmostConcaveQ::usage =
"AlmostConcaveQ[game] checks if the Tu-game is almost concave (almost sub-modular). It returns the value 'True' or 'False'.";
AlmostAverageConcaveQ::usage =
"AlmostAverageConcaveQ[game] checks if the Tu-game is almost average-concave (almost average sub-modular). It returns the value 'True' or 'False'.";
ConcaveQ::usage =
"ConcaveQ[game] checks if the Tu-game is concave (sub-modular). It returns the value 'True' or 'False'.";
StrIncreasMargContrib::usage =
"StrIncreasMargContrib[game,i] checks if the marginal contributions of player i is
strictly increasing.";
ConvStrQ::usage =
"ConvStrQ[game] checks if the Tu-game is strictly convex. It provides information
whether the marginal contributions are increasing for each player.";
ConvexStrQ::usage =
"ConvexStrQ[game] checks if the Tu-game is strictly convex. It returns only 'True' or 'False'.";
AverageConvexQ::usage =
"AverageConvexQ[game,opts] checks the average-convexity of the game.
It returns 'True' or 'False'. Calling the function with the option will return
the sum of the marginal contributions for each coalition S w.r.t. to each
superset S union {j}. These values must be non-negative.";
AvConvexQ::usage =
"AvConvexQ[game, opts] checks the average-convexity of the game.
It returns 'True' or 'False'. Now same as AverageConvexQ[].
For more details see also the description of AverageConvexQ[].";
AverageConcaveQ::usage =
"AverageConcaveQ[game,opts] checks the average-concavity of the game.
It returns 'True' or 'False'. Calling the function with the option will return
the sum of the marginal contributions for each coalition S w.r.t. to each
superset S union {j}. These values must be non-positive.";
AvConcaveQ::usage =
"AvConcaveQ[game, opts] checks the average-concavity of the game.
It returns 'True' or 'False'. Now same as AverageConcaveQ[].
For more details see also the description of AverageConcaveQ[].";
ADMCGameQ::usage =
"ADMCGameQ[game] checks if the TU-game satisfies the property of almost diminishing marginal contributions. It returns 'True' or 'False'.";
AIMCGameQ::usage =
"AIMCGameQ[game] checks if the TU-game satisfies the property of almost increasing marginal contributions. It returns 'True' or 'False'.";
GameMonotoneQ::usage =
"GameMonotoneQ[game] verifies if the game is monotone.";
MonotoneQ::usage =
"MonotoneQ[game] verifies if the game is monotone. This is done for all sub-games.";
ZeroMonotoneQ::usage =
"ZeroMonotoneQ[game] verifies if the game is zero-monotone.";
ZeroNormalization::usage =
"ZeroNormalization[game] determines the zero-normalized game.";
ZeroOneNormalization::usage =
"ZeroOneNormalization[game] determines the (0,1)-normalized game.";
OneNormalization::usage =
"OneNormalization[game] determines the one-normalized game.";
SmallestContributionVector::usage =
"SmallestContribution[game] calculates the vector of the smallest contributions.";
SmallestContribution::usage =
"SmallestContribution[game,i] calculates the smallest contribution of player i.";
Scrb::usage =
"Scrb[game,i] calculates the separable cost-remaining benefits for player i. See Funaki (1986).";
ScrbSolution::usage =
"ScrbSolution[game] calculates the separable cost-remaining benefits. See Funaki (1986).";
TIJsets::usage =
"TIJsets[i,j] computes the coalitions which contains player i but not j.";
ExcessPayoff::usage =
"ExcessPayoff[game,payoff] calculates the excess vector for the (pre-)imputation 'payoff'.";
MaxExcessBalanced::usage =
"MaxExcessBalanced[game,payoff] determines whether the maximum surpluses induced by
the imputation 'payoff' are maximal balanced among the players. Be careful, the
function does not check the efficiency property. For checking in addition the efficiency
property consult the function PreKernelQ[].";
MinExcessBalanced::usage =
"MinExcessBalanced[game,payoff] determines whether the minimum surpluses induced by the
imputation 'payoff' are minimal balanced among the players. Be careful, the function does
not check the efficiency property. For checking in addition the efficiency
property consult the function AntiPreKernelQ[].";
MaxExcessSets::usage =
"MaxExcessSets[game,payoff] computes the set of proper coalitions having largest excesses.";
IntersectionOfMaxExcessSets::usage =
"IntersectionOfMaxExcessSets[game, payoff] determines if the set of proper coalitions having
largest excesses has an empty intersection.";
KernelCalculation::usage =
"KernelCalculation[game,options] computes kernel or pre-kernel point(s) of a game.
Optional parameters are: ChangeInternalEps, DisplayAllResults, EpsilonValue and
SetGameToNonZeroMonotonic. The first optional parameter ChangeInternalEps can
be used to speed up computation or to search for different allocations in the initial LPs.
If the option DisplayAllResults is set to 'True', then the return value is related
to a kernel solution, objective function, constraint set of the final LP,
all bi-symmetrical transfers, and the allocations computed by the initial LPs.
In this case invoke the function by {solker,obj,const,tra,pay}=KernelCalculation[game].
The default value is set to 'False', that is, the return value is just related to a kernel
solution and the allocation obtained by the initial LPs. The option EpsilonValue is a critical
value for changing the strong epsilon-core. This value can be calculated, for instance,
by the function FirstCriticalVal[game]. A solution can be checked with the functions
KernelImputationQ[], KernelImputationListQ[], PreKernelQ[], or MaxExcessBalanced[]. To
search for a kernel solution of an non zero-monotonic game set the last variable to
'True', but in this case the function need not to terminate properly. For its default value
'False' the function Kernel[game] will be invoked to avoid infinite loops. To increases the
computational reliability in cases of numerical issues the following methods can be used:
RevisedSimplex, CLP, GUROBI, MOSEK, or Automatic. Default setting is Automatic. This option
can be used in either case by CallMaximize->False. For getting more
precise results one can even set Method->{InteriorPoint, Tolerance->10^-10}.";
Kernel::usage =
"Kernel[game,options] computes a kernel point of the game from one LP. Options are:
DisplayAllResults and EpsilonValue. If the option DisplayAllResults is set to 'True',
then the return value is related to a kernel solution, objective function, constraint
set of the final LP, the complete variable set, and all bi-symmetrical transfers. In
this case invoke the function by {solker,obj,const,var,tra}=Kernel[game]. The option
EpsilonValue is a critical value to change the strong epsilon-core. This value can be
calculated, for instance, by the function FirstCriticalVal[game]. To increases the computational
reliability in cases of numerical issues the following methods can be used: RevisedSimplex, CLP,
GUROBI, MOSEK, or Automatic. Default setting is Automatic. For getting more precise results
one can even set Method->{InteriorPoint, Tolerance->10^-10}.";
KernelVertices::usage =
"KernelVertices[game,options] computes the vertices of the Kernel solution from an LP. To
increases the computational reliability in cases of numerical issues the following methods
can be used: RevisedSimplex, CLP, GUROBI, MOSEK, or Automatic. Default setting is Automatic.
This option must be used in connection with CallMaximize->False. For getting more precise
results one can even set Method->{InteriorPoint, Tolerance->10^-10}.";
ModifiedKernel::usage =
"ModifiedKernel[game,options] computes a kernel point from the least core.
That means, a vertex of the kernel solution inside of the least core will be computed.
Thus, in many cases the Nucleolus should be computed. The algorithm is based
on a method by Peleg to translate the definition of the Nucleolus into
a sequence of linear programs. To increases the computational reliability in
cases of numerical issues the following methods can be used: RevisedSimplex, CLP,
MOSEK, or Automatic. Default setting is Automatic. For getting more precise results
one can even set Method->{InteriorPoint, Tolerance->10^-10}.";
ModifiedNucleolus::usage =
"ModifiedNucleolus[game,options] computes the nucleolus from the least core.
The algorithm is based on a method by Peleg to translate the definition of the
Nucleolus into a sequence of linear programs. The recursion stops, if the set
of new equal constraints is empty. To increases the computational reliability in
cases of numerical issues the following methods can be used: RevisedSimplex, CLP,
MOSEK, or Automatic. Default setting is Automatic. For getting more precise results
one can even set Method->{InteriorPoint, Tolerance->10^-10}.";
LexiCenter::usage =
"LexiCenter[game,options] computes the lexicographic center of a TU-game, i.e.
the nucleolus. Same as ModifiedNucleolus[].";
LSPreNuc::usage =
"LSPreNuc[game] computes the least square pre-nucleolus.";
LSNuc::usage =
"LSNuc[game] computes the least square nucleolus.";
FTPreNuc::usage =
"FTPreNuc[game] computes the pre-nucleolus by a Fenchel Transform Method.";
NonLinPreNuc::usage =
"NonLinPreNuc[game,p,k,tol,options] computes by a non-linear optimization method the pre-nucleolus,
otherwise it returns a $Failed. Different solvers can be selected by option setting Method->Solver.
Permissible solvers are: Automatic, GUROBI, IPOPT, MOSEK, DifferentialEvolution, NelderMead,
RandomSearch, or SimulatedAnnealing. Default setting is Automatic.";
ApproxPreNuc::usage =
"ApproxPreNuc[game,p,k,options] computes the (p,k)-nucleolus by a non-linear minimization method.
It is an approximation of the pre-nucleolus. If (p,k)=(2,k), then it computes the least square pre-nucleolus.
Different solvers can be selected by option setting Method->Solver. Permissible solvers are: Automatic, GUROBI,
IPOPT, MOSEK, DifferentialEvolution, NelderMead, RandomSearch, or SimulatedAnnealing. Default setting is Automatic.";
NonLinNuc::usage =
"NonLinNuc[game,p,k,tol,options] computes by a non-linear optimization method the nucleolus,
otherwise it returns a $Failed. Different solvers can be selected by option setting Method->Solver.
Permissible solvers are: Automatic, GUROBI, IPOPT, MOSEK, DifferentialEvolution, NelderMead,
RandomSearch, or SimulatedAnnealing. Default setting is Automatic.";
ApproxNuc::usage =
"ApproxNuc[game,p,k,options] computes the (p,k)-nucleolus by a non-linear minimization method.
It is an approximation of the nucleolus. If (p,k)=(2,k), then it computes the least square nucleolus.
Different solvers can be selected by option setting Method->Solver. Permissible solvers are: Automatic,
GUROBI, IPOPT, MOSEK, DifferentialEvolution, NelderMead, RandomSearch, or SimulatedAnnealing.
Default setting is Automatic.";
ModCoalArray::usage =
"ModCoalArray[game,payoff] computes a modified coalition array of first, second, ..., kth maximal excess.";
StandardSolution::usage =
"StandardSolution[game] computes the standard solution of a two-person TU-game.";
NucleolusThreePerson::usage =
"NucleolusThreePerson[game] computes the nucleolus of zero-normalized super-additive three person games. Uses the formula of Leng and Parlar (2010).";
PreNucleolus::usage =
"PreNucleolus[game,options] computes the pre-nucleolus from the set of pre-imputations.
The algorithm is based on a method by Peleg to translate the definition of the Nucleolus into
a sequence of linear programs on the pre-imputation set. To increases the computational reliability
in cases of numerical issues the following methods can be used: RevisedSimplex, CLP, MOSEK,
or Automatic. Default setting is Automatic. This option must be used in connection with CallMaximize->False.
For getting more precise results, one can even set Method->{InteriorPoint, Tolerance->10^-10}.";
Modiclus::usage =
"Modiclus[game,opts] computes the modiclus as the projection of the pre-nucleolus from the
dual cover game onto the player set T of the original game. Do not confound this command
with the function ModifiedNucleolus[]. The algorithm is based on a method by Peleg to translate
the definition of the Nucleolus into a sequence of linear programs on the pre-imputation set.
To increases the computational reliability in cases of numerical issues the following methods
can be used: RevisedSimplex, CLP, MOSEK, or Automatic. Default setting is Automatic. For getting more precise results one can even set
Method->{InteriorPoint, Tolerance->10^-10}.";
IsModiclusQ::usage =
"IsModiclusQ[game,payoff,opts] checks whether the provided payoff vector is the modiclus of the game.
To increases the computational reliability in cases of numerical issues the following methods
can be used: RevisedSimplex, CLP, MOSEK, or Automatic. Default setting is Automatic. For getting more precise results one can even set
Method->{InteriorPoint, Tolerance->10^-10}";
ModPreKernel::usage =
"ModPreKernel[game] computes a modified pre-kernel element as the solution
of the pre-kernel from the excess comparability cover game.
Do not confound this command with the function ModifiedKernel[].";
IsModPreKernelQ::usage =
"IsModPreKernelQ[game,payoff] checks whether the provided payoff vector is a modified
pre-kernel element of the game.";
ProperModPreKernel::usage =
"ProperModPreKernel[game] computes a proper modified pre-kernel element as the projection
of the pre-kernel from the dual cover game onto the player set T of the original game.
Do not confound this command with the function ModifiedKernel[].";
IsProperModPreKernelQ::usage =
"IsProperModPreKernelQ[game,payoff] checks whether the provided payoff vector is a proper modified
pre-kernel element of the game.";
DualCover::usage =
"DualCover[game] computes the dual cover game from which the modiclus will be determined.";
DualExtension::usage =
"DualExtension[game] determines the dual extension of the primal game.";
PrimalExtension::usage =
"PrimalExtension[game] determines the primal extension of the dual game.";
ECCoverGame::usage =
"ECCoverGame[game] computes the excess comparability cover game.";
SMPreKernel::usage =
"SMPreKernel[game] computes the simplified modified pre-kernel of the game.";
IsSMPreKernelQ::usage =
"IsSMPreKernelQ[game,payoff] checks if payoff is the simplified modified pre-kernel of the game.";
SMPrenucleolus::usage =
"SMPrenucleolus[game] computes the simplified modified pre-nucleolus of the game.";
IsSMPrenucleolusQ::usage =
"IsSMPrenucleolusQ[game,payoff] checks if payoff is the simplified modified pre-nucleolus of the game.";
DuttaRay::usage =
"DuttaRay[game,options] computes the Dutta-Ray solution for convex games. Different solvers can be selected
by option setting Method->Solver. Permissible solvers are: Automatic, GUROBI, IPOPT, MOSEK, DifferentialEvolution,
NelderMead, RandomSearch, or SimulatedAnnealing. Default setting is Automatic";
LorenzSolution::usage =
"LorenzSolution[game,options] computes the Lorenz solution whenever the core exits. Different solvers can be
selected by option setting Method->Solver. Permissible solvers are: Automatic, GUROBI, IPOPT, MOSEK,
DifferentialEvolution, NelderMead, RandomSearch, or SimulatedAnnealing. Default setting is Automatic";
CollectionOfDecreasingExcess::usage =
"CollectionOfDecreasingExcess[game,payoff] determines the collection of coalitions with highest up
to the lowest level of excesses.";
BalancedCollectionQ::usage =
"BalancedCollectionQ[game,payoff,options] determines whether the induced collections
are balanced w.r.t. all excess levels. Implements Kohlberg's Theorem. The return value must
be 'True' for the prenucleolus, otherwise 'False'. To increases the computational reliability
in cases of numerical issues the following methods can be used: RevisedSimplex, CLP, GUROBI, MOSEK,
or Automatic. Default setting is RevisedSimplex. For getting more precise results one can even set
Method->{InteriorPoint, Tolerance->10^-10}.";
WeaklyBalancedCollectionQ::usage =
"WeaklyBalancedCollectionQ[game,payoff,options] determines whether the induced collections
are weakly balanced w.r.t. all excess levels. Implements Kohlberg's Theorem. The return value must
be 'True' for the nucleolus, otherwise 'False'. To increases the computational reliability in cases of numerical issues
the following methods can be used: RevisedSimplex, CLP, GUROBI, MOSEK, or Automatic. Default setting is RevisedSimplex.
For getting more precise results one can even set Method->{InteriorPoint, Tolerance->10^-10}.";
kBalancednessQ::usage =
"kBalancednessQ[collect_List, coalOfsize_k, options] determines whether the coalition collection
is k-balanced w.r.t. all excess levels. It is based on Kurskal rank condition.";
BalancedSelectionQ::usage =
"BalancedSelectionQ[game,payoff,options] or BalancedSelectionQ[coalstruct, options]
determines whether the induced collections are balanced w.r.t. all excess levels.
Implements Kohlberg's Theorem. The return value must be 'True' for the prenucleolus,
otherwise 'False'. It might be that this function returns in any case a 'False',
this is due to circumvent wrong selections. Whenever one has computed the prekernel
set, one can set the option Tight->True to filter out the prenucleolus. It is recommended
to switch to BalancedCollectionQ, which is more robust.";
WeaklyBalancedSelectionQ::usage =
"WeaklyBalancedSelectionQ[game,payoff,options] or WeaklyBalancedSelectionQ[coalstruct, options]
determines whether the induced collections are weakly balanced w.r.t. all excess levels.
Implements a weak form of Kohlberg's Theorem, i.e. it allows zero weights. It is recommended
to switch to WeaklyBalancedCollectionQ, which is more robust.";
SelectionKBalancedQ::usage =
"SelectionKBalancedQ[game, payoff,k options] or SelectionKBalancedQ[coalstruct,k options]
determines whether a coalition collection or its induced from an imputation 'payoff' is
k-balanced. The value k must be an integer between 2 and n. Experimental, not stable!";
PreKernel::usage =
"PreKernel[game] or PreKernel[game,payoff,options] computes a pre-kernel element by iteratively solving
a system of linear equations. (cf. Algorithm 8.2.1 of Meinhardt (2013))" ;
PreKernelElement::usage =
"PreKernelElement[game,payoff,options] computes a pre-kernel element by iteratively
determining a direction of improvement. The iteration process stops whenever the
direction of improvement is equal to the null vector. (cf. Algorithm 8.3.1 of Meinhardt (2013)).";
PreKernelSolution::usage =
"PreKernelSolution[game,payoff,options] computes a pre-kernel solution by relying on
Algorithm 8.1.1 and 8.2.1 of Meinhardt (2013). Default solver is SolutionExact -> True in order to call
FindMinimum set SolutionExact->False. If the solution is still not correct or to search for a
different pre-kernel element change the Method of FindMinimum, admissible values are: Method -> Automatic
either to: Method -> Newton, Method-> QuasiNewton, Method -> InteriorPoint, Method->Gradient,
Method -> ConjugateGradient, Method -> PrincipalAxis, Method->LevenbergMarquardt, Method->GUROBI,
Method->MOSEK, or Method -> IPOPT. By setting the option AntiPreKernel -> True,
an anti-pre-kernel of the game can be computed. In order to look for further solutions, invoke
{prk,cvfunc,grad} = PreKernelSolution[game,payoff, ConjugateFunction -> True,
ShowObjectiveFunction -> True].";
AntiPreKernelSolution::usage =
"AntiPreKernelSolution[game,payoff,options] computes an anti-pre-kernel solution by relying on a
SDM-Method. This approach was discussed by Meseguer-Artola (1997). Setting the option AntiPreKernel
to 'False', a pre-kernel of the game can be computed.";
ImputationToMatrix::usage =
"ImputationToMatrix[game,payoff,opts] transforms an imputation into equivalence class matrix Q.
Same as BestCoalToMatrix[]. Only the input parameters are different. See also BestCoalToMatrix[].";
BestCoalitions::usage =
"BestCoalitions[game,payoff] computes the set of most effective coalitions that supports the claim of
player i against j, for all possible pair of players.";
BestCoalToMatrix::usage =
"BestCoalToMatrix[bestcoal,T,options] computes an equivalence matrix Q, all sub-matrices, and
determinants from the set of best/most effective coalitions. For details see Meinhardt (2013).";
SetsToVec::usage =
"SetsToVec[bestcoal,T,options] converts the set of most effective coalitions to a set of vectors
of length T. A vector reflects how the best arguments are distributed between a bargaining pair
(i,j) at a proposal. A plus sign indicates that the arguments are skewed in favor of the player i,
zero means that the arguments are balanced, and a minus sign indicates that the arguments are
skewed in favor of the player j. See also Meinhardt (2013).";
ImputationToVec::usage =
"ImputationToVec[game,payoff,options] converts an imputation to a set of vectors of length T. A
vector reflects how the best arguments are distributed between a bargaining pair i,j at a proposal
'payoff'. A positive number indicates that the arguments are skewed in favor of the player i, zero
means that the arguments are balanced, and a negative number indicates that the arguments are skewed
in favor of the player j. This information can be obtained by invoking the option InFavor. Notice that
whenever the option EffVector is set to 'True', then the first vector must be positive, since it is
related to the grand coalition. Similar to SetsToVec[]. See also SetsToVec[].";
ImputationToEqClass::usage =
"ImputationToEqClass[game,payoff] determines an equivalence class from an imputation. See also DetEqClass[] for more details.";
DetEqClass::usage =
"DetEqClass[matrix,T] replicates the set of most effective coalitions from the unanimity
matrix-(Binom(t,2) x 2^t -1), where t is the cardinality of the player set. The unanimity
matrix can be determined by the function BargainUnanMatrix[game,payoff,EffVector -> False].";
BargainUnanMatrix::usage =
"BargainUnanMatrix[game,payoff,options] computes an unanimity matrix of dimension (Binom(t,2) x 2^t -1),
where t is the cardinality of the player set. This is matrix W of equation 5.14, for details,
see Meinhardt (2013).";
ValueExcess::usage =
"ValueExcess[exc_vec] or ValueExcess[game, payoff] value the excess list or the list of all maximum
surpluses induced by a (pre)imputation. This is function h_gamma of Meinhardt (2013).";
ConvexConjugate::usage=
"ConvexConjugate[game, confunc] specifies the convex conjugate (Fenchel transform) of the convex
input function 'confunc'. The convex input function must be determined by the function
PreKernelSolution[] by invoking the option ShowObjectiveFunction -> True.";
OptStepSize::usage =
"OptStepSize[game, payoff, options] computes the optimal step size in order to decrease the excess
value of the function ValueExcess[]. A direction of improvement 'doi' can be determined by the
function DirectionOfImprovement[]. Then a new payoff vector can be constructed by
newpay = payoff + Optstep * doi. Use this vector to value the excesses by ValueExcess[game, newpay].
This value should be smaller than ValueExcess[game,payoff].";
DirectionOfImprovement::usage =
"DirectionOfImprovement[game, payoff, options] determines a vector of improvement in order reduce
the maximum surpluses.";
FindKernelSolution::usage =
"FindKernelSolution[game,payoff] tries to approximate a pre-kernel solution by iteratively carrying
out transfers between pairs of players. The suggested algorithm is due to M. Maschler. For details
see U. Faigle, W. Kern and J. Kuipers (1998).";
FindPreKernelSolution::usage =
"FindKernelSolution[game,payoff] tries to approximate a pre-kernel solution by iteratively carrying
out transfers between pairs of players. The suggested algorithm is due to M. Maschler. For details
see U. Faigle, W. Kern and J. Kuipers (1998).";
KernelImputationQ::usage =
"KernelImputationQ[game,payoff] checks whether the payoff belongs to the kernel.";
KernelImputationListQ::usage =
"KernelImputationListQ[game,payoff] checks whether the list of payoffs belongs to the kernel.";
PreKernelQ::usage =
"PreKernelQ[game,payoff] checks whether the (pre-)imputation 'payoff' is an element of the pre-kernel.
PreKernelQ checks also the efficiency condition in contrast to the function MaxExcessBalanced.";