@stevenvo780/st-lang 4.5.0 → 4.5.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (286) hide show
  1. package/README.md +78 -37
  2. package/dist/bdd/index.d.ts +4 -0
  3. package/dist/bdd/index.d.ts.map +1 -0
  4. package/dist/bdd/index.js +29 -0
  5. package/dist/bdd/index.js.map +1 -0
  6. package/dist/bdd/manager.d.ts +122 -0
  7. package/dist/bdd/manager.d.ts.map +1 -0
  8. package/dist/bdd/manager.js +524 -0
  9. package/dist/bdd/manager.js.map +1 -0
  10. package/dist/bdd/types.d.ts +20 -0
  11. package/dist/bdd/types.d.ts.map +1 -0
  12. package/dist/bdd/types.js +28 -0
  13. package/dist/bdd/types.js.map +1 -0
  14. package/dist/game-theory/common-games.d.ts +50 -0
  15. package/dist/game-theory/common-games.d.ts.map +1 -0
  16. package/dist/game-theory/common-games.js +112 -0
  17. package/dist/game-theory/common-games.js.map +1 -0
  18. package/dist/game-theory/dominance.d.ts +26 -0
  19. package/dist/game-theory/dominance.d.ts.map +1 -0
  20. package/dist/game-theory/dominance.js +203 -0
  21. package/dist/game-theory/dominance.js.map +1 -0
  22. package/dist/game-theory/index.d.ts +8 -0
  23. package/dist/game-theory/index.d.ts.map +1 -0
  24. package/dist/game-theory/index.js +47 -0
  25. package/dist/game-theory/index.js.map +1 -0
  26. package/dist/game-theory/lemke-howson.d.ts +3 -0
  27. package/dist/game-theory/lemke-howson.d.ts.map +1 -0
  28. package/dist/game-theory/lemke-howson.js +269 -0
  29. package/dist/game-theory/lemke-howson.js.map +1 -0
  30. package/dist/game-theory/linalg.d.ts +7 -0
  31. package/dist/game-theory/linalg.d.ts.map +1 -0
  32. package/dist/game-theory/linalg.js +69 -0
  33. package/dist/game-theory/linalg.js.map +1 -0
  34. package/dist/game-theory/pure-nash.d.ts +3 -0
  35. package/dist/game-theory/pure-nash.d.ts.map +1 -0
  36. package/dist/game-theory/pure-nash.js +86 -0
  37. package/dist/game-theory/pure-nash.js.map +1 -0
  38. package/dist/game-theory/support-enumeration.d.ts +3 -0
  39. package/dist/game-theory/support-enumeration.d.ts.map +1 -0
  40. package/dist/game-theory/support-enumeration.js +214 -0
  41. package/dist/game-theory/support-enumeration.js.map +1 -0
  42. package/dist/game-theory/types.d.ts +57 -0
  43. package/dist/game-theory/types.d.ts.map +1 -0
  44. package/dist/game-theory/types.js +191 -0
  45. package/dist/game-theory/types.js.map +1 -0
  46. package/dist/index.d.ts +19 -1
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +75 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/information-theory/index.d.ts +29 -0
  51. package/dist/information-theory/index.d.ts.map +1 -0
  52. package/dist/information-theory/index.js +323 -0
  53. package/dist/information-theory/index.js.map +1 -0
  54. package/dist/namespaces/logic.d.ts +42 -0
  55. package/dist/namespaces/logic.d.ts.map +1 -0
  56. package/dist/namespaces/logic.js +112 -0
  57. package/dist/namespaces/logic.js.map +1 -0
  58. package/dist/namespaces/proof-systems.d.ts +18 -0
  59. package/dist/namespaces/proof-systems.d.ts.map +1 -0
  60. package/dist/namespaces/proof-systems.js +59 -0
  61. package/dist/namespaces/proof-systems.js.map +1 -0
  62. package/dist/namespaces/reasoning.d.ts +26 -0
  63. package/dist/namespaces/reasoning.d.ts.map +1 -0
  64. package/dist/namespaces/reasoning.js +72 -0
  65. package/dist/namespaces/reasoning.js.map +1 -0
  66. package/dist/namespaces/semantics.d.ts +21 -0
  67. package/dist/namespaces/semantics.d.ts.map +1 -0
  68. package/dist/namespaces/semantics.js +64 -0
  69. package/dist/namespaces/semantics.js.map +1 -0
  70. package/dist/namespaces/solvers.d.ts +22 -0
  71. package/dist/namespaces/solvers.d.ts.map +1 -0
  72. package/dist/namespaces/solvers.js +66 -0
  73. package/dist/namespaces/solvers.js.map +1 -0
  74. package/dist/namespaces/type-theory.d.ts +22 -0
  75. package/dist/namespaces/type-theory.d.ts.map +1 -0
  76. package/dist/namespaces/type-theory.js +65 -0
  77. package/dist/namespaces/type-theory.js.map +1 -0
  78. package/dist/optimization/branch-and-bound.d.ts +11 -0
  79. package/dist/optimization/branch-and-bound.d.ts.map +1 -0
  80. package/dist/optimization/branch-and-bound.js +311 -0
  81. package/dist/optimization/branch-and-bound.js.map +1 -0
  82. package/dist/optimization/index.d.ts +5 -0
  83. package/dist/optimization/index.d.ts.map +1 -0
  84. package/dist/optimization/index.js +20 -0
  85. package/dist/optimization/index.js.map +1 -0
  86. package/dist/optimization/simplex.d.ts +8 -0
  87. package/dist/optimization/simplex.d.ts.map +1 -0
  88. package/dist/optimization/simplex.js +408 -0
  89. package/dist/optimization/simplex.js.map +1 -0
  90. package/dist/optimization/standard-form.d.ts +11 -0
  91. package/dist/optimization/standard-form.d.ts.map +1 -0
  92. package/dist/optimization/standard-form.js +112 -0
  93. package/dist/optimization/standard-form.js.map +1 -0
  94. package/dist/optimization/types.d.ts +44 -0
  95. package/dist/optimization/types.d.ts.map +1 -0
  96. package/dist/optimization/types.js +15 -0
  97. package/dist/optimization/types.js.map +1 -0
  98. package/dist/profiles/hol/connectives.d.ts +46 -0
  99. package/dist/profiles/hol/connectives.d.ts.map +1 -0
  100. package/dist/profiles/hol/connectives.js +104 -0
  101. package/dist/profiles/hol/connectives.js.map +1 -0
  102. package/dist/profiles/hol/index.d.ts +7 -0
  103. package/dist/profiles/hol/index.d.ts.map +1 -0
  104. package/dist/profiles/hol/index.js +77 -0
  105. package/dist/profiles/hol/index.js.map +1 -0
  106. package/dist/profiles/hol/rules.d.ts +31 -0
  107. package/dist/profiles/hol/rules.d.ts.map +1 -0
  108. package/dist/profiles/hol/rules.js +258 -0
  109. package/dist/profiles/hol/rules.js.map +1 -0
  110. package/dist/profiles/hol/term.d.ts +52 -0
  111. package/dist/profiles/hol/term.d.ts.map +1 -0
  112. package/dist/profiles/hol/term.js +345 -0
  113. package/dist/profiles/hol/term.js.map +1 -0
  114. package/dist/profiles/hol/type-system.d.ts +38 -0
  115. package/dist/profiles/hol/type-system.d.ts.map +1 -0
  116. package/dist/profiles/hol/type-system.js +133 -0
  117. package/dist/profiles/hol/type-system.js.map +1 -0
  118. package/dist/profiles/hol/types.d.ts +59 -0
  119. package/dist/profiles/hol/types.d.ts.map +1 -0
  120. package/dist/profiles/hol/types.js +26 -0
  121. package/dist/profiles/hol/types.js.map +1 -0
  122. package/dist/smt-lib/ast.d.ts +138 -0
  123. package/dist/smt-lib/ast.d.ts.map +1 -0
  124. package/dist/smt-lib/ast.js +73 -0
  125. package/dist/smt-lib/ast.js.map +1 -0
  126. package/dist/smt-lib/emitter.d.ts +12 -0
  127. package/dist/smt-lib/emitter.d.ts.map +1 -0
  128. package/dist/smt-lib/emitter.js +174 -0
  129. package/dist/smt-lib/emitter.js.map +1 -0
  130. package/dist/smt-lib/index.d.ts +6 -0
  131. package/dist/smt-lib/index.d.ts.map +1 -0
  132. package/dist/smt-lib/index.js +31 -0
  133. package/dist/smt-lib/index.js.map +1 -0
  134. package/dist/smt-lib/parser.d.ts +13 -0
  135. package/dist/smt-lib/parser.d.ts.map +1 -0
  136. package/dist/smt-lib/parser.js +614 -0
  137. package/dist/smt-lib/parser.js.map +1 -0
  138. package/dist/smt-lib/tokenizer.d.ts +16 -0
  139. package/dist/smt-lib/tokenizer.d.ts.map +1 -0
  140. package/dist/smt-lib/tokenizer.js +234 -0
  141. package/dist/smt-lib/tokenizer.js.map +1 -0
  142. package/dist/tests/api/namespaces.test.d.ts +9 -0
  143. package/dist/tests/api/namespaces.test.d.ts.map +1 -0
  144. package/dist/tests/api/namespaces.test.js +218 -0
  145. package/dist/tests/api/namespaces.test.js.map +1 -0
  146. package/dist/tests/bdd/manager.test.d.ts +2 -0
  147. package/dist/tests/bdd/manager.test.d.ts.map +1 -0
  148. package/dist/tests/bdd/manager.test.js +472 -0
  149. package/dist/tests/bdd/manager.test.js.map +1 -0
  150. package/dist/tests/game-theory/game-theory.test.d.ts +2 -0
  151. package/dist/tests/game-theory/game-theory.test.d.ts.map +1 -0
  152. package/dist/tests/game-theory/game-theory.test.js +252 -0
  153. package/dist/tests/game-theory/game-theory.test.js.map +1 -0
  154. package/dist/tests/hol/hol.test.d.ts +2 -0
  155. package/dist/tests/hol/hol.test.d.ts.map +1 -0
  156. package/dist/tests/hol/hol.test.js +340 -0
  157. package/dist/tests/hol/hol.test.js.map +1 -0
  158. package/dist/tests/information-theory/information-theory.test.d.ts +2 -0
  159. package/dist/tests/information-theory/information-theory.test.d.ts.map +1 -0
  160. package/dist/tests/information-theory/information-theory.test.js +291 -0
  161. package/dist/tests/information-theory/information-theory.test.js.map +1 -0
  162. package/dist/tests/optimization/ilp.test.d.ts +2 -0
  163. package/dist/tests/optimization/ilp.test.d.ts.map +1 -0
  164. package/dist/tests/optimization/ilp.test.js +204 -0
  165. package/dist/tests/optimization/ilp.test.js.map +1 -0
  166. package/dist/tests/optimization/lp.test.d.ts +2 -0
  167. package/dist/tests/optimization/lp.test.d.ts.map +1 -0
  168. package/dist/tests/optimization/lp.test.js +224 -0
  169. package/dist/tests/optimization/lp.test.js.map +1 -0
  170. package/dist/tests/properties/agm.property.test.d.ts +2 -0
  171. package/dist/tests/properties/agm.property.test.d.ts.map +1 -0
  172. package/dist/tests/properties/agm.property.test.js +75 -0
  173. package/dist/tests/properties/agm.property.test.js.map +1 -0
  174. package/dist/tests/properties/anti-unification.property.test.d.ts +2 -0
  175. package/dist/tests/properties/anti-unification.property.test.d.ts.map +1 -0
  176. package/dist/tests/properties/anti-unification.property.test.js +43 -0
  177. package/dist/tests/properties/anti-unification.property.test.js.map +1 -0
  178. package/dist/tests/properties/argumentation.property.test.d.ts +2 -0
  179. package/dist/tests/properties/argumentation.property.test.d.ts.map +1 -0
  180. package/dist/tests/properties/argumentation.property.test.js +51 -0
  181. package/dist/tests/properties/argumentation.property.test.js.map +1 -0
  182. package/dist/tests/properties/bayesian.property.test.d.ts +2 -0
  183. package/dist/tests/properties/bayesian.property.test.d.ts.map +1 -0
  184. package/dist/tests/properties/bayesian.property.test.js +32 -0
  185. package/dist/tests/properties/bayesian.property.test.js.map +1 -0
  186. package/dist/tests/properties/bisimulation.property.test.d.ts +2 -0
  187. package/dist/tests/properties/bisimulation.property.test.d.ts.map +1 -0
  188. package/dist/tests/properties/bisimulation.property.test.js +50 -0
  189. package/dist/tests/properties/bisimulation.property.test.js.map +1 -0
  190. package/dist/tests/properties/cdcl.property.test.d.ts +2 -0
  191. package/dist/tests/properties/cdcl.property.test.d.ts.map +1 -0
  192. package/dist/tests/properties/cdcl.property.test.js +70 -0
  193. package/dist/tests/properties/cdcl.property.test.js.map +1 -0
  194. package/dist/tests/properties/coinduction.property.test.d.ts +2 -0
  195. package/dist/tests/properties/coinduction.property.test.d.ts.map +1 -0
  196. package/dist/tests/properties/coinduction.property.test.js +34 -0
  197. package/dist/tests/properties/coinduction.property.test.js.map +1 -0
  198. package/dist/tests/properties/constructive-reals.property.test.d.ts +2 -0
  199. package/dist/tests/properties/constructive-reals.property.test.d.ts.map +1 -0
  200. package/dist/tests/properties/constructive-reals.property.test.js +59 -0
  201. package/dist/tests/properties/constructive-reals.property.test.js.map +1 -0
  202. package/dist/tests/properties/csp.property.test.d.ts +2 -0
  203. package/dist/tests/properties/csp.property.test.d.ts.map +1 -0
  204. package/dist/tests/properties/csp.property.test.js +58 -0
  205. package/dist/tests/properties/csp.property.test.js.map +1 -0
  206. package/dist/tests/properties/generators.d.ts +78 -0
  207. package/dist/tests/properties/generators.d.ts.map +1 -0
  208. package/dist/tests/properties/generators.js +348 -0
  209. package/dist/tests/properties/generators.js.map +1 -0
  210. package/dist/tests/properties/ho-unify.property.test.d.ts +2 -0
  211. package/dist/tests/properties/ho-unify.property.test.d.ts.map +1 -0
  212. package/dist/tests/properties/ho-unify.property.test.js +46 -0
  213. package/dist/tests/properties/ho-unify.property.test.js.map +1 -0
  214. package/dist/tests/properties/hyperreal.property.test.d.ts +2 -0
  215. package/dist/tests/properties/hyperreal.property.test.d.ts.map +1 -0
  216. package/dist/tests/properties/hyperreal.property.test.js +33 -0
  217. package/dist/tests/properties/hyperreal.property.test.js.map +1 -0
  218. package/dist/tests/properties/intuit-nj.property.test.d.ts +2 -0
  219. package/dist/tests/properties/intuit-nj.property.test.d.ts.map +1 -0
  220. package/dist/tests/properties/intuit-nj.property.test.js +57 -0
  221. package/dist/tests/properties/intuit-nj.property.test.js.map +1 -0
  222. package/dist/tests/properties/lambda-calc.property.test.d.ts +2 -0
  223. package/dist/tests/properties/lambda-calc.property.test.d.ts.map +1 -0
  224. package/dist/tests/properties/lambda-calc.property.test.js +35 -0
  225. package/dist/tests/properties/lambda-calc.property.test.js.map +1 -0
  226. package/dist/tests/properties/mln.property.test.d.ts +2 -0
  227. package/dist/tests/properties/mln.property.test.d.ts.map +1 -0
  228. package/dist/tests/properties/mln.property.test.js +41 -0
  229. package/dist/tests/properties/mln.property.test.js.map +1 -0
  230. package/dist/tests/properties/mltt.property.test.d.ts +2 -0
  231. package/dist/tests/properties/mltt.property.test.d.ts.map +1 -0
  232. package/dist/tests/properties/mltt.property.test.js +33 -0
  233. package/dist/tests/properties/mltt.property.test.js.map +1 -0
  234. package/dist/tests/properties/nbe.property.test.d.ts +2 -0
  235. package/dist/tests/properties/nbe.property.test.d.ts.map +1 -0
  236. package/dist/tests/properties/nbe.property.test.js +44 -0
  237. package/dist/tests/properties/nbe.property.test.js.map +1 -0
  238. package/dist/tests/properties/planning.property.test.d.ts +2 -0
  239. package/dist/tests/properties/planning.property.test.d.ts.map +1 -0
  240. package/dist/tests/properties/planning.property.test.js +51 -0
  241. package/dist/tests/properties/planning.property.test.js.map +1 -0
  242. package/dist/tests/properties/profile-bridge.property.test.d.ts +2 -0
  243. package/dist/tests/properties/profile-bridge.property.test.d.ts.map +1 -0
  244. package/dist/tests/properties/profile-bridge.property.test.js +71 -0
  245. package/dist/tests/properties/profile-bridge.property.test.js.map +1 -0
  246. package/dist/tests/properties/refinement-types.property.test.d.ts +2 -0
  247. package/dist/tests/properties/refinement-types.property.test.d.ts.map +1 -0
  248. package/dist/tests/properties/refinement-types.property.test.js +37 -0
  249. package/dist/tests/properties/refinement-types.property.test.js.map +1 -0
  250. package/dist/tests/properties/sequent-g3.property.test.d.ts +2 -0
  251. package/dist/tests/properties/sequent-g3.property.test.d.ts.map +1 -0
  252. package/dist/tests/properties/sequent-g3.property.test.js +34 -0
  253. package/dist/tests/properties/sequent-g3.property.test.js.map +1 -0
  254. package/dist/tests/properties/symbolic-diff.property.test.d.ts +2 -0
  255. package/dist/tests/properties/symbolic-diff.property.test.d.ts.map +1 -0
  256. package/dist/tests/properties/symbolic-diff.property.test.js +49 -0
  257. package/dist/tests/properties/symbolic-diff.property.test.js.map +1 -0
  258. package/dist/tests/properties/system-f.property.test.d.ts +2 -0
  259. package/dist/tests/properties/system-f.property.test.d.ts.map +1 -0
  260. package/dist/tests/properties/system-f.property.test.js +37 -0
  261. package/dist/tests/properties/system-f.property.test.js.map +1 -0
  262. package/dist/tests/properties/theorem-cache.property.test.d.ts +2 -0
  263. package/dist/tests/properties/theorem-cache.property.test.d.ts.map +1 -0
  264. package/dist/tests/properties/theorem-cache.property.test.js +38 -0
  265. package/dist/tests/properties/theorem-cache.property.test.js.map +1 -0
  266. package/dist/tests/properties/trs.property.test.d.ts +2 -0
  267. package/dist/tests/properties/trs.property.test.d.ts.map +1 -0
  268. package/dist/tests/properties/trs.property.test.js +34 -0
  269. package/dist/tests/properties/trs.property.test.js.map +1 -0
  270. package/dist/tests/properties/unification.property.test.d.ts +2 -0
  271. package/dist/tests/properties/unification.property.test.d.ts.map +1 -0
  272. package/dist/tests/properties/unification.property.test.js +42 -0
  273. package/dist/tests/properties/unification.property.test.js.map +1 -0
  274. package/dist/tests/smt-lib/emitter.test.d.ts +2 -0
  275. package/dist/tests/smt-lib/emitter.test.d.ts.map +1 -0
  276. package/dist/tests/smt-lib/emitter.test.js +155 -0
  277. package/dist/tests/smt-lib/emitter.test.js.map +1 -0
  278. package/dist/tests/smt-lib/parser.test.d.ts +2 -0
  279. package/dist/tests/smt-lib/parser.test.d.ts.map +1 -0
  280. package/dist/tests/smt-lib/parser.test.js +164 -0
  281. package/dist/tests/smt-lib/parser.test.js.map +1 -0
  282. package/dist/tests/smt-lib/tokenizer.test.d.ts +2 -0
  283. package/dist/tests/smt-lib/tokenizer.test.d.ts.map +1 -0
  284. package/dist/tests/smt-lib/tokenizer.test.js +59 -0
  285. package/dist/tests/smt-lib/tokenizer.test.js.map +1 -0
  286. package/package.json +3 -1
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Common games — fixtures clásicos para tests y docs.
4
+ // ============================================================
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.prisonersDilemma = prisonersDilemma;
7
+ exports.rockPaperScissors = rockPaperScissors;
8
+ exports.battleOfSexes = battleOfSexes;
9
+ exports.matchingPennies = matchingPennies;
10
+ exports.stagHunt = stagHunt;
11
+ const types_1 = require("./types");
12
+ /**
13
+ * Prisoner's dilemma. Estrategias: 0=cooperate, 1=defect.
14
+ * Pagos típicos (T > R > P > S):
15
+ * T=5, R=3, P=1, S=0
16
+ *
17
+ * C D
18
+ * C (3,3) (0,5)
19
+ * D (5,0) (1,1)
20
+ *
21
+ * Único Nash: (D, D) con payoff (1, 1).
22
+ */
23
+ function prisonersDilemma() {
24
+ const p1 = [
25
+ [3, 0],
26
+ [5, 1],
27
+ ];
28
+ const p2 = [
29
+ [3, 5],
30
+ [0, 1],
31
+ ];
32
+ return (0, types_1.createTwoPlayerGame)(p1, p2);
33
+ }
34
+ /**
35
+ * Rock-Paper-Scissors (zero-sum). Estrategias: 0=R, 1=P, 2=S.
36
+ * Único Nash: (1/3, 1/3, 1/3) por jugador, payoff (0, 0).
37
+ */
38
+ function rockPaperScissors() {
39
+ const p1 = [
40
+ [0, -1, 1],
41
+ [1, 0, -1],
42
+ [-1, 1, 0],
43
+ ];
44
+ const p2 = [
45
+ [0, 1, -1],
46
+ [-1, 0, 1],
47
+ [1, -1, 0],
48
+ ];
49
+ return (0, types_1.createTwoPlayerGame)(p1, p2);
50
+ }
51
+ /**
52
+ * Battle of the sexes. Dos jugadores prefieren coordinar pero
53
+ * en cosas distintas. Estrategias: 0=Opera, 1=Football.
54
+ *
55
+ * O F
56
+ * O (2,1) (0,0)
57
+ * F (0,0) (1,2)
58
+ *
59
+ * Tres Nash: (O,O), (F,F), mixto.
60
+ */
61
+ function battleOfSexes() {
62
+ const p1 = [
63
+ [2, 0],
64
+ [0, 1],
65
+ ];
66
+ const p2 = [
67
+ [1, 0],
68
+ [0, 2],
69
+ ];
70
+ return (0, types_1.createTwoPlayerGame)(p1, p2);
71
+ }
72
+ /**
73
+ * Matching pennies (zero-sum). Estrategias: 0=H, 1=T.
74
+ *
75
+ * H T
76
+ * H ( 1,-1) (-1, 1)
77
+ * T (-1, 1) ( 1,-1)
78
+ *
79
+ * Único Nash: (1/2, 1/2).
80
+ */
81
+ function matchingPennies() {
82
+ const p1 = [
83
+ [1, -1],
84
+ [-1, 1],
85
+ ];
86
+ const p2 = [
87
+ [-1, 1],
88
+ [1, -1],
89
+ ];
90
+ return (0, types_1.createTwoPlayerGame)(p1, p2);
91
+ }
92
+ /**
93
+ * Coordination "stag hunt". Estrategias: 0=Stag, 1=Hare.
94
+ *
95
+ * S H
96
+ * S (4,4) (0,3)
97
+ * H (3,0) (2,2)
98
+ *
99
+ * Nash puros: (S,S) y (H,H); además uno mixto.
100
+ */
101
+ function stagHunt() {
102
+ const p1 = [
103
+ [4, 0],
104
+ [3, 2],
105
+ ];
106
+ const p2 = [
107
+ [4, 3],
108
+ [0, 2],
109
+ ];
110
+ return (0, types_1.createTwoPlayerGame)(p1, p2);
111
+ }
112
+ //# sourceMappingURL=common-games.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-games.js","sourceRoot":"","sources":["../../src/game-theory/common-games.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,sDAAsD;AACtD,+DAA+D;;AAgB/D,4CAUC;AAMD,8CAYC;AAYD,sCAUC;AAWD,0CAUC;AAWD,4BAUC;AAzGD,mCAA8C;AAE9C;;;;;;;;;;GAUG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACP,CAAC;IACF,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACP,CAAC;IACF,OAAO,IAAA,2BAAmB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;GAGG;AACH,SAAgB,iBAAiB;IAC/B,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;KACX,CAAC;IACF,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QACV,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACV,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;KACX,CAAC;IACF,OAAO,IAAA,2BAAmB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,aAAa;IAC3B,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACP,CAAC;IACF,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACP,CAAC;IACF,OAAO,IAAA,2BAAmB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,eAAe;IAC7B,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;KACR,CAAC;IACF,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACP,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;KACR,CAAC;IACF,OAAO,IAAA,2BAAmB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,QAAQ;IACtB,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACP,CAAC;IACF,MAAM,EAAE,GAAG;QACT,CAAC,CAAC,EAAE,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC,CAAC;KACP,CAAC;IACF,OAAO,IAAA,2BAAmB,EAAC,EAAE,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { MixedStrategy, NormalFormGame } from './types';
2
+ /**
3
+ * Devuelve true si la estrategia pura `strategy` del jugador
4
+ * `player` está dominada por otra pura. Si `strict` es true exige
5
+ * dominancia estricta, si no permite weak.
6
+ */
7
+ export declare function isDominated(game: NormalFormGame, player: number, strategy: number, strict?: boolean): boolean;
8
+ /**
9
+ * Aplica eliminación iterada hasta punto fijo. Devuelve un juego
10
+ * cuyas estrategias son un subconjunto de las originales.
11
+ *
12
+ * Importante: el resultado siempre tiene al menos 1 estrategia por
13
+ * jugador (la última no se elimina aunque "técnicamente" lo esté,
14
+ * porque eliminarla deja el juego vacío y sin sentido).
15
+ */
16
+ export declare function eliminateDominated(game: NormalFormGame, strict?: boolean): NormalFormGame;
17
+ /**
18
+ * Mejores respuestas puras del jugador `player` dado que los demás
19
+ * juegan según `opponentStrategies` (debe incluir TODOS los jugadores,
20
+ * incluyendo el propio — la entrada de `player` se ignora).
21
+ *
22
+ * Retorna lista de índices de estrategias puras con utilidad máxima
23
+ * (puede haber empates).
24
+ */
25
+ export declare function bestResponse(game: NormalFormGame, player: number, opponentStrategies: MixedStrategy[]): number[];
26
+ //# sourceMappingURL=dominance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dominance.d.ts","sourceRoot":"","sources":["../../src/game-theory/dominance.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAG7D;;;;GAIG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,MAAM,UAAO,GACZ,OAAO,CA6CT;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,cAAc,EAAE,MAAM,UAAO,GAAG,cAAc,CAuBtF;AA2BD;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,cAAc,EACpB,MAAM,EAAE,MAAM,EACd,kBAAkB,EAAE,aAAa,EAAE,GAClC,MAAM,EAAE,CAsCV"}
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Iterated elimination of (strictly|weakly) dominated strategies
4
+ // ============================================================
5
+ //
6
+ // Una estrategia pura `s` del jugador `i` está estrictamente
7
+ // dominada si existe otra estrategia pura `s'` tal que para todo
8
+ // perfil de los demás jugadores, u_i(s', t) > u_i(s, t).
9
+ //
10
+ // La versión "weak" usa ≥ con desigualdad estricta en al menos
11
+ // un perfil. Aquí soportamos `strict` (estricta) y la otra.
12
+ Object.defineProperty(exports, "__esModule", { value: true });
13
+ exports.isDominated = isDominated;
14
+ exports.eliminateDominated = eliminateDominated;
15
+ exports.bestResponse = bestResponse;
16
+ const types_1 = require("./types");
17
+ /**
18
+ * Devuelve true si la estrategia pura `strategy` del jugador
19
+ * `player` está dominada por otra pura. Si `strict` es true exige
20
+ * dominancia estricta, si no permite weak.
21
+ */
22
+ function isDominated(game, player, strategy, strict = true) {
23
+ const sizes = game.strategies;
24
+ const mySize = sizes[player];
25
+ if (mySize === undefined)
26
+ throw new Error(`player ${player} out of range`);
27
+ const row = game.payoffs[player];
28
+ if (!row)
29
+ throw new Error(`payoffs missing for player ${player}`);
30
+ // Conjunto de "perfiles del oponente" — un índice por combinación de
31
+ // los demás jugadores. Iteramos los perfiles totales pero solo
32
+ // miramos los que tienen `strategy` en `player`.
33
+ const total = (0, types_1.totalProfiles)(sizes);
34
+ // Para cada alternativa s' != strategy, ver si domina a strategy.
35
+ for (let alt = 0; alt < mySize; alt++) {
36
+ if (alt === strategy)
37
+ continue;
38
+ let allGE = true;
39
+ let oneStrictGT = false;
40
+ for (let idx = 0; idx < total; idx++) {
41
+ const profile = (0, types_1.indexToProfile)(idx, sizes);
42
+ if (profile[player] !== strategy)
43
+ continue;
44
+ const altProfile = profile.slice();
45
+ altProfile[player] = alt;
46
+ const altIdx = (0, types_1.profileToIndex)(altProfile, sizes);
47
+ const uAlt = row[altIdx];
48
+ const uCur = row[idx];
49
+ if (strict) {
50
+ if (!(uAlt > uCur)) {
51
+ allGE = false;
52
+ break;
53
+ }
54
+ }
55
+ else {
56
+ if (uAlt < uCur) {
57
+ allGE = false;
58
+ break;
59
+ }
60
+ if (uAlt > uCur)
61
+ oneStrictGT = true;
62
+ }
63
+ }
64
+ if (strict) {
65
+ if (allGE)
66
+ return true;
67
+ }
68
+ else {
69
+ if (allGE && oneStrictGT)
70
+ return true;
71
+ }
72
+ }
73
+ return false;
74
+ }
75
+ /**
76
+ * Aplica eliminación iterada hasta punto fijo. Devuelve un juego
77
+ * cuyas estrategias son un subconjunto de las originales.
78
+ *
79
+ * Importante: el resultado siempre tiene al menos 1 estrategia por
80
+ * jugador (la última no se elimina aunque "técnicamente" lo esté,
81
+ * porque eliminarla deja el juego vacío y sin sentido).
82
+ */
83
+ function eliminateDominated(game, strict = true) {
84
+ let cur = game;
85
+ // Mapeo opcional: índices supervivientes por jugador. No los
86
+ // exportamos aún; el spec sólo pide el juego reducido.
87
+ while (true) {
88
+ const before = (0, types_1.totalProfiles)(cur.strategies);
89
+ let removedSomething = false;
90
+ for (let p = 0; p < cur.players; p++) {
91
+ const size = cur.strategies[p];
92
+ if (size <= 1)
93
+ continue;
94
+ for (let s = 0; s < size; s++) {
95
+ if (isDominated(cur, p, s, strict)) {
96
+ cur = removeStrategy(cur, p, s);
97
+ removedSomething = true;
98
+ break; // recalcular con el juego más chico
99
+ }
100
+ }
101
+ if (removedSomething)
102
+ break;
103
+ }
104
+ if (!removedSomething)
105
+ break;
106
+ if ((0, types_1.totalProfiles)(cur.strategies) === before)
107
+ break; // safety
108
+ }
109
+ return cur;
110
+ }
111
+ /**
112
+ * Quita una estrategia pura de un jugador y rebuilds payoffs.
113
+ */
114
+ function removeStrategy(game, player, strategy) {
115
+ const newSizes = game.strategies.slice();
116
+ newSizes[player] = newSizes[player] - 1;
117
+ const newTotal = (0, types_1.totalProfiles)(newSizes);
118
+ const newPayoffs = [];
119
+ for (let p = 0; p < game.players; p++) {
120
+ newPayoffs.push(new Array(newTotal));
121
+ }
122
+ for (let newIdx = 0; newIdx < newTotal; newIdx++) {
123
+ const newProfile = (0, types_1.indexToProfile)(newIdx, newSizes);
124
+ // Mapear back a perfil viejo: saltar la estrategia eliminada
125
+ const oldProfile = newProfile.slice();
126
+ const np = oldProfile[player];
127
+ oldProfile[player] = np >= strategy ? np + 1 : np;
128
+ const oldIdx = (0, types_1.profileToIndex)(oldProfile, game.strategies);
129
+ for (let p = 0; p < game.players; p++) {
130
+ newPayoffs[p][newIdx] = game.payoffs[p][oldIdx];
131
+ }
132
+ }
133
+ return (0, types_1.createGame)(game.players, newSizes, newPayoffs);
134
+ }
135
+ /**
136
+ * Mejores respuestas puras del jugador `player` dado que los demás
137
+ * juegan según `opponentStrategies` (debe incluir TODOS los jugadores,
138
+ * incluyendo el propio — la entrada de `player` se ignora).
139
+ *
140
+ * Retorna lista de índices de estrategias puras con utilidad máxima
141
+ * (puede haber empates).
142
+ */
143
+ function bestResponse(game, player, opponentStrategies) {
144
+ const sizes = game.strategies;
145
+ const mySize = sizes[player];
146
+ if (mySize === undefined)
147
+ throw new Error(`player ${player} out of range`);
148
+ if (opponentStrategies.length !== game.players) {
149
+ throw new Error(`expected ${game.players} mixed strategies (one per player including self placeholder)`);
150
+ }
151
+ const utilities = new Array(mySize).fill(0);
152
+ for (let s = 0; s < mySize; s++) {
153
+ const dists = [];
154
+ for (let p = 0; p < game.players; p++) {
155
+ if (p === player) {
156
+ const d = new Array(mySize).fill(0);
157
+ d[s] = 1;
158
+ dists.push(d);
159
+ }
160
+ else {
161
+ dists.push(opponentStrategies[p].distribution);
162
+ }
163
+ }
164
+ utilities[s] = expectedUtility(game, player, dists);
165
+ }
166
+ const best = [];
167
+ let maxU = -Infinity;
168
+ for (let s = 0; s < mySize; s++) {
169
+ const u = utilities[s];
170
+ if (u > maxU + 1e-12) {
171
+ maxU = u;
172
+ best.length = 0;
173
+ best.push(s);
174
+ }
175
+ else if (Math.abs(u - maxU) < 1e-9) {
176
+ best.push(s);
177
+ }
178
+ }
179
+ return best;
180
+ }
181
+ function expectedUtility(game, player, dists) {
182
+ const sizes = game.strategies;
183
+ const total = (0, types_1.totalProfiles)(sizes);
184
+ const row = game.payoffs[player];
185
+ if (!row)
186
+ throw new Error(`player ${player} out of range`);
187
+ let acc = 0;
188
+ for (let idx = 0; idx < total; idx++) {
189
+ const profile = (0, types_1.indexToProfile)(idx, sizes);
190
+ let prob = 1;
191
+ for (let p = 0; p < profile.length; p++) {
192
+ const d = dists[p];
193
+ prob *= d[profile[p]];
194
+ if (prob === 0)
195
+ break;
196
+ }
197
+ if (prob === 0)
198
+ continue;
199
+ acc += prob * row[idx];
200
+ }
201
+ return acc;
202
+ }
203
+ //# sourceMappingURL=dominance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dominance.js","sourceRoot":"","sources":["../../src/game-theory/dominance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type { NormalFormGame, MixedStrategy, NashEquilibrium } from './types';
2
+ export { createGame, createTwoPlayerGame, profileToIndex, indexToProfile, totalProfiles, payoffOf, pureDistribution, expectedPayoff, approxEqual, vectorsApproxEqual, } from './types';
3
+ export { findPureNash } from './pure-nash';
4
+ export { enumerateAllNash } from './support-enumeration';
5
+ export { lemkeHowson } from './lemke-howson';
6
+ export { isDominated, eliminateDominated, bestResponse } from './dominance';
7
+ export { prisonersDilemma, rockPaperScissors, battleOfSexes, matchingPennies, stagHunt, } from './common-games';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/game-theory/index.ts"],"names":[],"mappings":"AAiBA,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,aAAa,EACb,QAAQ,EACR,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,kBAAkB,GACnB,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE5E,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,eAAe,EACf,QAAQ,GACT,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // Game theory — Punto de entrada público
4
+ // ============================================================
5
+ //
6
+ // Computación de equilibria de Nash (puros y mixtos) para juegos
7
+ // 2-player en forma normal NxM y juegos n-player simétricos chicos.
8
+ //
9
+ // - findPureNash enumera Nash puros exhaustivamente.
10
+ // - enumerateAllNash enumera TODOS los Nash (puros y mixtos)
11
+ // via support enumeration (2-player).
12
+ // - lemkeHowson encuentra UN Nash via pivot LCP.
13
+ // - eliminateDominated iterated elimination of dominated strats.
14
+ // - bestResponse best responses puras dado un perfil mixto.
15
+ //
16
+ // Constructores ergonómicos: createTwoPlayerGame, prisonersDilemma,
17
+ // rockPaperScissors, battleOfSexes, matchingPennies, stagHunt.
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.stagHunt = exports.matchingPennies = exports.battleOfSexes = exports.rockPaperScissors = exports.prisonersDilemma = exports.bestResponse = exports.eliminateDominated = exports.isDominated = exports.lemkeHowson = exports.enumerateAllNash = exports.findPureNash = exports.vectorsApproxEqual = exports.approxEqual = exports.expectedPayoff = exports.pureDistribution = exports.payoffOf = exports.totalProfiles = exports.indexToProfile = exports.profileToIndex = exports.createTwoPlayerGame = exports.createGame = void 0;
20
+ var types_1 = require("./types");
21
+ Object.defineProperty(exports, "createGame", { enumerable: true, get: function () { return types_1.createGame; } });
22
+ Object.defineProperty(exports, "createTwoPlayerGame", { enumerable: true, get: function () { return types_1.createTwoPlayerGame; } });
23
+ Object.defineProperty(exports, "profileToIndex", { enumerable: true, get: function () { return types_1.profileToIndex; } });
24
+ Object.defineProperty(exports, "indexToProfile", { enumerable: true, get: function () { return types_1.indexToProfile; } });
25
+ Object.defineProperty(exports, "totalProfiles", { enumerable: true, get: function () { return types_1.totalProfiles; } });
26
+ Object.defineProperty(exports, "payoffOf", { enumerable: true, get: function () { return types_1.payoffOf; } });
27
+ Object.defineProperty(exports, "pureDistribution", { enumerable: true, get: function () { return types_1.pureDistribution; } });
28
+ Object.defineProperty(exports, "expectedPayoff", { enumerable: true, get: function () { return types_1.expectedPayoff; } });
29
+ Object.defineProperty(exports, "approxEqual", { enumerable: true, get: function () { return types_1.approxEqual; } });
30
+ Object.defineProperty(exports, "vectorsApproxEqual", { enumerable: true, get: function () { return types_1.vectorsApproxEqual; } });
31
+ var pure_nash_1 = require("./pure-nash");
32
+ Object.defineProperty(exports, "findPureNash", { enumerable: true, get: function () { return pure_nash_1.findPureNash; } });
33
+ var support_enumeration_1 = require("./support-enumeration");
34
+ Object.defineProperty(exports, "enumerateAllNash", { enumerable: true, get: function () { return support_enumeration_1.enumerateAllNash; } });
35
+ var lemke_howson_1 = require("./lemke-howson");
36
+ Object.defineProperty(exports, "lemkeHowson", { enumerable: true, get: function () { return lemke_howson_1.lemkeHowson; } });
37
+ var dominance_1 = require("./dominance");
38
+ Object.defineProperty(exports, "isDominated", { enumerable: true, get: function () { return dominance_1.isDominated; } });
39
+ Object.defineProperty(exports, "eliminateDominated", { enumerable: true, get: function () { return dominance_1.eliminateDominated; } });
40
+ Object.defineProperty(exports, "bestResponse", { enumerable: true, get: function () { return dominance_1.bestResponse; } });
41
+ var common_games_1 = require("./common-games");
42
+ Object.defineProperty(exports, "prisonersDilemma", { enumerable: true, get: function () { return common_games_1.prisonersDilemma; } });
43
+ Object.defineProperty(exports, "rockPaperScissors", { enumerable: true, get: function () { return common_games_1.rockPaperScissors; } });
44
+ Object.defineProperty(exports, "battleOfSexes", { enumerable: true, get: function () { return common_games_1.battleOfSexes; } });
45
+ Object.defineProperty(exports, "matchingPennies", { enumerable: true, get: function () { return common_games_1.matchingPennies; } });
46
+ Object.defineProperty(exports, "stagHunt", { enumerable: true, get: function () { return common_games_1.stagHunt; } });
47
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/game-theory/index.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,yCAAyC;AACzC,+DAA+D;AAC/D,EAAE;AACF,iEAAiE;AACjE,oEAAoE;AACpE,EAAE;AACF,+DAA+D;AAC/D,mEAAmE;AACnE,+DAA+D;AAC/D,4DAA4D;AAC5D,qEAAqE;AACrE,sEAAsE;AACtE,EAAE;AACF,oEAAoE;AACpE,+DAA+D;;;AAG/D,iCAWiB;AAVf,mGAAA,UAAU,OAAA;AACV,4GAAA,mBAAmB,OAAA;AACnB,uGAAA,cAAc,OAAA;AACd,uGAAA,cAAc,OAAA;AACd,sGAAA,aAAa,OAAA;AACb,iGAAA,QAAQ,OAAA;AACR,yGAAA,gBAAgB,OAAA;AAChB,uGAAA,cAAc,OAAA;AACd,oGAAA,WAAW,OAAA;AACX,2GAAA,kBAAkB,OAAA;AAGpB,yCAA2C;AAAlC,yGAAA,YAAY,OAAA;AACrB,6DAAyD;AAAhD,uHAAA,gBAAgB,OAAA;AACzB,+CAA6C;AAApC,2GAAA,WAAW,OAAA;AAEpB,yCAA4E;AAAnE,wGAAA,WAAW,OAAA;AAAE,+GAAA,kBAAkB,OAAA;AAAE,yGAAA,YAAY,OAAA;AAEtD,+CAMwB;AALtB,gHAAA,gBAAgB,OAAA;AAChB,iHAAA,iBAAiB,OAAA;AACjB,6GAAA,aAAa,OAAA;AACb,+GAAA,eAAe,OAAA;AACf,wGAAA,QAAQ,OAAA"}
@@ -0,0 +1,3 @@
1
+ import type { NashEquilibrium, NormalFormGame } from './types';
2
+ export declare function lemkeHowson(game: NormalFormGame, startLabel?: number): NashEquilibrium | null;
3
+ //# sourceMappingURL=lemke-howson.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lemke-howson.d.ts","sourceRoot":"","sources":["../../src/game-theory/lemke-howson.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAK/D,wBAAgB,WAAW,CAAC,IAAI,EAAE,cAAc,EAAE,UAAU,SAAI,GAAG,eAAe,GAAG,IAAI,CAmQxF"}