diff --git a/.github/workflows/python.yml b/.github/workflows/python.yml index 76e40c4ea..9f27559db 100644 --- a/.github/workflows/python.yml +++ b/.github/workflows/python.yml @@ -30,7 +30,7 @@ jobs: cd dist sdist=$(ls pygambit-*.tar.gz) pip install -v "${sdist}[test,doc]" - pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.9.1" + pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.11.0" - name: Run tests run: pytest --run-tutorials @@ -53,7 +53,7 @@ jobs: - name: Build extension run: | python -m pip install -v .[test,doc] - pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.9.1" + pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.11.0" - name: Run tests run: pytest --run-tutorials @@ -76,7 +76,7 @@ jobs: - name: Build extension run: | python -m pip install -v .[test,doc] - pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.9.1" + pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.11.0" - name: Run tests run: pytest --run-tutorials @@ -99,6 +99,6 @@ jobs: - name: Build extension run: | python -m pip install -v .[test,doc] - pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.9.1" + pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.11.0" - name: Run tests run: pytest --run-tutorials diff --git a/.readthedocs.yml b/.readthedocs.yml index d06f69e2b..74390c37d 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -17,7 +17,7 @@ build: - pdf2svg jobs: post_install: - - pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.9.1" + - pip install "draw-tree @ git+https://github.com/gambitproject/draw_tree.git@v0.11.0" # Create RST for catalog table in docs - $READTHEDOCS_VIRTUALENV_PATH/bin/python build_support/catalog/update.py diff --git a/build_support/catalog/catalog.am b/build_support/catalog/catalog.am index 58c225f42..c540b730a 100644 --- a/build_support/catalog/catalog.am +++ b/build_support/catalog/catalog.am @@ -1,6 +1,25 @@ CATALOG_FILES = \ + catalog/books/bonanno18/fig12_18.efg \ + catalog/books/bonanno18/fig3_1.efg \ + catalog/books/bonanno18/fig3_10.efg \ + catalog/books/bonanno18/fig3_17.efg \ + catalog/books/bonanno18/fig4_17.efg \ + catalog/books/bonanno18/fig4_19.efg \ + catalog/books/bonanno18/fig4_26.efg \ + catalog/books/bonanno18/fig4_3.efg \ + catalog/books/bonanno18/fig4_40.efg \ + catalog/books/bonanno18/fig4_5.efg \ catalog/books/myerson1991/fig2_1.efg \ catalog/books/myerson1991/fig4_2.efg \ + catalog/books/shohambrown2008/fig5_1.efg \ + catalog/books/shohambrown2008/fig5_10.efg \ + catalog/books/shohambrown2008/fig5_11.efg \ + catalog/books/shohambrown2008/fig5_12.efg \ + catalog/books/shohambrown2008/fig5_15.efg \ + catalog/books/shohambrown2008/fig5_2.efg \ + catalog/books/shohambrown2008/fig5_9.efg \ + catalog/books/shohambrown2008/fig6_2.efg \ + catalog/books/shohambrown2008/fig6_8.efg \ catalog/books/vonstengel2022/fig10.1.efg \ catalog/books/vonstengel2022/fig10.12.efg \ catalog/books/vonstengel2022/fig10.5.efg \ diff --git a/build_support/catalog/catalog_hierarchy.yaml b/build_support/catalog/catalog_hierarchy.yaml index 9280493a6..55aa115a7 100644 --- a/build_support/catalog/catalog_hierarchy.yaml +++ b/build_support/catalog/catalog_hierarchy.yaml @@ -14,6 +14,8 @@ labels: books/myerson1991: "Myerson (1991) — Game Theory: Analysis of Conflict" books/vonstengel2022: "von Stengel (2022) — Game Theory Basics" books/watson2013: "Watson (2013) — Strategy: An Introduction to Game Theory" + books/shohambrown2008: "Shoham and Leyton-Brown (2008) — Multiagent Systems, Algorithmic, Game-Theoretic, and Logical Foundations" + books/bonanno18: "Giacomo Bonanno (2018) — Game Theory" journals/geb/gilboa1997: "Gilboa (1997)" journals/geb/wichardt2008: "Wichardt (2008)" journals/ijgt/nau2004: "Nau et al. (2004)" diff --git a/build_support/catalog/gtdraw_settings.yaml b/build_support/catalog/gtdraw_settings.yaml index 2bbd9889c..771eb0013 100644 --- a/build_support/catalog/gtdraw_settings.yaml +++ b/build_support/catalog/gtdraw_settings.yaml @@ -44,3 +44,60 @@ overrides: 2: '#DD79E0' 3: '#1616BC' 4: '#985003' + books/shohambrown2008/fig5_12: + action_label_dist: 5.0 + width_scaling: 0.75 + books/shohambrown2008/fig6_2: + action_label_dist: 5.0 + books/shohambrown2008/fig6_8: + sublevel_scaling: 1 + action_label_dist: 5.0 + books/bonanno18/fig12_18: + scale_factor: 1.0 + level_scaling: 1.0 + sublevel_scaling: 1.0 + width_scaling: 2.0 + shared_terminal_depth: false + action_label_position_by: player + action_label_dist: 1.5 + vary_action_label_positions: true + vary_action_label_positions_by: player + label_bg: + 3: true + label_bg_opacity: 0.8 + vary_action_label_positions_choices: + - 3 + books/bonanno18/fig3_10: + width_scaling: 1.6 + books/bonanno18/fig3_17: + action_label_position: 0.8 + books/bonanno18/fig4_17: + sublevel_scaling: 1.0 + action_label_position: 0.35 + width_scaling: 1.25 + books/bonanno18/fig4_19: + sublevel_scaling: 0 + shared_terminal_depth: true + action_label_position_by: player + label_bg: + 0: true + label_bg_color: white + label_bg_opacity: 0.8 + books/bonanno18/fig4_3: + sublevel_scaling: 0.5 + width_scaling: 1.25 + action_label_position_by: player + vary_action_label_positions: true + vary_action_label_positions_by: player + label_bg: + 3: true + vary_action_label_positions_choices: + - 3 + books/bonanno18/fig4_40: + sublevel_scaling: 1 + shared_terminal_depth: true + action_label_position_by: player + label_bg: + 0: true + label_bg_color: white + label_bg_opacity: 0.8 diff --git a/build_support/catalog/test_update.py b/build_support/catalog/test_update.py index 645dc25f9..535330382 100644 --- a/build_support/catalog/test_update.py +++ b/build_support/catalog/test_update.py @@ -147,6 +147,27 @@ def _make_image_files(catalog_dir, slug, fmt="efg"): (img_dir / f"{slug}.ef").touch() +# --------------------------------------------------------------------------- +# Tests for catalog resource selection +# --------------------------------------------------------------------------- + + +@pytest.mark.catalog_update +class TestCatalogResourceSelection: + """Tests for selecting the catalog source used by update.py.""" + + def test_use_catalog_dir_overrides_stale_package_catalog(self, tmp_path, monkeypatch): + """The updater points pygambit's catalog helpers at the local catalog dir.""" + stale_catalog = tmp_path / "stale_catalog_data" + local_catalog = tmp_path / "catalog" + monkeypatch.setattr(update.gbt.catalog, "_CATALOG_RESOURCE", stale_catalog) + + selected = update.use_catalog_dir(local_catalog) + + assert selected == local_catalog + assert local_catalog == update.gbt.catalog._CATALOG_RESOURCE + + # --------------------------------------------------------------------------- # Tests for catalog_gtdraw_settings # --------------------------------------------------------------------------- diff --git a/build_support/catalog/update.py b/build_support/catalog/update.py index 0cf51385e..4d472941e 100644 --- a/build_support/catalog/update.py +++ b/build_support/catalog/update.py @@ -16,6 +16,15 @@ CATALOG_HIERARCHY_CONFIG = Path(__file__).parent / "catalog_hierarchy.yaml" SUPPORTED_GAME_FORMATS = {"efg", "nfg"} +def use_catalog_dir(catalog_dir: Path | None = None) -> Path: + """Point pygambit's catalog helpers at this checkout's catalog directory. + + update.py is a source-tree maintenance script, so it should not read stale + package-data copies from an installed or previously built pygambit. + """ + catalog_dir = catalog_dir or CATALOG_DIR + gbt.catalog._CATALOG_RESOURCE = catalog_dir + return catalog_dir def catalog_gtdraw_settings(slug: str) -> dict: """Return the gtdraw settings for a given catalog slug.""" @@ -408,11 +417,18 @@ def update_makefile( ) args = parser.parse_args() + catalog_dir = use_catalog_dir() + # Create RST list-table used by doc/catalog.rst df = gbt.catalog.games(include_descriptions=True) _warn_missing_descriptions(df) - generate_rst_table(df, CATALOG_RST_TABLE, regenerate_images=args.regenerate_images) + generate_rst_table( + df, + CATALOG_RST_TABLE, + regenerate_images=args.regenerate_images, + catalog_dir=catalog_dir, + ) print(f"Generated {CATALOG_RST_TABLE} for use in local docs build. DO NOT COMMIT.") if args.build: # Update the Makefile.am with the current list of catalog files - update_makefile() + update_makefile(catalog_dir=catalog_dir) diff --git a/catalog/books/bonanno18/fig12_18.efg b/catalog/books/bonanno18/fig12_18.efg new file mode 100644 index 000000000..bc9471e22 --- /dev/null +++ b/catalog/books/bonanno18/fig12_18.efg @@ -0,0 +1,23 @@ +EFG 2 R "Fig 12.18 from Bonanno (2018)" { "Player 1" "Player 2" "Player 3" } +" +Fig 12.18 from :cite:p:`Gia18`. + +This is a game from exercise 12.5. +" + +p "" 1 1 "" { "Off" "On" } 0 +p "" 2 1 "" { "Off" "On" } 0 +p "" 3 1 "" { "Guess (Off,Off)" "Guess (Off,On)" "Guess (On,Off)" } 0 +t "" 1 "All 200 (correct guess)" { 200, 200, 200 } +t "" 2 "P1 correct, P2 wrong, P3 gets 50" { 100, 0, 50 } +t "" 3 "P2 correct, P1 wrong, P3 gets 50" { 0, 100, 50 } +p "" 3 1 "" { "Guess (Off,Off)" "Guess (Off,On)" "Guess (On,Off)" } 0 +t "" 2 "P1 correct, P2 wrong, P3 gets 50" { 100, 0, 50 } +t "" 1 "All 200 (correct guess)" { 200, 200, 200 } +t "" 4 "All 0 (guess entirely wrong)" { 0, 0, 0 } +p "" 2 1 "" { "Off" "On" } 0 +p "" 3 1 "" { "Guess (Off,Off)" "Guess (Off,On)" "Guess (On,Off)" } 0 +t "" 3 "P2 correct, P1 wrong, P3 gets 50" { 0, 100, 50 } +t "" 4 "All 0 (guess entirely wrong)" { 0, 0, 0 } +t "" 1 "All 200 (correct guess)" { 200, 200, 200 } +t "" 5 "Both On -> immediate payoffs" { 100, 100, 300 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig3_1.efg b/catalog/books/bonanno18/fig3_1.efg new file mode 100644 index 000000000..830f00207 --- /dev/null +++ b/catalog/books/bonanno18/fig3_1.efg @@ -0,0 +1,14 @@ +EFG 2 R "Fig 3.1 from Bonanno (2018)" { "Amy" "Beth" } +" +Fig 3.1 from :cite:p:`Gia18`. + +This is an ultimatum game. +" + +p "" 1 1 "" { "50-50" "70-30" } 0 +p "" 2 1 "" { "Accept" "Reject" } 0 +t "" 1 "50-50 Accept" { 50000, 50000 } +t "" 2 "Litigation" { 40000, 20000 } +p "" 2 2 "" { "Accept" "Reject" } 0 +t "" 3 "70-30 Accept" { 70000, 30000 } +t "" 2 "Litigation" { 40000, 20000 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig3_10.efg b/catalog/books/bonanno18/fig3_10.efg new file mode 100644 index 000000000..2b3ef1da9 --- /dev/null +++ b/catalog/books/bonanno18/fig3_10.efg @@ -0,0 +1,12 @@ +EFG 2 R "Fig 3.10 from Bonanno (2018)" { "Entrant" "Incumbent" } +" +Fig 3.10 from :cite:p:`Gia18`. + +This is a market entry game. +" + +p "" 1 1 "" { "Enter" "Stay out" } 0 +p "" 2 1 "" { "Fight" "Accommodate" } 0 +t "" 2 "Fight (both 0)" { 0, 0 } +t "" 3 "Accommodate (both 2)" { 2, 2 } +t "" 1 "Stay out (Entrant=1, Incumbent=5)" { 1, 5 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig3_17.efg b/catalog/books/bonanno18/fig3_17.efg new file mode 100644 index 000000000..2a31291aa --- /dev/null +++ b/catalog/books/bonanno18/fig3_17.efg @@ -0,0 +1,26 @@ +EFG 2 R "Fig 3.17 from Bonanno (2018)" { "A" "B" "C" } +" +Fig 3.17 from :cite:p:`Gia18`. + +This is a board voting game from exercise 3.2. +" + +p "" 1 1 "" { "Promote" "Keep" "Fire" } 0 +p "" 2 1 "" { "Accept" "Disagree" } 0 +t "" 1 "Promote" { 3, 1, 2 } +p "" 3 1 "" { "Promote" "Keep" "Fire" } 0 +t "" 1 "Promote" { 3, 1, 2 } +t "" 2 "Keep" { 2, 3, 1 } +t "" 3 "Fire" { 1, 2, 3 } +p "" 2 2 "" { "Accept" "Disagree" } 0 +t "" 2 "Keep" { 2, 3, 1 } +p "" 3 2 "" { "Promote" "Keep" "Fire" } 0 +t "" 1 "Promote" { 3, 1, 2 } +t "" 2 "Keep" { 2, 3, 1 } +t "" 3 "Fire" { 1, 2, 3 } +p "" 2 3 "" { "Accept" "Disagree" } 0 +t "" 3 "Fire" { 1, 2, 3 } +p "" 3 3 "" { "Promote" "Keep" "Fire" } 0 +t "" 1 "Promote" { 3, 1, 2 } +t "" 2 "Keep" { 2, 3, 1 } +t "" 3 "Fire" { 1, 2, 3 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig4_17.efg b/catalog/books/bonanno18/fig4_17.efg new file mode 100644 index 000000000..05a13c53f --- /dev/null +++ b/catalog/books/bonanno18/fig4_17.efg @@ -0,0 +1,22 @@ +EFG 2 R "Fig 4.17 from Bonanno (2018)" { "Adele" "Ben" } +" +Fig 4.17 from :cite:p:`Gia18`. + +This is an example for chance moves in EFGs. +" + +c "" 1 "" { "Black" 1/3 "Red" 2/3 } 0 +p "" 1 1 "" { "Say Black" "Say Red" } 0 +p "" 2 1 "" { "Guess Black" "Guess Red" } 0 +t "" 1 "Ben correct" { -9, 9 } +t "" 2 "Ben incorrect" { 9, -9 } +p "" 2 2 "" { "Guess Black" "Guess Red" } 0 +t "" 1 "Ben correct" { -9, 9 } +t "" 2 "Ben incorrect" { 9, -9 } +p "" 1 2 "" { "Say Black" "Say Red" } 0 +p "" 2 1 "" { "Guess Black" "Guess Red" } 0 +t "" 2 "Ben incorrect" { 9, -9 } +t "" 1 "Ben correct" { -9, 9 } +p "" 2 2 "" { "Guess Black" "Guess Red" } 0 +t "" 2 "Ben incorrect" { 9, -9 } +t "" 1 "Ben correct" { -9, 9 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig4_19.efg b/catalog/books/bonanno18/fig4_19.efg new file mode 100644 index 000000000..ffc995bb7 --- /dev/null +++ b/catalog/books/bonanno18/fig4_19.efg @@ -0,0 +1,38 @@ +EFG 2 R "Fig 4.19 from Bonanno (2018)" { "Player 1" "Player 2" } +" +Fig 4.19 from :cite:p:`Gia18`. + +This is a game where two players decide whether to exchange envelopes that contain money. +" + +c "" 1 "" { "P1:100 P2:200" 1/6 "P1:100 P2:300" 1/6 "P1:200 P2:100" 1/6 "P1:200 P2:300" 1/6 "P1:300 P2:100" 1/6 "P1:300 P2:200" 1/6 } 0 +p "" 1 1 "" { "Pass" "Request trade" } 0 +t "" 1 "P1 keeps 100, P2 keeps 200" { 100, 200 } +p "" 2 1 "" { "Yes" "No" } 0 +t "" 2 "Traded: P1 200, P2 100" { 200, 100 } +t "" 1 "P1 keeps 100, P2 keeps 200" { 100, 200 } +p "" 1 1 "" { "Pass" "Request trade" } 0 +t "" 3 "P1 keeps 100, P2 keeps 300" { 100, 300 } +p "" 2 1 "" { "Yes" "No" } 0 +t "" 4 "Traded: P1 300, P2 100" { 300, 100 } +t "" 3 "P1 keeps 100, P2 keeps 300" { 100, 300 } +p "" 1 2 "" { "Pass" "Request trade" } 0 +t "" 5 "P1 keeps 200, P2 keeps 100" { 200, 100 } +p "" 2 1 "" { "Yes" "No" } 0 +t "" 6 "Traded: P1 100, P2 200" { 100, 200 } +t "" 5 "P1 keeps 200, P2 keeps 100" { 200, 100 } +p "" 1 2 "" { "Pass" "Request trade" } 0 +t "" 7 "P1 keeps 200, P2 keeps 300" { 200, 300 } +p "" 2 1 "" { "Yes" "No" } 0 +t "" 8 "Traded: P1 300, P2 200" { 300, 200 } +t "" 7 "P1 keeps 200, P2 keeps 300" { 200, 300 } +p "" 1 3 "" { "Pass" "Request trade" } 0 +t "" 9 "P1 keeps 300, P2 keeps 100" { 300, 100 } +p "" 2 1 "" { "Yes" "No" } 0 +t "" 10 "Traded: P1 100, P2 300" { 100, 300 } +t "" 9 "P1 keeps 300, P2 keeps 100" { 300, 100 } +p "" 1 3 "" { "Pass" "Request trade" } 0 +t "" 11 "P1 keeps 300, P2 keeps 200" { 300, 200 } +p "" 2 1 "" { "Yes" "No" } 0 +t "" 12 "Traded: P1 200, P2 300" { 200, 300 } +t "" 11 "P1 keeps 300, P2 keeps 200" { 300, 200 } diff --git a/catalog/books/bonanno18/fig4_26.efg b/catalog/books/bonanno18/fig4_26.efg new file mode 100644 index 000000000..7270bf635 --- /dev/null +++ b/catalog/books/bonanno18/fig4_26.efg @@ -0,0 +1,23 @@ +EFG 2 R "Fig 4.26 from Bonanno (2018)" { "Amy" "Bill" } +" +Fig 4.26 from :cite:p:`Gia18`. + +This is a simple auction where two players bid on a piece of paper. +We add the value of the object, which is not specified in the original description, since this is necessary for determining payoffs. +" + +p "" 1 1 "" { "2" "3" } 0 +p "" 2 1 "" { "2" "3" } 0 +p "" 1 2 "" { "Pass" "Double" } 0 +t "" 1 "A2_B2_Pass" { 0, 8 } +t "" 2 "A4_B2_Double" { 6, 0 } +p "" 1 2 "" { "Pass" "Double" } 0 +t "" 3 "A2_B3_Pass" { 0, 7 } +t "" 4 "A4_B3_Double" { 6, 0 } +p "" 2 1 "" { "2" "3" } 0 +p "" 1 3 "" { "Pass" "Double" } 0 +t "" 5 "A3_B2_Pass" { 7, 0 } +t "" 6 "A6_B2_Double" { 4, 0 } +p "" 1 4 "" { "Pass" "Double" } 0 +t "" 7 "A3_B3_Pass" { 0, 7 } +t "" 8 "A6_B3_Double" { 4, 0 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig4_3.efg b/catalog/books/bonanno18/fig4_3.efg new file mode 100644 index 000000000..fce55d72b --- /dev/null +++ b/catalog/books/bonanno18/fig4_3.efg @@ -0,0 +1,22 @@ +EFG 2 R "Fig 4.3 from Bonanno (2018)" { "Ann" "Bob" "Carla" } +" +Fig 4.3 from :cite:p:`Gia18`. + +This is an example of imperfect-information games to explain information sets. +" + +p "" 1 1 "" { "Red" "Black" } 0 +p "" 2 1 "" { "Say Red" "Say Black" } 0 +p "" 3 1 "" { "Guess Red" "Guess Black" } 0 +t "" 1 "Carla correct" { -1, -1, 2 } +t "" 2 "Carla incorrect" { 1, 1, -2 } +p "" 3 2 "" { "Guess Red" "Guess Black" } 0 +t "" 1 "Carla correct" { -1, -1, 2 } +t "" 2 "Carla incorrect" { 1, 1, -2 } +p "" 2 2 "" { "Say Red" "Say Black" } 0 +p "" 3 1 "" { "Guess Red" "Guess Black" } 0 +t "" 2 "Carla incorrect" { 1, 1, -2 } +t "" 1 "Carla correct" { -1, -1, 2 } +p "" 3 2 "" { "Guess Red" "Guess Black" } 0 +t "" 2 "Carla incorrect" { 1, 1, -2 } +t "" 1 "Carla correct" { -1, -1, 2 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig4_40.efg b/catalog/books/bonanno18/fig4_40.efg new file mode 100644 index 000000000..5448a1770 --- /dev/null +++ b/catalog/books/bonanno18/fig4_40.efg @@ -0,0 +1,38 @@ +EFG 2 R "Fig 4.40 from Bonanno (2018)" { "Yvonne" "Zoe" } +" +Fig 4.40 from :cite:p:`Gia18`. + +This is a simplified poker game. +" + +c "" 1 "" { "Y:A,Z:B" 1/6 "Y:A,Z:C" 1/6 "Y:B,Z:A" 1/6 "Y:B,Z:C" 1/6 "Y:C,Z:A" 1/6 "Y:C,Z:B" 1/6 } 0 +p "" 1 1 "" { "Pass" "Bet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +p "" 2 1 "" { "Fold" "Meet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +t "" 2 "Yvonne wins big" { 2, -2 } +p "" 1 1 "" { "Pass" "Bet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +p "" 2 2 "" { "Fold" "Meet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +t "" 2 "Yvonne wins big" { 2, -2 } +p "" 1 2 "" { "Pass" "Bet" } 0 +t "" 3 "Zoe wins small" { -1, 1 } +p "" 2 3 "" { "Fold" "Meet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +t "" 4 "Zoe wins big" { -2, 2 } +p "" 1 2 "" { "Pass" "Bet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +p "" 2 2 "" { "Fold" "Meet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +t "" 2 "Yvonne wins big" { 2, -2 } +p "" 1 3 "" { "Pass" "Bet" } 0 +t "" 3 "Zoe wins small" { -1, 1 } +p "" 2 3 "" { "Fold" "Meet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +t "" 4 "Zoe wins big" { -2, 2 } +p "" 1 3 "" { "Pass" "Bet" } 0 +t "" 3 "Zoe wins small" { -1, 1 } +p "" 2 1 "" { "Fold" "Meet" } 0 +t "" 1 "Yvonne wins small" { 1, -1 } +t "" 4 "Zoe wins big" { -2, 2 } \ No newline at end of file diff --git a/catalog/books/bonanno18/fig4_5.efg b/catalog/books/bonanno18/fig4_5.efg new file mode 100644 index 000000000..752c507bc --- /dev/null +++ b/catalog/books/bonanno18/fig4_5.efg @@ -0,0 +1,18 @@ +EFG 2 R "Fig 4.5 from Bonanno (2018)" { "Employer" "Yvonne" "Fran" } +" +Fig 4.5 from :cite:p:`Gia18`. + +This is a game where two players interview for the same job. Only one person will be hired. +" + +p "" 1 1 "" { "Call Yvonne" "Call Fran" } 0 +p "" 2 1 "" { "Accept" "Reject" } 0 +t "" 1 "Yvonne accepts first" { 1, 2, 1 } +p "" 3 1 "" { "Accept" "Reject" } 0 +t "" 2 "Fran accepts recycled" { 1, 1, 0 } +t "" 3 "Both reject (unfilled)" { 0, 1, 1 } +p "" 3 1 "" { "Accept" "Reject" } 0 +t "" 4 "Fran accepts first" { 1, 1, 2 } +p "" 2 1 "" { "Accept" "Reject" } 0 +t "" 5 "Yvonne accepts recycled" { 1, 0, 1 } +t "" 3 "Both reject (unfilled)" { 0, 1, 1 } \ No newline at end of file diff --git a/catalog/books/shohambrown2008/fig5_1.efg b/catalog/books/shohambrown2008/fig5_1.efg new file mode 100644 index 000000000..b83e826c9 --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_1.efg @@ -0,0 +1,21 @@ +EFG 2 R "Fig 5.1 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 5.1 from :cite:p:`ShoLeyB08`. +This is a sharing game. Imagine a brother and sister sharing two indivisible and identical presents +from their parents. First the brother suggests a split, which can be one of three-he +keeps both, she keeps both, or they each keep one. Then the sister chooses whether +to accept or reject the split. If she accepts they each get their allocated present(s), +and otherwise neither gets any gift. +" + +p "" 1 1 "" { "2-0" "1-1" "0-2" } 0 +p "" 2 2 "" { "no" "yes" } 0 +t "" 1 "" { 0 0 } +t "" 2 "" { 2 0 } +p "" 2 3 "" { "no" "yes" } 0 +t "" 3 "" { 0 0 } +t "" 4 "" { 1 1 } +p "" 2 4 "" { "no" "yes" } 0 +t "" 5 "" { 0 0 } +t "" 6 "" { 0 2 } diff --git a/catalog/books/shohambrown2008/fig5_10.efg b/catalog/books/shohambrown2008/fig5_10.efg new file mode 100644 index 000000000..94cd759ff --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_10.efg @@ -0,0 +1,16 @@ +EFG 2 R "Fig 5.10 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 5.10 from :cite:p:`ShoLeyB08`. +This is an example of an imperfect-information game. +" + +p "" 1 2 "" { "L" "R" } 0 +p "" 2 3 "" { "A" "B" } 0 +p "" 1 1 "" { "l" "r" } 0 +t "" 1 "" { 0 0 } +t "" 2 "" { 2 4 } +p "" 1 1 0 +t "" 3 "" { 4 2 } +t "" 4 "" { 0 0 } +t "" 5 "" { 0 0 } diff --git a/catalog/books/shohambrown2008/fig5_10__original_layout.ef b/catalog/books/shohambrown2008/fig5_10__original_layout.ef new file mode 100644 index 000000000..bc10d8212 --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_10__original_layout.ef @@ -0,0 +1,12 @@ +player 1 name 1 +player 2 name 2 +level 0 node 1 player 1 +level 2 node 1 player 2 xshift -3.58 from 0,1 move L +level 2 node 2 xshift 3.58 from 0,1 move R payoffs 0 0 +level 4 node 1 xshift -2.86 from 2,1 move A +level 4 node 2 xshift 2.86 from 2,1 move B +level 6 node 1 xshift -1.43 from 4,1 move l payoffs 0 0 +level 6 node 2 xshift 1.43 from 4,1 move r payoffs 2 4 +level 6 node 3 xshift -1.43 from 4,2 move l payoffs 4 2 +level 6 node 4 xshift 1.43 from 4,2 move r payoffs 0 0 +iset 4,1 4,2 player 1 diff --git a/catalog/books/shohambrown2008/fig5_11.efg b/catalog/books/shohambrown2008/fig5_11.efg new file mode 100644 index 000000000..a972fb90b --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_11.efg @@ -0,0 +1,14 @@ +EFG 2 R "Fig 5.11 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 5.11 from :cite:p:`ShoLeyB08`. +The Prisoner's Dilemma game in extensive form. +" + +p "" 1 2 "" { "C" "D" } 0 +p "" 2 1 "" { "c" "d" } 0 +t "" 1 "" { -1 -1 } +t "" 2 "" { -4 0 } +p "" 2 1 0 +t "" 3 "" { 0 -4 } +t "" 4 "" { -3 -3 } diff --git a/catalog/books/shohambrown2008/fig5_11__original_layout.ef b/catalog/books/shohambrown2008/fig5_11__original_layout.ef new file mode 100644 index 000000000..13246edad --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_11__original_layout.ef @@ -0,0 +1,10 @@ +player 1 name 1 +player 2 name 2 +level 0 node 1 player 1 +level 2 node 1 xshift -3.58 from 0,1 move C +level 2 node 2 xshift 3.58 from 0,1 move D +level 4 node 1 xshift -1.79 from 2,1 move c payoffs -1 -1 +level 4 node 2 xshift 1.79 from 2,1 move d payoffs -4 0 +level 4 node 3 xshift -1.79 from 2,2 move c payoffs 0 -4 +level 4 node 4 xshift 1.79 from 2,2 move d payoffs -3 -3 +iset 2,1 2,2 player 2 diff --git a/catalog/books/shohambrown2008/fig5_12.efg b/catalog/books/shohambrown2008/fig5_12.efg new file mode 100644 index 000000000..2e08ce364 --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_12.efg @@ -0,0 +1,16 @@ +EFG 2 R "Fig 5.12 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 5.12 from :cite:p:`ShoLeyB08`. +A game with imperfect recall. +Please read carefully about the definition of perfect recall, which infers three types of imperfect recall. +" + + +p "" 1 1 "" { "L" "R" } 0 +p "" 1 1 0 +t "" 1 "" { 1 0 } +t "" 2 "" { 100 100 } +p "" 2 2 "" { "U" "D" } 0 +t "" 3 "" { 5 1 } +t "" 4 "" { 2 2 } diff --git a/catalog/books/shohambrown2008/fig5_12__original_layout.ef b/catalog/books/shohambrown2008/fig5_12__original_layout.ef new file mode 100644 index 000000000..98b720cdc --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_12__original_layout.ef @@ -0,0 +1,15 @@ +% Extensive-form game transcribed from the uploaded image +player 1 name 1 +player 2 name 2 + +% Player 1's two decision nodes are in the same information set. +level 0 node 1 +level 2 node 1 xshift -3 from 0,1 move L +level 2 node 2 xshift 3 from 0,1 move R player 2 + +level 4 node 1 xshift -1 from 2,1 move L payoffs 1 0 +level 4 node 2 xshift 1 from 2,1 move R payoffs 100 100 +level 4 node 3 xshift -1 from 2,2 move U payoffs 5 1 +level 4 node 4 xshift 1 from 2,2 move D payoffs 2 2 + +iset 0,1 2,1 player 1 diff --git a/catalog/books/shohambrown2008/fig5_15.efg b/catalog/books/shohambrown2008/fig5_15.efg new file mode 100644 index 000000000..8f5a9414f --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_15.efg @@ -0,0 +1,17 @@ +EFG 2 R "Fig 5.15 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 5.15 from :cite:p:`ShoLeyB08`. +A game with imperfect information. +This example shows how a requirement that a substrategy be a best response in +all subgames is too simplistic for defining SPE in games with imperfect information. +" + +p "" 1 2 "" { "L" "C" "R" } 0 +t "" 1 "" { 1 1 } +p "" 2 1 "" { "U" "D" } 0 +t "" 2 "" { 0 1000 } +t "" 3 "" { 0 0 } +p "" 2 1 0 +t "" 4 "" { 1 0 } +t "" 5 "" { 3 1 } diff --git a/catalog/books/shohambrown2008/fig5_15__original_layout.ef b/catalog/books/shohambrown2008/fig5_15__original_layout.ef new file mode 100644 index 000000000..adb455c49 --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_15__original_layout.ef @@ -0,0 +1,11 @@ +player 1 name 1 +player 2 name 2 +level 0 node 1 player 1 +level 2 node 1 xshift -5.01 from 0,1 move L payoffs 1 1 +level 2 node 2 xshift -0.72 from 0,1 move C +level 2 node 3 xshift 5.01 from 0,1 move R +level 4 node 1 xshift -1.43 from 2,2 move U payoffs 0 1000 +level 4 node 2 xshift 1.43 from 2,2 move D payoffs 0 0 +level 4 node 3 xshift -1.43 from 2,3 move U payoffs 1 0 +level 4 node 4 xshift 1.43 from 2,3 move D payoffs 3 1 +iset 2,2 2,3 player 2 diff --git a/catalog/books/shohambrown2008/fig5_1__original_layout.ef b/catalog/books/shohambrown2008/fig5_1__original_layout.ef new file mode 100644 index 000000000..4eb06de72 --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_1__original_layout.ef @@ -0,0 +1,12 @@ +player 1 name 1 +player 2 name 2 +level 0 node 1 player 1 +level 2 node 1 player 2 xshift -4.77 from 0,1 move 2-0 +level 2 node 2 player 2 xshift 0 from 0,1 move 1-1 +level 4 node 1 xshift -1.19 from 2,1 move no payoffs 0 0 +level 4 node 2 xshift 1.19 from 2,1 move yes payoffs 2 0 +level 2 node 3 player 2 xshift 4.77 from 0,1 move 0-2 +level 4 node 3 xshift -1.19 from 2,2 move no payoffs 0 0 +level 4 node 4 xshift 1.19 from 2,2 move yes payoffs 1 1 +level 4 node 5 xshift -1.19 from 2,3 move no payoffs 0 0 +level 4 node 6 xshift 1.19 from 2,3 move yes payoffs 0 2 diff --git a/catalog/books/shohambrown2008/fig5_2.efg b/catalog/books/shohambrown2008/fig5_2.efg new file mode 100644 index 000000000..5ed1bd189 --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_2.efg @@ -0,0 +1,16 @@ +EFG 2 R "Fig 5.2 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 5.2 from :cite:p:`ShoLeyB08`. +This is an example of a perfect-information game in extensive form. +" + +p "" 1 1 "" { "A" "B" } 0 +p "" 2 2 "" { "C" "D" } 0 +t "" 1 "" { 3 8 } +t "" 2 "" { 8 3 } +p "" 2 3 "" { "E" "F" } 0 +t "" 3 "" { 5 5 } +p "" 1 4 "" { "G" "H" } 0 +t "" 4 "" { 2 10 } +t "" 5 "" { 1 0 } diff --git a/catalog/books/shohambrown2008/fig5_2__original_layout.ef b/catalog/books/shohambrown2008/fig5_2__original_layout.ef new file mode 100644 index 000000000..630246f0b --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_2__original_layout.ef @@ -0,0 +1,11 @@ +player 1 name 1 +player 2 name 2 +level 0 node 1 player 1 +level 2 node 1 player 2 xshift -3.22 from 0,1 move A +level 2 node 2 player 2 xshift 3.22 from 0,1 move B +level 4 node 1 xshift -1.43 from 2,1 move C payoffs 3 8 +level 4 node 2 xshift 1.43 from 2,1 move D payoffs 8 3 +level 4 node 3 xshift -2.15 from 2,2 move E payoffs 5 5 +level 4 node 4 player 1 xshift 2.15 from 2,2 move F +level 6 node 1 xshift -1.43 from 4,4 move G payoffs 2 10 +level 6 node 2 xshift 1.43 from 4,4 move H payoffs 1 0 diff --git a/catalog/books/shohambrown2008/fig5_9.efg b/catalog/books/shohambrown2008/fig5_9.efg new file mode 100644 index 000000000..68e2181ea --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_9.efg @@ -0,0 +1,22 @@ +EFG 2 R "Fig 5.9 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 5.9 from :cite:p:`ShoLeyB08`. +This is the centipede game. In this game two players alternate in making decisions, at each +turn choosing between going down and ending the game or going across and +continuing it. +This example is usd to explain the criticisms of backward induction for finding subgame-perfect equilibrium. +Note that centipede is also a parametrized game, with the parameter being the number of rounds. +" + +p "" 1 1 "" { "A" "D" } 0 +t "" 1 "" { 1 0 } +p "" 2 2 "" { "A" "D" } 0 +t "" 2 "" { 0 2 } +p "" 1 3 "" { "A" "D" } 0 +t "" 3 "" { 3 1 } +p "" 2 4 "" { "A" "D" } 0 +t "" 4 "" { 2 4 } +p "" 1 5 "" { "A" "D" } 0 +t "" 5 "" { 4 3 } +t "" 6 "" { 3 5 } diff --git a/catalog/books/shohambrown2008/fig5_9__original_layout.ef b/catalog/books/shohambrown2008/fig5_9__original_layout.ef new file mode 100644 index 000000000..168078648 --- /dev/null +++ b/catalog/books/shohambrown2008/fig5_9__original_layout.ef @@ -0,0 +1,13 @@ +player 1 name 1 +player 2 name 2 +level 0 node 1 player 1 +level 2 node 1 xshift -2.31 from 0,1 move A payoffs 1 0 +level 2 node 2 player 2 xshift 2.31 from 0,1 move D +level 4 node 1 xshift -2.24 from 2,2 move A payoffs 0 2 +level 4 node 2 player 1 xshift 2.24 from 2,2 move D +level 6 node 1 xshift -2.09 from 4,2 move A payoffs 3 1 +level 6 node 2 player 2 xshift 2.09 from 4,2 move D +level 8 node 1 xshift -1.79 from 6,2 move A payoffs 2 4 +level 8 node 2 player 1 xshift 1.79 from 6,2 move D +level 10 node 1 xshift -1.19 from 8,2 move A payoffs 4 3 +level 10 node 2 xshift 1.19 from 8,2 move D payoffs 3 5 diff --git a/catalog/books/shohambrown2008/fig6_2.efg b/catalog/books/shohambrown2008/fig6_2.efg new file mode 100644 index 000000000..6a543e361 --- /dev/null +++ b/catalog/books/shohambrown2008/fig6_2.efg @@ -0,0 +1,38 @@ +EFG 2 R "Fig 6.2 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 6.2 from :cite:p:`ShoLeyB08`. +This is a repeated game, where Prisoner's Dilemma is played twice. +" + +p "" 1 6 "" { "C" "D" } 0 +p "" 2 1 "" { "c" "d" } 0 +p "" 1 7 "" { "C" "D" } 0 +p "" 2 4 "" { "c" "d" } 0 +t "" 1 "" { -2 -2 } +t "" 2 "" { -5 -1 } +p "" 2 4 0 +t "" 3 "" { -1 -5 } +t "" 4 "" { -4 -4 } +p "" 1 8 "" { "C" "D" } 0 +p "" 2 5 "" { "c" "d" } 0 +t "" 5 "" { -5 -1 } +t "" 6 "" { -8 0 } +p "" 2 5 0 +t "" 7 "" { -4 -4 } +t "" 8 "" { -7 -3 } +p "" 2 1 0 +p "" 1 9 "" { "C" "D" } 0 +p "" 2 2 "" { "c" "d" } 0 +t "" 9 "" { -1 -5 } +t "" 10 "" { -4 -4 } +p "" 2 2 0 +t "" 11 "" { 0 -8 } +t "" 12 "" { -3 -7 } +p "" 1 10 "" { "C" "D" } 0 +p "" 2 3 "" { "c" "d" } 0 +t "" 13 "" { -4 -4 } +t "" 14 "" { -7 -3 } +p "" 2 3 0 +t "" 15 "" { -3 -7 } +t "" 16 "" { -6 -6 } diff --git a/catalog/books/shohambrown2008/fig6_2__original_layout.ef b/catalog/books/shohambrown2008/fig6_2__original_layout.ef new file mode 100644 index 000000000..4571fb548 --- /dev/null +++ b/catalog/books/shohambrown2008/fig6_2__original_layout.ef @@ -0,0 +1,38 @@ +player 1 name 1 +player 2 name 2 +level 0 node 1 player 1 +level 2 node 1 xshift -6.37 from 0,1 move C +level 2 node 2 xshift 6.37 from 0,1 move D +level 4 node 1 player 1 xshift -3.19 from 2,1 move c +level 4 node 2 player 1 xshift 3.19 from 2,1 move d +level 4 node 3 player 1 xshift -3.19 from 2,2 move c +level 4 node 4 player 1 xshift 3.19 from 2,2 move d +level 6 node 1 xshift -1.59 from 4,1 move C +level 6 node 2 xshift 1.59 from 4,1 move D +level 6 node 3 xshift -1.59 from 4,2 move C +level 6 node 4 xshift 1.59 from 4,2 move D +level 6 node 5 xshift -1.59 from 4,3 move C +level 6 node 6 xshift 1.59 from 4,3 move D +level 6 node 7 xshift -1.59 from 4,4 move C +level 6 node 8 xshift 1.59 from 4,4 move D +level 8 node 1 xshift -0.8 from 6,1 move c payoffs -2 -2 +level 8 node 2 xshift 0.8 from 6,1 move d payoffs -5 -1 +level 8 node 3 xshift -0.8 from 6,2 move c payoffs -1 -5 +level 8 node 4 xshift 0.8 from 6,2 move d payoffs -4 -4 +level 8 node 5 xshift -0.8 from 6,3 move c payoffs -5 -1 +level 8 node 6 xshift 0.8 from 6,3 move d payoffs -8 0 +level 8 node 7 xshift -0.8 from 6,4 move c payoffs -4 -4 +level 8 node 8 xshift 0.8 from 6,4 move d payoffs -7 -3 +level 8 node 9 xshift -0.8 from 6,5 move c payoffs -1 -5 +level 8 node 10 xshift 0.8 from 6,5 move d payoffs -4 -4 +level 8 node 11 xshift -0.8 from 6,6 move c payoffs 0 -8 +level 8 node 12 xshift 0.8 from 6,6 move d payoffs -3 -7 +level 8 node 13 xshift -0.8 from 6,7 move c payoffs -4 -4 +level 8 node 14 xshift 0.8 from 6,7 move d payoffs -7 -3 +level 8 node 15 xshift -0.8 from 6,8 move c payoffs -3 -7 +level 8 node 16 xshift 0.8 from 6,8 move d payoffs -6 -6 +iset 2,1 2,2 player 2 +iset 6,5 6,6 player 2 +iset 6,7 6,8 player 2 +iset 6,1 6,2 player 2 +iset 6,3 6,4 player 2 diff --git a/catalog/books/shohambrown2008/fig6_8.efg b/catalog/books/shohambrown2008/fig6_8.efg new file mode 100644 index 000000000..08e0e3cba --- /dev/null +++ b/catalog/books/shohambrown2008/fig6_8.efg @@ -0,0 +1,36 @@ +EFG 2 R "Fig 6.8 from Shoham and Leyton-Brown (2008)" { "1" "2" } + +" +Figure 6.8 from :cite:p:`ShoLeyB08`. +This is a Bayesian game, represented in EFG with Nature deciding the types. +" + +c "" 5 "" { "MP" 1/4 "PD" 1/4 "Coord" 1/4 "BoS" 1/4 } 0 +p "" 1 1 "" { "U" "D" } 0 +p "" 2 3 "" { "L" "R" } 0 +t "" 1 "" { 2 0 } +t "" 2 "" { 0 2 } +p "" 2 3 0 +t "" 3 "" { 0 2 } +t "" 4 "" { 2 0 } +p "" 1 1 0 +p "" 2 4 "" { "L" "R" } 0 +t "" 5 "" { 2 2 } +t "" 6 "" { 0 3 } +p "" 2 4 0 +t "" 7 "" { 3 0 } +t "" 8 "" { 1 1 } +p "" 1 2 "" { "U" "D" } 0 +p "" 2 3 0 +t "" 9 "" { 2 2 } +t "" 10 "" { 0 0 } +p "" 2 3 0 +t "" 11 "" { 0 0 } +t "" 12 "" { 1 1 } +p "" 1 2 0 +p "" 2 4 0 +t "" 13 "" { 2 1 } +t "" 14 "" { 0 0 } +p "" 2 4 0 +t "" 15 "" { 0 0 } +t "" 16 "" { 1 2 } diff --git a/catalog/books/shohambrown2008/fig6_8__original_layout.ef b/catalog/books/shohambrown2008/fig6_8__original_layout.ef new file mode 100644 index 000000000..c115b8e3d --- /dev/null +++ b/catalog/books/shohambrown2008/fig6_8__original_layout.ef @@ -0,0 +1,54 @@ +% Four games with uniform chance and corrected player 2 information sets +% Nature chooses among MP, PD, Coord, BoS with probability 1/4 each. +player 0 name Nature +player 1 name 1 +player 2 name 2 + +% Nature root +level 0 node 1 player 0 + +% Nature moves: uniform distribution shown on each branch +level 2 node 1 xshift -7.5 from 0,1 move MP~(1/4) +level 2 node 2 xshift -2.5 from 0,1 move PD~(1/4) +level 2 node 3 xshift 2.5 from 0,1 move Coord~(1/4) +level 2 node 4 xshift 7.5 from 0,1 move BoS~(1/4) + +% Player 1 moves U/D +level 4 node 1 xshift -1 from 2,1 move U +level 4 node 2 xshift 1 from 2,1 move D +level 4 node 3 xshift -1 from 2,2 move U +level 4 node 4 xshift 1 from 2,2 move D +level 4 node 5 xshift -1 from 2,3 move U +level 4 node 6 xshift 1 from 2,3 move D +level 4 node 7 xshift -1 from 2,4 move U +level 4 node 8 xshift 1 from 2,4 move D + +% Player 2 moves L/R and payoffs, left-to-right as in the figure +level 6 node 1 xshift -0.55 from 4,1 move L payoffs 2 0 +level 6 node 2 xshift 0.55 from 4,1 move R payoffs 0 2 +level 6 node 3 xshift -0.55 from 4,2 move L payoffs 0 2 +level 6 node 4 xshift 0.55 from 4,2 move R payoffs 2 0 + +level 6 node 5 xshift -0.55 from 4,3 move L payoffs 2 2 +level 6 node 6 xshift 0.55 from 4,3 move R payoffs 0 3 +level 6 node 7 xshift -0.55 from 4,4 move L payoffs 3 0 +level 6 node 8 xshift 0.55 from 4,4 move R payoffs 1 1 + +level 6 node 9 xshift -0.55 from 4,5 move L payoffs 2 2 +level 6 node 10 xshift 0.55 from 4,5 move R payoffs 0 0 +level 6 node 11 xshift -0.55 from 4,6 move L payoffs 0 0 +level 6 node 12 xshift 0.55 from 4,6 move R payoffs 1 1 + +level 6 node 13 xshift -0.55 from 4,7 move L payoffs 2 1 +level 6 node 14 xshift 0.55 from 4,7 move R payoffs 0 0 +level 6 node 15 xshift -0.55 from 4,8 move L payoffs 0 0 +level 6 node 16 xshift 0.55 from 4,8 move R payoffs 1 2 + +% Player 1 information sets +iset 2,1 2,2 player 1 +iset 2,3 2,4 player 1 + +% Player 2 information sets: +% first and third are the same; second and fourth are the same. +iset 4,1 4,2 4,5 4,6 player 2 +iset 4,3 4,4 4,7 4,8 player 2 diff --git a/catalog/journals/mor/vonstengelforges2008/fig1__original_layout.ef b/catalog/journals/mor/vonstengelforges2008/fig1__original_layout.ef new file mode 100644 index 000000000..1c0dab62e --- /dev/null +++ b/catalog/journals/mor/vonstengelforges2008/fig1__original_layout.ef @@ -0,0 +1,57 @@ +% Extensive-form game transcribed from the provided figure. +% DrawTree .ef format. +% Layout is chosen to preserve the original geometry of the image: +% chance at the top, two Player 1 singleton information sets, +% crossed middle branches, and two horizontal Player 2 information sets. +% +% Player 0: Chance +% Player 1: 1 +% Player 2: 2 +% +% Chance chooses G or B with probability 1/2 each. +% Player 1 observes the chance outcome and chooses X or Y, with labels +% indexed by the realized chance outcome: X_G, Y_G, X_B, Y_B. +% Player 2 observes only whether the signal is X or Y, not the chance outcome. + +player 0 name Chance +player 1 name 1 +player 2 name 2 + +% Root chance node. +level 0 node n1 player 0 + +% Chance branches, arranged as in the figure. +level 2 node n2 xshift -2.8 from n1 move \frac{1}{2} player 1 +level 2 node n3 xshift 2.8 from n1 move \frac{1}{2} player 1 + +% Player 1 branches. +% Left Player 1 node: chance outcome G. +level 4 node n4 xshift -2.7 from n2 move X_G +level 4 node n5 xshift 4.1 from n2 move Y_G + +% Right Player 1 node: chance outcome B. +% The X_B and Y_G branches cross, matching the original layout. +level 4 node n6 xshift -4.1 from n3 move X_B +level 4 node n7 xshift 2.7 from n3 move Y_B + +% Player 2 information sets. +% X-signal information set: histories (G,X_G) and (B,X_B). +iset n4 n6 player 2 + +% Y-signal information set: histories (G,Y_G) and (B,Y_B). +iset n5 n7 player 2 + +% Player 2 actions and terminal payoffs, listed left-to-right as in the image. +% At the X-signal information set. +level 6 node n8 xshift -0.45 from n4 move l_X payoffs 4 10 +level 6 node n9 xshift 0.45 from n4 move r_X payoffs 0 6 + +level 6 node n10 xshift -0.45 from n6 move l_X payoffs 6 0 +level 6 node n11 xshift 0.45 from n6 move r_X payoffs 0 6 + +% At the Y-signal information set. +level 6 node n12 xshift -0.45 from n5 move l_Y payoffs 4 10 +level 6 node n13 xshift 0.45 from n5 move r_Y payoffs 0 6 + +level 6 node n14 xshift -0.45 from n7 move l_Y payoffs 6 0 +level 6 node n15 xshift 0.45 from n7 move r_Y payoffs 0 6 diff --git a/doc/references.bib b/doc/references.bib index f39c14834..c709aa493 100644 --- a/doc/references.bib +++ b/doc/references.bib @@ -420,5 +420,30 @@ @book{ShoLeyB08 title={Multiagent systems: Algorithmic, game-theoretic, and logical foundations}, author={Shoham, Yoav and Leyton-Brown, Kevin}, year={2008}, - publisher={Cambridge University Press} + publisher={Cambridge University Press}, + category = {textbooks} } + +@book{OsbRub94, + title={A course in game theory}, + author={Osborne, Martin J and Rubinstein, Ariel}, + year={1994}, + publisher={MIT press}, + category = {textbooks} +} + +@book{Gia18, + title={Game theory}, + author={Giacomo Bonanno}, + year={2018}, + publisher={CreateSpace Independent Publishing Platform}, + category = {textbooks} +} + +@book{NiouOrde15, + title={Strategy and politics: an introduction to game theory}, + author={Niou, Emerson and Ordeshook, Peter C}, + year={2015}, + publisher={Routledge}, + category = {textbooks} +} \ No newline at end of file