Pro Yearly is on sale from $80 to $50! »

二人単貧民の定理を
Coqで証明する試み

 二人単貧民の定理を
Coqで証明する試み

単貧民をテーマに、Coqでゲームを扱うことについて検討する。

Fed6420561c9fe84d529ff2aa7b5c9aa?s=128

Katsuki Ohto

August 31, 2020
Tweet

Transcript

  1. ೋਓ୯ශຽͷఆཧΛ
 COQͰূ໌͢ΔࢼΈ େ౉ উݾʢϑϦʔΤϯδχΞʣ
 2020.8.31 ୈ4ճ೔ຊ૊߹ͤήʔϜཧ࿦ݚڀूձ

  2. ൃදɿCOQ୯ශຽ ➤ ໨తɿ
 ఆཧূ໌ࢧԉܥCoqʹͯ
 ػցʹΑΔอূ෇͖ͷ
 ೋਓ୯ශຽͷূ໌Λॻ͘ ➤ ݁Ռɿ
 ݁࿦·Ͱͷূ໌ͷྲྀΕ͸׬੒
 ࡉ͔͍ิ୊Λશͯূ໌͢Δͷ

    ͸ਐߦதʢ͕͜͜ΩπΠʣ ➤ CoqʹΑΔήʔϜݕূͷ
 ՄೳੑΛ঺հ
  3. ೋਓ୯ශຽ

  4. େ෋߽ܥήʔϜͷݚڀ ➤ ໦୩ɾখ໺ (2017, 2018)
 ೋਓ୯ශຽͷউऀΛઢܗ࣌ؒͰٻΊΔΞϧΰϦζϜͷఏҊ ➤ ೋਓ୯ශຽʢ੢໺, 2007ʣͱ͸…
 τϥϯϓήʔϜେ෋߽ͷ؆ུԽ


    ɾೋਓ
 ɾಛघϧʔϧͳ͠
 ɾҰຕग़͠ͷΈ ➤ ׬શ৘ใήʔϜ
  5. ೋਓ୯ශຽͷఆࣜԽ ➤ ୯ශຽήʔϜͷ೚ҙͷঢ়ଶ͸ҎԼͷࡾͭ૊ͰදݱͰ͖Δ
 ɾख൪ଆͷखࡳɹ 
 ɾඇख൪ଆͷखࡳ 
 ɾ৔ͷࡳͷڧ͞ɹ ➤ ྫ

    
 ʢಉ͡ڧ͞ͷࡳΛෳ਺࣋ͭ͜ͱ΋͋Δʣ
 X ¯ X r X = {1,3}, ¯ X = {2,2,4}, r = 0
  6. ೋਓ୯ශຽͷఆࣜԽ ➤ ྫ ➤ 
 ઌख͕̏Λग़ͨ͠৔߹ɹɹɹɹɹ὎ {1} {2, 2, 4}

    3
 ޙख͕̐Λग़͢ɹɹɹɹɹɹɹɹ὎ {1} {2, 2} 4
 ઌख͸ग़ͤͳ͍ͷͰύεɹɹɹɹ὎ {1} {2, 2} 0
 ޙख͕̎Λग़͢ɹɹɹɹɹɹɹɹ὎ {1} {2} 2
 ઌख͸ύεɹɹɹɹɹɹɹɹɹɹ὎ {1} {2} 0
 ޙख͕̎Λग़ͯ͠ޙखউͪɹɹɹ὎ {1} {} 2 X = {1,3}, ¯ X = {2,2,4}, r = 0
  7. ೋਓ୯ශຽͷఆࣜԽ ➤ ྫ ➤ ઌख͕ Λग़͠
 ˠ ޙख͕ Λग़ͨ͠৔߹
 ˠ

    ઌख͕ Λग़ͯ͠ઌखউͪ ➤ ઌख͕ Λग़͠
 ˠ ޙख͕ Λग़ͨ͠৔߹
 ˠ ઌखύεɺޙख͕ Λग़͢
 ˠ ઌख͕ Λग़ͯ͠ઌखউͪ ➤ ὎Ҏ্ͷ݁Ռ͔Βɹઌखউͪɹͷہ໘ X = {1,3}, ¯ X = {2,2,4}, r = 0 1 2 3 1 4 2 3
  8. ೋਓ୯ශຽͷղ๏ ➤ ໦୩ɾখ໺ (2018) ➤ ҎԼͷΞϧΰϦζϜʹΑΓखࡳͷϚονϯά਺Λܭࢉ 1 ڧ͞ 3 2

    2 4 0 ख൪ଆ ඇख൪ଆ ࣗ෼ͷࡳ͔Βɺ
 ͦΕΑΓऑ͍૬खͷࡳʹ
 ϚονϯάลΛҾ͘ ख൪ଆ͸
 ৔ࡳ΋ର৅ʹ
  9. ೋਓ୯ශຽͷղ๏ ➤ ໦୩ɾখ໺ (2018) ➤ ҎԼͷΞϧΰϦζϜʹΑΓखࡳͷϚονϯά਺Λܭࢉ 1 ڧ͞ 3 2

    2 4 0 ख൪ଆ ඇख൪ଆ ૬खͷ
 ࠷ऑࡳʹ͸
 Ҿ͚ͳ͍ʂ ࣗ෼ͷࡳ͔Βɺ
 ͦΕΑΓऑ͍૬खͷࡳʹ
 ϚονϯάลΛҾ͘
  10. ೋਓ୯ශຽͷղ๏ ➤ ໦୩ɾখ໺ (2018) ➤ ҎԼͷΞϧΰϦζϜʹΑΓखࡳͷϚονϯά਺Λܭࢉ 1 ڧ͞ 3 2

    2 4 0 ख൪ଆ ඇख൪ଆ 2 1 ∨
  11. ೋਓ୯ශຽͷղ๏ ➤ ہ໘ ʹ͓͍ͯ
 खࡳͦΕͧΕͷ࠷খࡳ ຕΛআ͍ͨखࡳΛ ➤ ऑ͍ࡳ΁ͷϚονϯάͷ਺Λܭࢉ͢Δؔ਺ ➤ ख൪ଆඞউ


    ⁶
 (X, ¯ X, r) 1 X− , ¯ X− μ μ(X, ¯ X− + {r}) > μ( ¯ X, X− )
  12. ୯ශຽͷূ໌

  13. ೋਓ୯ශຽͷΞϧΰϦζϜͷূ໌ ➤ ήʔϜʹ෇ଐ͢ΔԿΒ͔ͷ஋ʹର͢Δؼೲ๏Ͱূ໌Ͱ͖Δ
 ͜͜Ͱ͸ɺ྆ऀͷखࡳຕ਺ͷ߹ܭͱ͢Δ 1 ڧ͞ 3 2 2 4

    0 ख൪ଆ ඇख൪ଆ 2 1 ∨
  14. ೋਓ୯ශຽͷΞϧΰϦζϜͷূ໌ ➤ ূ໌͍ͨ͠ఆཧΛ࣍ͷ (a) (b) ʹ෼ׂ
 (a) ͳΒ͹ख൪ଆඞউ
 (b) ͳΒ͹ඇख൪ଆඞউ

    ➤ جૅεςοϓ
 खࡳ̍ຕͣͭʢ߹ܭ̎ຕʣͷͱ͖ (a) (b) ͕੒ཱ ➤ ؼೲεςοϓ
 खࡳ߹ܭ͕ ຕͷͱ͖ɺ
 ɾ(a)ہ໘ͳΒ͹ҰखͰউͪ or ૬खͷ(b)ہ໘ʹભҠ͢Δख͕͋Δ
 ɾ(b)ہ໘ͳΒ͹૬खͷ(a)ہ໘ʹඞͣભҠ͢Δ
 ͜ͱ͕ࣔͤͨͱ͢Δʢ͕͜͜೉͍͠ͷ͕ͩʣ μ(X, ¯ X− + {r}) > μ( ¯ X, X− ) μ(X, ¯ X− + {r}) ≤ μ( ¯ X, X− ) k
  15. ೋਓ୯ශຽͷΞϧΰϦζϜͷূ໌ ➤ ূ໌͍ͨ͠ఆཧΛ࣍ͷ (a) (b) ʹ෼ׂ
 (a) ͳΒ͹ख൪ଆඞউ
 (b) ͳΒ͹ඇख൪ଆඞউ

    ➤ ؼೲεςοϓ
 खࡳ߹ܭ͕ ຕͷͱ͖ɺ
 ɾ(i) (a)ہ໘Ͱग़ͤΔࡳ͕͋Ε͹ؼೲ๏ͷԾఆͷ(b)Λద༻
 ɾ(ii) (b)ہ໘Ͱग़ͤΔࡳ͕͋Ε͹ؼೲ๏ͷԾఆͷ(a)ɺ
 ɹɹɹग़ͤΔࡳ͕ͳ͚Ε͹ (i) Λద༻
 ɾ(i) (a)ہ໘Ͱग़ͤΔࡳ͕ͳ͚Ε͹ (ii) Λద༻
 Αͬͯखࡳ߹ܭ ຕͰ΋(a)(b)͕੒ཱ μ(X, ¯ X− + {r}) > μ( ¯ X, X− ) μ(X, ¯ X− + {r}) ≤ μ( ¯ X, X− ) k + 1 k + 1
  16. ఆཧূ໌ࢧԉܥ
 COQ

  17. COQʹΑΔূ໌ͷྲྀΕ ➤ ఆཧূ໌ࢧԉܥ
 ূ໌Λهड़͢ΔͨΊͷϓϩάϥϛϯάݴޠ
 γεςϜ͕डཧͨ͠ূ໌ʢίʔυʣ͸׬੒ͨ͠ূ໌ͱͯ͠
 Ҏ߱ͷূ໌ʹར༻Ͱ͖Δ ➤ Coq΍AgdaͳͲ͕༗໊ ➤ ʢຊൃදͷൣғͰ͸ʣ͍ΘΏΔʮࣗಈূ໌ʯͰ͸ͳ͍

    ➤ ྫɿࣗવ਺ ʹରͯ͠ ΍ Λূ໌ͯ͠ΈΔ
 n n = 0 + n n = n + 0
  18. None
  19. None
  20. ήʔϜ ON COQ

  21. COQͰήʔϜΛѻ͏ख๏ ➤ ήʔϜ(ͷΈͳΒ༷ͣʑͳର৅ʹʹڞ௨Ͱ͋Δ͕)
 CoqͰෳࡶͳର৅Λఆٛ͢Δ̎௨Γͷ΍Γํ
 
 ɾ࠶ؼؔ਺ʹΑΔఆٛ
 ɹ
 ɾؼೲతͳఆٛ
 ɹ ➤

    ͲͪΒ΋௕୹͋Γ

  22. ࠶ؼؔ਺ʹΑΔήʔϜͷఆٛ ➤ ४උ
 


  23. ࠶ؼؔ਺ʹΑΔήʔϜͷఆٛ ➤ ࠶ؼؔ਺Ͱશ୳ࡧΛఆٛ
 


  24. ࠶ؼؔ਺ʹΑΔήʔϜͷఆٛ ➤ Compute Ͱશ୳ࡧΛ࣮ߦ
 


  25. ࠶ؼؔ਺ʹΑΔήʔϜͷఆٛ ➤ ख਺੍ݶͳ͠ˠ࠶ؼؔ਺ͷఀࢭੑೳ͕Coqʹ఻ΘΒͣ×
 


  26. ؼೲతͳήʔϜͷউഊఆٛ ➤ ҰྫɿউഊΛҾ਺ʹ໋୊Λฦؔ͢਺Λఆٛ͢Δ
 


  27. ؼೲతͳήʔϜͷউഊఆٛ ➤ ۩ମྫʹର͢Δউഊͷܾఆ…ܭࢉ͸Ͱ͖ͣɺূ໌Ͱߦ͏
 


  28. COQͰήʔϜΛѻ͏ख๏ ➤ CoqͰήʔϜΛѻ͏৔߹
 
 ɾ࠶ؼؔ਺ʹΑΔఆٛ
 ɹ௕ॴɿ௚ײʹ͍ۙఆٛɺܭࢉͰ͖Δ
 ɹ୹ॴɿఆٛ͢Δ࣌఺Ͱ੍ݶ͕େ͖͍
 ɹ
 ɾؼೲతͳఆٛ
 ɹ௕ॴɿఆٛͰ͖Δൣғ͕޿͍ɺ௚઀తͳূ໌


    ɹ୹ॴɿ௚ײతͳήʔϜͱͷဃ཭