@stevenvo780/st-lang 4.11.0 → 4.13.0

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 (273) hide show
  1. package/dist/proof-systems/fol-prover-advanced/index.d.ts +7 -0
  2. package/dist/proof-systems/fol-prover-advanced/index.d.ts.map +1 -0
  3. package/dist/proof-systems/fol-prover-advanced/index.js +34 -0
  4. package/dist/proof-systems/fol-prover-advanced/index.js.map +1 -0
  5. package/dist/proof-systems/fol-prover-advanced/ordering.d.ts +34 -0
  6. package/dist/proof-systems/fol-prover-advanced/ordering.d.ts.map +1 -0
  7. package/dist/proof-systems/fol-prover-advanced/ordering.js +197 -0
  8. package/dist/proof-systems/fol-prover-advanced/ordering.js.map +1 -0
  9. package/dist/proof-systems/fol-prover-advanced/prover.d.ts +22 -0
  10. package/dist/proof-systems/fol-prover-advanced/prover.d.ts.map +1 -0
  11. package/dist/proof-systems/fol-prover-advanced/prover.js +219 -0
  12. package/dist/proof-systems/fol-prover-advanced/prover.js.map +1 -0
  13. package/dist/proof-systems/fol-prover-advanced/resolve.d.ts +43 -0
  14. package/dist/proof-systems/fol-prover-advanced/resolve.d.ts.map +1 -0
  15. package/dist/proof-systems/fol-prover-advanced/resolve.js +297 -0
  16. package/dist/proof-systems/fol-prover-advanced/resolve.js.map +1 -0
  17. package/dist/proof-systems/fol-prover-advanced/subsumption.d.ts +28 -0
  18. package/dist/proof-systems/fol-prover-advanced/subsumption.d.ts.map +1 -0
  19. package/dist/proof-systems/fol-prover-advanced/subsumption.js +172 -0
  20. package/dist/proof-systems/fol-prover-advanced/subsumption.js.map +1 -0
  21. package/dist/proof-systems/fol-prover-advanced/types.d.ts +68 -0
  22. package/dist/proof-systems/fol-prover-advanced/types.d.ts.map +1 -0
  23. package/dist/proof-systems/fol-prover-advanced/types.js +12 -0
  24. package/dist/proof-systems/fol-prover-advanced/types.js.map +1 -0
  25. package/dist/proof-systems/fol-prover-advanced/unify.d.ts +15 -0
  26. package/dist/proof-systems/fol-prover-advanced/unify.d.ts.map +1 -0
  27. package/dist/proof-systems/fol-prover-advanced/unify.js +144 -0
  28. package/dist/proof-systems/fol-prover-advanced/unify.js.map +1 -0
  29. package/dist/reasoning/combinatorics/basic-counts.d.ts +6 -0
  30. package/dist/reasoning/combinatorics/basic-counts.d.ts.map +1 -0
  31. package/dist/reasoning/combinatorics/basic-counts.js +82 -0
  32. package/dist/reasoning/combinatorics/basic-counts.js.map +1 -0
  33. package/dist/reasoning/combinatorics/bigint-helpers.d.ts +5 -0
  34. package/dist/reasoning/combinatorics/bigint-helpers.d.ts.map +1 -0
  35. package/dist/reasoning/combinatorics/bigint-helpers.js +8 -0
  36. package/dist/reasoning/combinatorics/bigint-helpers.js.map +1 -0
  37. package/dist/reasoning/combinatorics/burnside.d.ts +15 -0
  38. package/dist/reasoning/combinatorics/burnside.d.ts.map +1 -0
  39. package/dist/reasoning/combinatorics/burnside.js +91 -0
  40. package/dist/reasoning/combinatorics/burnside.js.map +1 -0
  41. package/dist/reasoning/combinatorics/generating-functions.d.ts +12 -0
  42. package/dist/reasoning/combinatorics/generating-functions.d.ts.map +1 -0
  43. package/dist/reasoning/combinatorics/generating-functions.js +67 -0
  44. package/dist/reasoning/combinatorics/generating-functions.js.map +1 -0
  45. package/dist/reasoning/combinatorics/generators.d.ts +5 -0
  46. package/dist/reasoning/combinatorics/generators.d.ts.map +1 -0
  47. package/dist/reasoning/combinatorics/generators.js +111 -0
  48. package/dist/reasoning/combinatorics/generators.js.map +1 -0
  49. package/dist/reasoning/combinatorics/inclusion-exclusion.d.ts +8 -0
  50. package/dist/reasoning/combinatorics/inclusion-exclusion.d.ts.map +1 -0
  51. package/dist/reasoning/combinatorics/inclusion-exclusion.js +45 -0
  52. package/dist/reasoning/combinatorics/inclusion-exclusion.js.map +1 -0
  53. package/dist/reasoning/combinatorics/index.d.ts +10 -0
  54. package/dist/reasoning/combinatorics/index.d.ts.map +1 -0
  55. package/dist/reasoning/combinatorics/index.js +44 -0
  56. package/dist/reasoning/combinatorics/index.js.map +1 -0
  57. package/dist/reasoning/combinatorics/partitions.d.ts +4 -0
  58. package/dist/reasoning/combinatorics/partitions.d.ts.map +1 -0
  59. package/dist/reasoning/combinatorics/partitions.js +90 -0
  60. package/dist/reasoning/combinatorics/partitions.js.map +1 -0
  61. package/dist/reasoning/combinatorics/permutations.d.ts +6 -0
  62. package/dist/reasoning/combinatorics/permutations.d.ts.map +1 -0
  63. package/dist/reasoning/combinatorics/permutations.js +124 -0
  64. package/dist/reasoning/combinatorics/permutations.js.map +1 -0
  65. package/dist/reasoning/combinatorics/set-partitions.d.ts +3 -0
  66. package/dist/reasoning/combinatorics/set-partitions.d.ts.map +1 -0
  67. package/dist/reasoning/combinatorics/set-partitions.js +46 -0
  68. package/dist/reasoning/combinatorics/set-partitions.js.map +1 -0
  69. package/dist/reasoning/combinatorics/special-numbers.d.ts +7 -0
  70. package/dist/reasoning/combinatorics/special-numbers.d.ts.map +1 -0
  71. package/dist/reasoning/combinatorics/special-numbers.js +128 -0
  72. package/dist/reasoning/combinatorics/special-numbers.js.map +1 -0
  73. package/dist/reasoning/constructive-analysis/cauchy.d.ts +51 -0
  74. package/dist/reasoning/constructive-analysis/cauchy.d.ts.map +1 -0
  75. package/dist/reasoning/constructive-analysis/cauchy.js +77 -0
  76. package/dist/reasoning/constructive-analysis/cauchy.js.map +1 -0
  77. package/dist/reasoning/constructive-analysis/compact.d.ts +35 -0
  78. package/dist/reasoning/constructive-analysis/compact.d.ts.map +1 -0
  79. package/dist/reasoning/constructive-analysis/compact.js +61 -0
  80. package/dist/reasoning/constructive-analysis/compact.js.map +1 -0
  81. package/dist/reasoning/constructive-analysis/continuity.d.ts +62 -0
  82. package/dist/reasoning/constructive-analysis/continuity.d.ts.map +1 -0
  83. package/dist/reasoning/constructive-analysis/continuity.js +112 -0
  84. package/dist/reasoning/constructive-analysis/continuity.js.map +1 -0
  85. package/dist/reasoning/constructive-analysis/index.d.ts +24 -0
  86. package/dist/reasoning/constructive-analysis/index.d.ts.map +1 -0
  87. package/dist/reasoning/constructive-analysis/index.js +36 -0
  88. package/dist/reasoning/constructive-analysis/index.js.map +1 -0
  89. package/dist/reasoning/constructive-analysis/integral.d.ts +31 -0
  90. package/dist/reasoning/constructive-analysis/integral.d.ts.map +1 -0
  91. package/dist/reasoning/constructive-analysis/integral.js +59 -0
  92. package/dist/reasoning/constructive-analysis/integral.js.map +1 -0
  93. package/dist/reasoning/constructive-analysis/ivt.d.ts +41 -0
  94. package/dist/reasoning/constructive-analysis/ivt.d.ts.map +1 -0
  95. package/dist/reasoning/constructive-analysis/ivt.js +115 -0
  96. package/dist/reasoning/constructive-analysis/ivt.js.map +1 -0
  97. package/dist/reasoning/constructive-reals/index.d.ts +23 -0
  98. package/dist/reasoning/constructive-reals/index.d.ts.map +1 -1
  99. package/dist/reasoning/constructive-reals/index.js +52 -1
  100. package/dist/reasoning/constructive-reals/index.js.map +1 -1
  101. package/dist/reasoning/datalog/index.d.ts +131 -0
  102. package/dist/reasoning/datalog/index.d.ts.map +1 -0
  103. package/dist/reasoning/datalog/index.js +706 -0
  104. package/dist/reasoning/datalog/index.js.map +1 -0
  105. package/dist/reasoning/galois-fields/index.d.ts +29 -0
  106. package/dist/reasoning/galois-fields/index.d.ts.map +1 -0
  107. package/dist/reasoning/galois-fields/index.js +522 -0
  108. package/dist/reasoning/galois-fields/index.js.map +1 -0
  109. package/dist/reasoning/lattice/index.d.ts +165 -0
  110. package/dist/reasoning/lattice/index.d.ts.map +1 -0
  111. package/dist/reasoning/lattice/index.js +587 -0
  112. package/dist/reasoning/lattice/index.js.map +1 -0
  113. package/dist/reasoning/linear-algebra/index.d.ts +69 -0
  114. package/dist/reasoning/linear-algebra/index.d.ts.map +1 -0
  115. package/dist/reasoning/linear-algebra/index.js +859 -0
  116. package/dist/reasoning/linear-algebra/index.js.map +1 -0
  117. package/dist/reasoning/polynomial-ring/index.d.ts +30 -0
  118. package/dist/reasoning/polynomial-ring/index.d.ts.map +1 -0
  119. package/dist/reasoning/polynomial-ring/index.js +797 -0
  120. package/dist/reasoning/polynomial-ring/index.js.map +1 -0
  121. package/dist/reasoning/set-theory/hf-functions.d.ts +35 -0
  122. package/dist/reasoning/set-theory/hf-functions.d.ts.map +1 -0
  123. package/dist/reasoning/set-theory/hf-functions.js +147 -0
  124. package/dist/reasoning/set-theory/hf-functions.js.map +1 -0
  125. package/dist/reasoning/set-theory/hf-sets.d.ts +79 -0
  126. package/dist/reasoning/set-theory/hf-sets.d.ts.map +1 -0
  127. package/dist/reasoning/set-theory/hf-sets.js +338 -0
  128. package/dist/reasoning/set-theory/hf-sets.js.map +1 -0
  129. package/dist/reasoning/set-theory/index.d.ts +7 -0
  130. package/dist/reasoning/set-theory/index.d.ts.map +1 -0
  131. package/dist/reasoning/set-theory/index.js +44 -0
  132. package/dist/reasoning/set-theory/index.js.map +1 -0
  133. package/dist/reasoning/set-theory/zfc-axioms.d.ts +59 -0
  134. package/dist/reasoning/set-theory/zfc-axioms.d.ts.map +1 -0
  135. package/dist/reasoning/set-theory/zfc-axioms.js +245 -0
  136. package/dist/reasoning/set-theory/zfc-axioms.js.map +1 -0
  137. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.d.ts +2 -0
  138. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.d.ts.map +1 -0
  139. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js +253 -0
  140. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js.map +1 -0
  141. package/dist/tests/reasoning/combinatorics/combinatorics.test.d.ts +2 -0
  142. package/dist/tests/reasoning/combinatorics/combinatorics.test.d.ts.map +1 -0
  143. package/dist/tests/reasoning/combinatorics/combinatorics.test.js +256 -0
  144. package/dist/tests/reasoning/combinatorics/combinatorics.test.js.map +1 -0
  145. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.d.ts +2 -0
  146. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.d.ts.map +1 -0
  147. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js +174 -0
  148. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js.map +1 -0
  149. package/dist/tests/reasoning/datalog/datalog.test.d.ts +2 -0
  150. package/dist/tests/reasoning/datalog/datalog.test.d.ts.map +1 -0
  151. package/dist/tests/reasoning/datalog/datalog.test.js +333 -0
  152. package/dist/tests/reasoning/datalog/datalog.test.js.map +1 -0
  153. package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts +2 -0
  154. package/dist/tests/reasoning/galois-fields/galois-fields.test.d.ts.map +1 -0
  155. package/dist/tests/reasoning/galois-fields/galois-fields.test.js +226 -0
  156. package/dist/tests/reasoning/galois-fields/galois-fields.test.js.map +1 -0
  157. package/dist/tests/reasoning/lattice/lattice.test.d.ts +2 -0
  158. package/dist/tests/reasoning/lattice/lattice.test.d.ts.map +1 -0
  159. package/dist/tests/reasoning/lattice/lattice.test.js +238 -0
  160. package/dist/tests/reasoning/lattice/lattice.test.js.map +1 -0
  161. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.d.ts +2 -0
  162. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.d.ts.map +1 -0
  163. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js +369 -0
  164. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js.map +1 -0
  165. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts +2 -0
  166. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.d.ts.map +1 -0
  167. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js +230 -0
  168. package/dist/tests/reasoning/polynomial-ring/polynomial-ring.test.js.map +1 -0
  169. package/dist/tests/reasoning/set-theory/hf-functions.test.d.ts +2 -0
  170. package/dist/tests/reasoning/set-theory/hf-functions.test.d.ts.map +1 -0
  171. package/dist/tests/reasoning/set-theory/hf-functions.test.js +122 -0
  172. package/dist/tests/reasoning/set-theory/hf-functions.test.js.map +1 -0
  173. package/dist/tests/reasoning/set-theory/hf-sets.test.d.ts +2 -0
  174. package/dist/tests/reasoning/set-theory/hf-sets.test.d.ts.map +1 -0
  175. package/dist/tests/reasoning/set-theory/hf-sets.test.js +177 -0
  176. package/dist/tests/reasoning/set-theory/hf-sets.test.js.map +1 -0
  177. package/dist/tests/reasoning/set-theory/zfc-axioms.test.d.ts +2 -0
  178. package/dist/tests/reasoning/set-theory/zfc-axioms.test.d.ts.map +1 -0
  179. package/dist/tests/reasoning/set-theory/zfc-axioms.test.js +56 -0
  180. package/dist/tests/reasoning/set-theory/zfc-axioms.test.js.map +1 -0
  181. package/dist/tests/tooling/doc-gen/doc-gen.test.d.ts +2 -0
  182. package/dist/tests/tooling/doc-gen/doc-gen.test.d.ts.map +1 -0
  183. package/dist/tests/tooling/doc-gen/doc-gen.test.js +350 -0
  184. package/dist/tests/tooling/doc-gen/doc-gen.test.js.map +1 -0
  185. package/dist/tests/tooling/test-harness/test-harness.test.d.ts +2 -0
  186. package/dist/tests/tooling/test-harness/test-harness.test.d.ts.map +1 -0
  187. package/dist/tests/tooling/test-harness/test-harness.test.js +208 -0
  188. package/dist/tests/tooling/test-harness/test-harness.test.js.map +1 -0
  189. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts +2 -0
  190. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.d.ts.map +1 -0
  191. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js +266 -0
  192. package/dist/tests/type-theory/lambda-cube/lambda-cube.test.js.map +1 -0
  193. package/dist/tooling/doc-gen/extract.d.ts +13 -0
  194. package/dist/tooling/doc-gen/extract.d.ts.map +1 -0
  195. package/dist/tooling/doc-gen/extract.js +379 -0
  196. package/dist/tooling/doc-gen/extract.js.map +1 -0
  197. package/dist/tooling/doc-gen/generate.d.ts +9 -0
  198. package/dist/tooling/doc-gen/generate.d.ts.map +1 -0
  199. package/dist/tooling/doc-gen/generate.js +116 -0
  200. package/dist/tooling/doc-gen/generate.js.map +1 -0
  201. package/dist/tooling/doc-gen/index.d.ts +7 -0
  202. package/dist/tooling/doc-gen/index.d.ts.map +1 -0
  203. package/dist/tooling/doc-gen/index.js +39 -0
  204. package/dist/tooling/doc-gen/index.js.map +1 -0
  205. package/dist/tooling/doc-gen/jsdoc.d.ts +31 -0
  206. package/dist/tooling/doc-gen/jsdoc.d.ts.map +1 -0
  207. package/dist/tooling/doc-gen/jsdoc.js +140 -0
  208. package/dist/tooling/doc-gen/jsdoc.js.map +1 -0
  209. package/dist/tooling/doc-gen/render.d.ts +29 -0
  210. package/dist/tooling/doc-gen/render.d.ts.map +1 -0
  211. package/dist/tooling/doc-gen/render.js +206 -0
  212. package/dist/tooling/doc-gen/render.js.map +1 -0
  213. package/dist/tooling/doc-gen/types.d.ts +51 -0
  214. package/dist/tooling/doc-gen/types.d.ts.map +1 -0
  215. package/dist/tooling/doc-gen/types.js +10 -0
  216. package/dist/tooling/doc-gen/types.js.map +1 -0
  217. package/dist/tooling/test-harness/combinators.d.ts +14 -0
  218. package/dist/tooling/test-harness/combinators.d.ts.map +1 -0
  219. package/dist/tooling/test-harness/combinators.js +122 -0
  220. package/dist/tooling/test-harness/combinators.js.map +1 -0
  221. package/dist/tooling/test-harness/coverage.d.ts +3 -0
  222. package/dist/tooling/test-harness/coverage.d.ts.map +1 -0
  223. package/dist/tooling/test-harness/coverage.js +32 -0
  224. package/dist/tooling/test-harness/coverage.js.map +1 -0
  225. package/dist/tooling/test-harness/generators.d.ts +6 -0
  226. package/dist/tooling/test-harness/generators.d.ts.map +1 -0
  227. package/dist/tooling/test-harness/generators.js +66 -0
  228. package/dist/tooling/test-harness/generators.js.map +1 -0
  229. package/dist/tooling/test-harness/index.d.ts +7 -0
  230. package/dist/tooling/test-harness/index.d.ts.map +1 -0
  231. package/dist/tooling/test-harness/index.js +27 -0
  232. package/dist/tooling/test-harness/index.js.map +1 -0
  233. package/dist/tooling/test-harness/mutation.d.ts +4 -0
  234. package/dist/tooling/test-harness/mutation.d.ts.map +1 -0
  235. package/dist/tooling/test-harness/mutation.js +28 -0
  236. package/dist/tooling/test-harness/mutation.js.map +1 -0
  237. package/dist/tooling/test-harness/snapshot.d.ts +5 -0
  238. package/dist/tooling/test-harness/snapshot.d.ts.map +1 -0
  239. package/dist/tooling/test-harness/snapshot.js +86 -0
  240. package/dist/tooling/test-harness/snapshot.js.map +1 -0
  241. package/dist/tooling/test-harness/types.d.ts +32 -0
  242. package/dist/tooling/test-harness/types.d.ts.map +1 -0
  243. package/dist/tooling/test-harness/types.js +3 -0
  244. package/dist/tooling/test-harness/types.js.map +1 -0
  245. package/dist/type-theory/lambda-cube/erase.d.ts +26 -0
  246. package/dist/type-theory/lambda-cube/erase.d.ts.map +1 -0
  247. package/dist/type-theory/lambda-cube/erase.js +68 -0
  248. package/dist/type-theory/lambda-cube/erase.js.map +1 -0
  249. package/dist/type-theory/lambda-cube/examples.d.ts +59 -0
  250. package/dist/type-theory/lambda-cube/examples.d.ts.map +1 -0
  251. package/dist/type-theory/lambda-cube/examples.js +110 -0
  252. package/dist/type-theory/lambda-cube/examples.js.map +1 -0
  253. package/dist/type-theory/lambda-cube/index.d.ts +11 -0
  254. package/dist/type-theory/lambda-cube/index.d.ts.map +1 -0
  255. package/dist/type-theory/lambda-cube/index.js +64 -0
  256. package/dist/type-theory/lambda-cube/index.js.map +1 -0
  257. package/dist/type-theory/lambda-cube/normalize.d.ts +17 -0
  258. package/dist/type-theory/lambda-cube/normalize.d.ts.map +1 -0
  259. package/dist/type-theory/lambda-cube/normalize.js +134 -0
  260. package/dist/type-theory/lambda-cube/normalize.js.map +1 -0
  261. package/dist/type-theory/lambda-cube/rules.d.ts +26 -0
  262. package/dist/type-theory/lambda-cube/rules.d.ts.map +1 -0
  263. package/dist/type-theory/lambda-cube/rules.js +67 -0
  264. package/dist/type-theory/lambda-cube/rules.js.map +1 -0
  265. package/dist/type-theory/lambda-cube/typecheck.d.ts +20 -0
  266. package/dist/type-theory/lambda-cube/typecheck.d.ts.map +1 -0
  267. package/dist/type-theory/lambda-cube/typecheck.js +168 -0
  268. package/dist/type-theory/lambda-cube/typecheck.js.map +1 -0
  269. package/dist/type-theory/lambda-cube/types.d.ts +40 -0
  270. package/dist/type-theory/lambda-cube/types.d.ts.map +1 -0
  271. package/dist/type-theory/lambda-cube/types.js +192 -0
  272. package/dist/type-theory/lambda-cube/types.js.map +1 -0
  273. package/package.json +1 -1
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.unify = unify;
4
+ exports.unifyLiterals = unifyLiterals;
5
+ exports.applySubToTerm = applySubToTerm;
6
+ exports.applySubToLiteral = applySubToLiteral;
7
+ exports.termsEqual = termsEqual;
8
+ exports.literalsEqual = literalsEqual;
9
+ /**
10
+ * Unificación de Robinson con occurs-check. Devuelve la sustitución más
11
+ * general (mgu) o `null` si no unifica.
12
+ *
13
+ * Implementación iterativa sobre una pila de pares (t1,t2) para evitar
14
+ * recursión profunda en cláusulas grandes.
15
+ */
16
+ function unify(t1, t2) {
17
+ const sub = new Map();
18
+ const stack = [[t1, t2]];
19
+ while (stack.length > 0) {
20
+ const pair = stack.pop();
21
+ if (!pair)
22
+ break;
23
+ const a = applySubToTerm(pair[0], sub);
24
+ const b = applySubToTerm(pair[1], sub);
25
+ if (termsEqual(a, b))
26
+ continue;
27
+ if (a.kind === 'variable') {
28
+ if (occurs(a.name, b))
29
+ return null;
30
+ bindVariable(sub, a.name, b);
31
+ continue;
32
+ }
33
+ if (b.kind === 'variable') {
34
+ if (occurs(b.name, a))
35
+ return null;
36
+ bindVariable(sub, b.name, a);
37
+ continue;
38
+ }
39
+ // Ambos son funciones/constantes
40
+ if (a.name !== b.name || a.args.length !== b.args.length)
41
+ return null;
42
+ for (let i = 0; i < a.args.length; i++) {
43
+ const ai = a.args[i];
44
+ const bi = b.args[i];
45
+ if (ai === undefined || bi === undefined)
46
+ return null;
47
+ stack.push([ai, bi]);
48
+ }
49
+ }
50
+ return sub;
51
+ }
52
+ function unifyLiterals(l1, l2) {
53
+ if (l1.predicate !== l2.predicate)
54
+ return null;
55
+ if (l1.args.length !== l2.args.length)
56
+ return null;
57
+ const sub = new Map();
58
+ for (let i = 0; i < l1.args.length; i++) {
59
+ const a = l1.args[i];
60
+ const b = l2.args[i];
61
+ if (a === undefined || b === undefined)
62
+ return null;
63
+ const partial = unify(applySubToTerm(a, sub), applySubToTerm(b, sub));
64
+ if (!partial)
65
+ return null;
66
+ for (const [k, v] of partial)
67
+ sub.set(k, applySubToTerm(v, sub));
68
+ // Re-aplicar sobre los ya existentes
69
+ for (const [k, v] of sub)
70
+ sub.set(k, applySubToTerm(v, partial));
71
+ }
72
+ return sub;
73
+ }
74
+ function applySubToTerm(t, sub) {
75
+ if (t.kind === 'variable') {
76
+ const bound = sub.get(t.name);
77
+ if (!bound)
78
+ return t;
79
+ // walk recursivo si la sustitución no está totalmente normalizada
80
+ return applySubToTerm(bound, sub);
81
+ }
82
+ return {
83
+ kind: 'function',
84
+ name: t.name,
85
+ args: t.args.map((a) => applySubToTerm(a, sub))
86
+ };
87
+ }
88
+ function applySubToLiteral(l, sub) {
89
+ return {
90
+ negated: l.negated,
91
+ predicate: l.predicate,
92
+ args: l.args.map((a) => applySubToTerm(a, sub))
93
+ };
94
+ }
95
+ function termsEqual(a, b) {
96
+ if (a.kind !== b.kind)
97
+ return false;
98
+ if (a.kind === 'variable' && b.kind === 'variable')
99
+ return a.name === b.name;
100
+ if (a.kind === 'function' && b.kind === 'function') {
101
+ if (a.name !== b.name || a.args.length !== b.args.length)
102
+ return false;
103
+ for (let i = 0; i < a.args.length; i++) {
104
+ const ai = a.args[i];
105
+ const bi = b.args[i];
106
+ if (ai === undefined || bi === undefined)
107
+ return false;
108
+ if (!termsEqual(ai, bi))
109
+ return false;
110
+ }
111
+ return true;
112
+ }
113
+ return false;
114
+ }
115
+ function literalsEqual(a, b) {
116
+ if (a.negated !== b.negated)
117
+ return false;
118
+ if (a.predicate !== b.predicate)
119
+ return false;
120
+ if (a.args.length !== b.args.length)
121
+ return false;
122
+ for (let i = 0; i < a.args.length; i++) {
123
+ const ai = a.args[i];
124
+ const bi = b.args[i];
125
+ if (ai === undefined || bi === undefined)
126
+ return false;
127
+ if (!termsEqual(ai, bi))
128
+ return false;
129
+ }
130
+ return true;
131
+ }
132
+ function occurs(varName, term) {
133
+ if (term.kind === 'variable')
134
+ return term.name === varName;
135
+ return term.args.some((a) => occurs(varName, a));
136
+ }
137
+ function bindVariable(sub, name, value) {
138
+ // Normalizar sustituciones previas para que no queden indirectas.
139
+ for (const [k, v] of sub) {
140
+ sub.set(k, applySubToTerm(v, new Map([[name, value]])));
141
+ }
142
+ sub.set(name, value);
143
+ }
144
+ //# sourceMappingURL=unify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unify.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/unify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare function factorial(n: number): bigint;
2
+ export declare function binomial(n: number, k: number): bigint;
3
+ export declare function multinomial(n: number, ks: number[]): bigint;
4
+ export declare function permutations(n: number, r: number): bigint;
5
+ export declare function combinations(n: number, r: number): bigint;
6
+ //# sourceMappingURL=basic-counts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-counts.d.ts","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/basic-counts.ts"],"names":[],"mappings":"AAcA,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3C;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAerD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,CAmB3D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAYzD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.factorial = factorial;
4
+ exports.binomial = binomial;
5
+ exports.multinomial = multinomial;
6
+ exports.permutations = permutations;
7
+ exports.combinations = combinations;
8
+ const bigint_helpers_1 = require("./bigint-helpers");
9
+ const FACT_CACHE = [bigint_helpers_1.ONE];
10
+ function ensureFactorialCache(n) {
11
+ for (let i = FACT_CACHE.length; i <= n; i++) {
12
+ const prev = FACT_CACHE[i - 1];
13
+ if (prev === undefined) {
14
+ throw new Error('factorial cache desincronizado');
15
+ }
16
+ FACT_CACHE[i] = prev * BigInt(i);
17
+ }
18
+ }
19
+ function factorial(n) {
20
+ if (!Number.isInteger(n) || n < 0) {
21
+ throw new RangeError(`factorial requiere entero no negativo, recibido ${n}`);
22
+ }
23
+ ensureFactorialCache(n);
24
+ const v = FACT_CACHE[n];
25
+ if (v === undefined) {
26
+ throw new Error('factorial cache miss inesperado');
27
+ }
28
+ return v;
29
+ }
30
+ function binomial(n, k) {
31
+ if (!Number.isInteger(n) || !Number.isInteger(k)) {
32
+ throw new RangeError('binomial requiere enteros');
33
+ }
34
+ if (k < 0 || k > n || n < 0) {
35
+ return bigint_helpers_1.ZERO;
36
+ }
37
+ const kk = k > n - k ? n - k : k;
38
+ let num = bigint_helpers_1.ONE;
39
+ let den = bigint_helpers_1.ONE;
40
+ for (let i = 1; i <= kk; i++) {
41
+ num *= BigInt(n - kk + i);
42
+ den *= BigInt(i);
43
+ }
44
+ return num / den;
45
+ }
46
+ function multinomial(n, ks) {
47
+ if (!Number.isInteger(n) || n < 0) {
48
+ throw new RangeError('multinomial requiere n entero no negativo');
49
+ }
50
+ let sum = 0;
51
+ for (const k of ks) {
52
+ if (!Number.isInteger(k) || k < 0) {
53
+ throw new RangeError('multinomial: cada k debe ser entero no negativo');
54
+ }
55
+ sum += k;
56
+ }
57
+ if (sum !== n) {
58
+ throw new RangeError(`multinomial: sum(ks)=${sum} debe igualar n=${n}`);
59
+ }
60
+ let result = factorial(n);
61
+ for (const k of ks) {
62
+ result /= factorial(k);
63
+ }
64
+ return result;
65
+ }
66
+ function permutations(n, r) {
67
+ if (!Number.isInteger(n) || !Number.isInteger(r)) {
68
+ throw new RangeError('permutations requiere enteros');
69
+ }
70
+ if (r < 0 || r > n || n < 0) {
71
+ return bigint_helpers_1.ZERO;
72
+ }
73
+ let result = bigint_helpers_1.ONE;
74
+ for (let i = 0; i < r; i++) {
75
+ result *= BigInt(n - i);
76
+ }
77
+ return result;
78
+ }
79
+ function combinations(n, r) {
80
+ return binomial(n, r);
81
+ }
82
+ //# sourceMappingURL=basic-counts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"basic-counts.js","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/basic-counts.ts"],"names":[],"mappings":";;AAcA,8BAUC;AAED,4BAeC;AAED,kCAmBC;AAED,oCAYC;AAED,oCAEC;AAhFD,qDAA6C;AAE7C,MAAM,UAAU,GAAa,CAAC,oBAAG,CAAC,CAAC;AAEnC,SAAS,oBAAoB,CAAC,CAAS;IACrC,KAAK,IAAI,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpD,CAAC;QACD,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;IACnC,CAAC;AACH,CAAC;AAED,SAAgB,SAAS,CAAC,CAAS;IACjC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,mDAAmD,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACxB,MAAM,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,SAAgB,QAAQ,CAAC,CAAS,EAAE,CAAS;IAC3C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,2BAA2B,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,qBAAI,CAAC;IACd,CAAC;IACD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,GAAG,GAAG,oBAAG,CAAC;IACd,IAAI,GAAG,GAAG,oBAAG,CAAC;IACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,GAAG,IAAI,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1B,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,GAAG,GAAG,CAAC;AACnB,CAAC;AAED,SAAgB,WAAW,CAAC,CAAS,EAAE,EAAY;IACjD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,UAAU,CAAC,2CAA2C,CAAC,CAAC;IACpE,CAAC;IACD,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,MAAM,IAAI,UAAU,CAAC,iDAAiD,CAAC,CAAC;QAC1E,CAAC;QACD,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACd,MAAM,IAAI,UAAU,CAAC,wBAAwB,GAAG,mBAAmB,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;IAC1B,KAAK,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;QACnB,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,qBAAI,CAAC;IACd,CAAC;IACD,IAAI,MAAM,GAAG,oBAAG,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,IAAI,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,YAAY,CAAC,CAAS,EAAE,CAAS;IAC/C,OAAO,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACxB,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const ZERO: bigint;
2
+ export declare const ONE: bigint;
3
+ export declare const NEG_ONE: bigint;
4
+ export declare const TWO: bigint;
5
+ //# sourceMappingURL=bigint-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint-helpers.d.ts","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/bigint-helpers.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,IAAI,QAAY,CAAC;AAC9B,eAAO,MAAM,GAAG,QAAY,CAAC;AAC7B,eAAO,MAAM,OAAO,QAAa,CAAC;AAClC,eAAO,MAAM,GAAG,QAAY,CAAC"}
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TWO = exports.NEG_ONE = exports.ONE = exports.ZERO = void 0;
4
+ exports.ZERO = BigInt(0);
5
+ exports.ONE = BigInt(1);
6
+ exports.NEG_ONE = BigInt(-1);
7
+ exports.TWO = BigInt(2);
8
+ //# sourceMappingURL=bigint-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint-helpers.js","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/bigint-helpers.ts"],"names":[],"mappings":";;;AAAa,QAAA,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AACjB,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;AAChB,QAAA,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACrB,QAAA,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Aplica el lema de Burnside para contar órbitas. `items` es el alfabeto;
3
+ * el conjunto X sobre el que actúa el grupo son las cadenas de longitud
4
+ * `length` (collares de `length` perlas con `items.length` colores).
5
+ * `groupActions` son las funciones del grupo G actuando sobre X.
6
+ *
7
+ * |X/G| = (1/|G|) * sum_{g in G} |X^g|
8
+ */
9
+ export declare function burnsideCount<T>(items: T[], length: number, groupActions: Array<(x: T[]) => T[]>): number;
10
+ /**
11
+ * Genera las |group| rotaciones cíclicas de un arreglo de tamaño `length`.
12
+ * Útil para contar collares con simetría cíclica.
13
+ */
14
+ export declare function cyclicRotations(length: number): Array<(x: unknown[]) => unknown[]>;
15
+ //# sourceMappingURL=burnside.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"burnside.d.ts","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/burnside.ts"],"names":[],"mappings":"AA0BA;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EAAE,EACV,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,GACnC,MAAM,CAwBR;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,EAAE,CAAC,CAoBlF"}
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.burnsideCount = burnsideCount;
4
+ exports.cyclicRotations = cyclicRotations;
5
+ function arrayEquals(a, b) {
6
+ if (a.length !== b.length)
7
+ return false;
8
+ for (let i = 0; i < a.length; i++) {
9
+ if (a[i] !== b[i])
10
+ return false;
11
+ }
12
+ return true;
13
+ }
14
+ function cartesianProduct(items, length) {
15
+ if (length === 0)
16
+ return [[]];
17
+ const out = [];
18
+ function recurse(current) {
19
+ if (current.length === length) {
20
+ out.push(current.slice());
21
+ return;
22
+ }
23
+ for (const it of items) {
24
+ current.push(it);
25
+ recurse(current);
26
+ current.pop();
27
+ }
28
+ }
29
+ recurse([]);
30
+ return out;
31
+ }
32
+ /**
33
+ * Aplica el lema de Burnside para contar órbitas. `items` es el alfabeto;
34
+ * el conjunto X sobre el que actúa el grupo son las cadenas de longitud
35
+ * `length` (collares de `length` perlas con `items.length` colores).
36
+ * `groupActions` son las funciones del grupo G actuando sobre X.
37
+ *
38
+ * |X/G| = (1/|G|) * sum_{g in G} |X^g|
39
+ */
40
+ function burnsideCount(items, length, groupActions) {
41
+ if (!Number.isInteger(length) || length < 0) {
42
+ throw new RangeError('burnsideCount: length debe ser entero no negativo');
43
+ }
44
+ if (groupActions.length === 0) {
45
+ throw new RangeError('burnsideCount: groupActions vacío');
46
+ }
47
+ const X = cartesianProduct(items, length);
48
+ let totalFixed = 0;
49
+ for (const g of groupActions) {
50
+ let fixed = 0;
51
+ for (const x of X) {
52
+ const gx = g(x);
53
+ if (gx.length !== x.length) {
54
+ throw new Error('burnsideCount: acción cambió la longitud');
55
+ }
56
+ if (arrayEquals(x, gx))
57
+ fixed++;
58
+ }
59
+ totalFixed += fixed;
60
+ }
61
+ if (totalFixed % groupActions.length !== 0) {
62
+ throw new Error('burnsideCount: total no es múltiplo de |G|, ¿G no es grupo?');
63
+ }
64
+ return totalFixed / groupActions.length;
65
+ }
66
+ /**
67
+ * Genera las |group| rotaciones cíclicas de un arreglo de tamaño `length`.
68
+ * Útil para contar collares con simetría cíclica.
69
+ */
70
+ function cyclicRotations(length) {
71
+ if (!Number.isInteger(length) || length < 0) {
72
+ throw new RangeError('cyclicRotations: length entero no negativo');
73
+ }
74
+ const rots = [];
75
+ for (let k = 0; k < Math.max(1, length); k++) {
76
+ rots.push((x) => {
77
+ const n = x.length;
78
+ const out = new Array(n);
79
+ for (let i = 0; i < n; i++) {
80
+ const src = x[(i + k) % n];
81
+ if (src === undefined && !((i + k) % n in x)) {
82
+ throw new Error('cyclicRotations: índice inválido');
83
+ }
84
+ out[i] = src;
85
+ }
86
+ return out;
87
+ });
88
+ }
89
+ return rots;
90
+ }
91
+ //# sourceMappingURL=burnside.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"burnside.js","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/burnside.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export declare function multiplyPolynomials(a: number[], b: number[]): number[];
2
+ /**
3
+ * Evalúa los primeros `n+1` coeficientes (grado 0..n) de la serie de potencias
4
+ * formal cuyos coeficientes están dados explícitamente por `coefficients`.
5
+ * Si `coefficients` tiene menos términos, los completa con 0.
6
+ */
7
+ export declare function generatingFunction(coefficients: number[], n: number): number[];
8
+ /**
9
+ * Devuelve los coeficientes de (1+x)^n (binomiales). Útil como GF estándar.
10
+ */
11
+ export declare function binomialGF(n: number): number[];
12
+ //# sourceMappingURL=generating-functions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generating-functions.d.ts","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/generating-functions.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAgBtE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAU9E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAkB9C"}
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.multiplyPolynomials = multiplyPolynomials;
4
+ exports.generatingFunction = generatingFunction;
5
+ exports.binomialGF = binomialGF;
6
+ function multiplyPolynomials(a, b) {
7
+ if (a.length === 0 || b.length === 0)
8
+ return [];
9
+ const out = new Array(a.length + b.length - 1).fill(0);
10
+ for (let i = 0; i < a.length; i++) {
11
+ const ai = a[i];
12
+ if (ai === undefined)
13
+ throw new Error('multiplyPolynomials: coef indefinido en a');
14
+ if (ai === 0)
15
+ continue;
16
+ for (let j = 0; j < b.length; j++) {
17
+ const bj = b[j];
18
+ if (bj === undefined)
19
+ throw new Error('multiplyPolynomials: coef indefinido en b');
20
+ const cur = out[i + j];
21
+ if (cur === undefined)
22
+ throw new Error('multiplyPolynomials: out indefinido');
23
+ out[i + j] = cur + ai * bj;
24
+ }
25
+ }
26
+ return out;
27
+ }
28
+ /**
29
+ * Evalúa los primeros `n+1` coeficientes (grado 0..n) de la serie de potencias
30
+ * formal cuyos coeficientes están dados explícitamente por `coefficients`.
31
+ * Si `coefficients` tiene menos términos, los completa con 0.
32
+ */
33
+ function generatingFunction(coefficients, n) {
34
+ if (!Number.isInteger(n) || n < 0) {
35
+ throw new RangeError('generatingFunction: n debe ser entero no negativo');
36
+ }
37
+ const out = [];
38
+ for (let i = 0; i <= n; i++) {
39
+ const c = coefficients[i];
40
+ out.push(c === undefined ? 0 : c);
41
+ }
42
+ return out;
43
+ }
44
+ /**
45
+ * Devuelve los coeficientes de (1+x)^n (binomiales). Útil como GF estándar.
46
+ */
47
+ function binomialGF(n) {
48
+ if (!Number.isInteger(n) || n < 0) {
49
+ throw new RangeError('binomialGF: n entero no negativo');
50
+ }
51
+ const row = [1];
52
+ for (let i = 1; i <= n; i++) {
53
+ const next = [1];
54
+ for (let j = 1; j < i; j++) {
55
+ const a = row[j - 1];
56
+ const b = row[j];
57
+ if (a === undefined || b === undefined)
58
+ throw new Error('binomialGF: índice');
59
+ next.push(a + b);
60
+ }
61
+ next.push(1);
62
+ row.length = 0;
63
+ row.push(...next);
64
+ }
65
+ return row;
66
+ }
67
+ //# sourceMappingURL=generating-functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generating-functions.js","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/generating-functions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export declare function generatePermutations<T>(items: T[]): Generator<T[]>;
2
+ export declare function generateCombinations<T>(items: T[], r: number): Generator<T[]>;
3
+ export declare function generatePowerSet<T>(items: T[]): Generator<T[]>;
4
+ export declare function generateSubsetsOfSize<T>(items: T[], k: number): Generator<T[]>;
5
+ //# sourceMappingURL=generators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/generators.ts"],"names":[],"mappings":"AAAA,wBAAiB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAoCnE;AAED,wBAAiB,oBAAoB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CA2C9E;AAED,wBAAiB,gBAAgB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAgB/D;AAED,wBAAiB,qBAAqB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,EAAE,CAAC,CAE/E"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generatePermutations = generatePermutations;
4
+ exports.generateCombinations = generateCombinations;
5
+ exports.generatePowerSet = generatePowerSet;
6
+ exports.generateSubsetsOfSize = generateSubsetsOfSize;
7
+ function* generatePermutations(items) {
8
+ const n = items.length;
9
+ if (n === 0) {
10
+ yield [];
11
+ return;
12
+ }
13
+ const arr = items.slice();
14
+ function swap(i, j) {
15
+ const a = arr[i];
16
+ const b = arr[j];
17
+ if (a === undefined || b === undefined) {
18
+ if (!(i in arr) || !(j in arr)) {
19
+ throw new Error('generatePermutations: índice fuera de rango');
20
+ }
21
+ }
22
+ arr[i] = b;
23
+ arr[j] = a;
24
+ }
25
+ function* heap(k) {
26
+ if (k === 1) {
27
+ yield arr.slice();
28
+ return;
29
+ }
30
+ for (let i = 0; i < k; i++) {
31
+ yield* heap(k - 1);
32
+ if (k % 2 === 0) {
33
+ swap(i, k - 1);
34
+ }
35
+ else {
36
+ swap(0, k - 1);
37
+ }
38
+ }
39
+ }
40
+ yield* heap(n);
41
+ }
42
+ function* generateCombinations(items, r) {
43
+ if (!Number.isInteger(r) || r < 0) {
44
+ throw new RangeError('generateCombinations: r debe ser entero no negativo');
45
+ }
46
+ const n = items.length;
47
+ if (r > n)
48
+ return;
49
+ if (r === 0) {
50
+ yield [];
51
+ return;
52
+ }
53
+ const indices = [];
54
+ for (let i = 0; i < r; i++)
55
+ indices.push(i);
56
+ while (true) {
57
+ const out = [];
58
+ for (const idx of indices) {
59
+ const v = items[idx];
60
+ if (v === undefined && !(idx in items)) {
61
+ throw new Error('generateCombinations: índice fuera de rango');
62
+ }
63
+ out.push(v);
64
+ }
65
+ yield out;
66
+ let i = r - 1;
67
+ while (i >= 0) {
68
+ const cur = indices[i];
69
+ if (cur === undefined) {
70
+ throw new Error('generateCombinations: índice undefined');
71
+ }
72
+ if (cur !== i + n - r)
73
+ break;
74
+ i--;
75
+ }
76
+ if (i < 0)
77
+ return;
78
+ const cur = indices[i];
79
+ if (cur === undefined)
80
+ return;
81
+ indices[i] = cur + 1;
82
+ for (let j = i + 1; j < r; j++) {
83
+ const prev = indices[j - 1];
84
+ if (prev === undefined) {
85
+ throw new Error('generateCombinations: prev undefined');
86
+ }
87
+ indices[j] = prev + 1;
88
+ }
89
+ }
90
+ }
91
+ function* generatePowerSet(items) {
92
+ const n = items.length;
93
+ const total = 1 << n;
94
+ for (let mask = 0; mask < total; mask++) {
95
+ const subset = [];
96
+ for (let i = 0; i < n; i++) {
97
+ if ((mask >> i) & 1) {
98
+ const v = items[i];
99
+ if (v === undefined && !(i in items)) {
100
+ throw new Error('generatePowerSet: índice fuera de rango');
101
+ }
102
+ subset.push(v);
103
+ }
104
+ }
105
+ yield subset;
106
+ }
107
+ }
108
+ function* generateSubsetsOfSize(items, k) {
109
+ yield* generateCombinations(items, k);
110
+ }
111
+ //# sourceMappingURL=generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/generators.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Calcula |A_1 ∪ A_2 ∪ ... ∪ A_n| usando el principio de inclusión-exclusión
3
+ * a fuerza bruta sobre el reticulado de subconjuntos no vacíos de índices.
4
+ *
5
+ * |⋃ A_i| = Σ_{S≠∅} (-1)^(|S|+1) |⋂_{i∈S} A_i|
6
+ */
7
+ export declare function inclusionExclusion(sets: Array<Set<number>>): number;
8
+ //# sourceMappingURL=inclusion-exclusion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inclusion-exclusion.d.ts","sourceRoot":"","sources":["../../../src/reasoning/combinatorics/inclusion-exclusion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CA6BnE"}