@stevenvo780/st-lang 4.11.0 → 4.12.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 (209) 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/linear-algebra/index.d.ts +69 -0
  102. package/dist/reasoning/linear-algebra/index.d.ts.map +1 -0
  103. package/dist/reasoning/linear-algebra/index.js +859 -0
  104. package/dist/reasoning/linear-algebra/index.js.map +1 -0
  105. package/dist/reasoning/set-theory/hf-functions.d.ts +35 -0
  106. package/dist/reasoning/set-theory/hf-functions.d.ts.map +1 -0
  107. package/dist/reasoning/set-theory/hf-functions.js +147 -0
  108. package/dist/reasoning/set-theory/hf-functions.js.map +1 -0
  109. package/dist/reasoning/set-theory/hf-sets.d.ts +79 -0
  110. package/dist/reasoning/set-theory/hf-sets.d.ts.map +1 -0
  111. package/dist/reasoning/set-theory/hf-sets.js +338 -0
  112. package/dist/reasoning/set-theory/hf-sets.js.map +1 -0
  113. package/dist/reasoning/set-theory/index.d.ts +7 -0
  114. package/dist/reasoning/set-theory/index.d.ts.map +1 -0
  115. package/dist/reasoning/set-theory/index.js +44 -0
  116. package/dist/reasoning/set-theory/index.js.map +1 -0
  117. package/dist/reasoning/set-theory/zfc-axioms.d.ts +59 -0
  118. package/dist/reasoning/set-theory/zfc-axioms.d.ts.map +1 -0
  119. package/dist/reasoning/set-theory/zfc-axioms.js +245 -0
  120. package/dist/reasoning/set-theory/zfc-axioms.js.map +1 -0
  121. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.d.ts +2 -0
  122. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.d.ts.map +1 -0
  123. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js +253 -0
  124. package/dist/tests/proof-systems/fol-prover-advanced/prover.test.js.map +1 -0
  125. package/dist/tests/reasoning/combinatorics/combinatorics.test.d.ts +2 -0
  126. package/dist/tests/reasoning/combinatorics/combinatorics.test.d.ts.map +1 -0
  127. package/dist/tests/reasoning/combinatorics/combinatorics.test.js +256 -0
  128. package/dist/tests/reasoning/combinatorics/combinatorics.test.js.map +1 -0
  129. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.d.ts +2 -0
  130. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.d.ts.map +1 -0
  131. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js +174 -0
  132. package/dist/tests/reasoning/constructive-analysis/constructive-analysis.test.js.map +1 -0
  133. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.d.ts +2 -0
  134. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.d.ts.map +1 -0
  135. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js +369 -0
  136. package/dist/tests/reasoning/linear-algebra/linear-algebra.test.js.map +1 -0
  137. package/dist/tests/reasoning/set-theory/hf-functions.test.d.ts +2 -0
  138. package/dist/tests/reasoning/set-theory/hf-functions.test.d.ts.map +1 -0
  139. package/dist/tests/reasoning/set-theory/hf-functions.test.js +122 -0
  140. package/dist/tests/reasoning/set-theory/hf-functions.test.js.map +1 -0
  141. package/dist/tests/reasoning/set-theory/hf-sets.test.d.ts +2 -0
  142. package/dist/tests/reasoning/set-theory/hf-sets.test.d.ts.map +1 -0
  143. package/dist/tests/reasoning/set-theory/hf-sets.test.js +177 -0
  144. package/dist/tests/reasoning/set-theory/hf-sets.test.js.map +1 -0
  145. package/dist/tests/reasoning/set-theory/zfc-axioms.test.d.ts +2 -0
  146. package/dist/tests/reasoning/set-theory/zfc-axioms.test.d.ts.map +1 -0
  147. package/dist/tests/reasoning/set-theory/zfc-axioms.test.js +56 -0
  148. package/dist/tests/reasoning/set-theory/zfc-axioms.test.js.map +1 -0
  149. package/dist/tests/tooling/doc-gen/doc-gen.test.d.ts +2 -0
  150. package/dist/tests/tooling/doc-gen/doc-gen.test.d.ts.map +1 -0
  151. package/dist/tests/tooling/doc-gen/doc-gen.test.js +350 -0
  152. package/dist/tests/tooling/doc-gen/doc-gen.test.js.map +1 -0
  153. package/dist/tests/tooling/test-harness/test-harness.test.d.ts +2 -0
  154. package/dist/tests/tooling/test-harness/test-harness.test.d.ts.map +1 -0
  155. package/dist/tests/tooling/test-harness/test-harness.test.js +208 -0
  156. package/dist/tests/tooling/test-harness/test-harness.test.js.map +1 -0
  157. package/dist/tooling/doc-gen/extract.d.ts +13 -0
  158. package/dist/tooling/doc-gen/extract.d.ts.map +1 -0
  159. package/dist/tooling/doc-gen/extract.js +379 -0
  160. package/dist/tooling/doc-gen/extract.js.map +1 -0
  161. package/dist/tooling/doc-gen/generate.d.ts +9 -0
  162. package/dist/tooling/doc-gen/generate.d.ts.map +1 -0
  163. package/dist/tooling/doc-gen/generate.js +116 -0
  164. package/dist/tooling/doc-gen/generate.js.map +1 -0
  165. package/dist/tooling/doc-gen/index.d.ts +7 -0
  166. package/dist/tooling/doc-gen/index.d.ts.map +1 -0
  167. package/dist/tooling/doc-gen/index.js +39 -0
  168. package/dist/tooling/doc-gen/index.js.map +1 -0
  169. package/dist/tooling/doc-gen/jsdoc.d.ts +31 -0
  170. package/dist/tooling/doc-gen/jsdoc.d.ts.map +1 -0
  171. package/dist/tooling/doc-gen/jsdoc.js +140 -0
  172. package/dist/tooling/doc-gen/jsdoc.js.map +1 -0
  173. package/dist/tooling/doc-gen/render.d.ts +29 -0
  174. package/dist/tooling/doc-gen/render.d.ts.map +1 -0
  175. package/dist/tooling/doc-gen/render.js +206 -0
  176. package/dist/tooling/doc-gen/render.js.map +1 -0
  177. package/dist/tooling/doc-gen/types.d.ts +51 -0
  178. package/dist/tooling/doc-gen/types.d.ts.map +1 -0
  179. package/dist/tooling/doc-gen/types.js +10 -0
  180. package/dist/tooling/doc-gen/types.js.map +1 -0
  181. package/dist/tooling/test-harness/combinators.d.ts +14 -0
  182. package/dist/tooling/test-harness/combinators.d.ts.map +1 -0
  183. package/dist/tooling/test-harness/combinators.js +122 -0
  184. package/dist/tooling/test-harness/combinators.js.map +1 -0
  185. package/dist/tooling/test-harness/coverage.d.ts +3 -0
  186. package/dist/tooling/test-harness/coverage.d.ts.map +1 -0
  187. package/dist/tooling/test-harness/coverage.js +32 -0
  188. package/dist/tooling/test-harness/coverage.js.map +1 -0
  189. package/dist/tooling/test-harness/generators.d.ts +6 -0
  190. package/dist/tooling/test-harness/generators.d.ts.map +1 -0
  191. package/dist/tooling/test-harness/generators.js +66 -0
  192. package/dist/tooling/test-harness/generators.js.map +1 -0
  193. package/dist/tooling/test-harness/index.d.ts +7 -0
  194. package/dist/tooling/test-harness/index.d.ts.map +1 -0
  195. package/dist/tooling/test-harness/index.js +27 -0
  196. package/dist/tooling/test-harness/index.js.map +1 -0
  197. package/dist/tooling/test-harness/mutation.d.ts +4 -0
  198. package/dist/tooling/test-harness/mutation.d.ts.map +1 -0
  199. package/dist/tooling/test-harness/mutation.js +28 -0
  200. package/dist/tooling/test-harness/mutation.js.map +1 -0
  201. package/dist/tooling/test-harness/snapshot.d.ts +5 -0
  202. package/dist/tooling/test-harness/snapshot.d.ts.map +1 -0
  203. package/dist/tooling/test-harness/snapshot.js +86 -0
  204. package/dist/tooling/test-harness/snapshot.js.map +1 -0
  205. package/dist/tooling/test-harness/types.d.ts +32 -0
  206. package/dist/tooling/test-harness/types.d.ts.map +1 -0
  207. package/dist/tooling/test-harness/types.js +3 -0
  208. package/dist/tooling/test-harness/types.js.map +1 -0
  209. package/package.json +1 -1
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resetRenameCounter = resetRenameCounter;
4
+ exports.renameClause = renameClause;
5
+ exports.binaryResolve = binaryResolve;
6
+ exports.hyperresolve = hyperresolve;
7
+ exports.hyperresolveMany = hyperresolveMany;
8
+ exports.factor = factor;
9
+ exports.dedupLiterals = dedupLiterals;
10
+ exports.isTautology = isTautology;
11
+ const unify_1 = require("./unify");
12
+ let renameCounter = 0;
13
+ function resetRenameCounter() {
14
+ renameCounter = 0;
15
+ }
16
+ /**
17
+ * Renombra todas las variables de una cláusula con sufijos frescos, para
18
+ * evitar captura accidental al resolver con otra cláusula.
19
+ */
20
+ function renameClause(c) {
21
+ renameCounter += 1;
22
+ const suffix = `_r${renameCounter}`;
23
+ const cache = new Map();
24
+ return {
25
+ literals: c.literals.map((l) => ({
26
+ negated: l.negated,
27
+ predicate: l.predicate,
28
+ args: l.args.map((a) => renameTerm(a, suffix, cache))
29
+ })),
30
+ parents: c.parents,
31
+ fromGoal: c.fromGoal
32
+ };
33
+ }
34
+ function renameTerm(t, suffix, cache) {
35
+ if (t.kind === 'variable') {
36
+ const existing = cache.get(t.name);
37
+ if (existing)
38
+ return existing;
39
+ const fresh = { kind: 'variable', name: `${t.name}${suffix}` };
40
+ cache.set(t.name, fresh);
41
+ return fresh;
42
+ }
43
+ return {
44
+ kind: 'function',
45
+ name: t.name,
46
+ args: t.args.map((a) => renameTerm(a, suffix, cache))
47
+ };
48
+ }
49
+ /**
50
+ * Resolución binaria: une dos cláusulas eliminando un par de literales
51
+ * complementarias unificables. Devuelve cero o más resolventes (uno por par
52
+ * de literales complementarias que unifiquen).
53
+ */
54
+ function binaryResolve(a, b) {
55
+ const out = [];
56
+ const aR = renameClause(a);
57
+ const bR = renameClause(b);
58
+ for (let i = 0; i < aR.literals.length; i++) {
59
+ for (let j = 0; j < bR.literals.length; j++) {
60
+ const la = aR.literals[i];
61
+ const lb = bR.literals[j];
62
+ if (!la || !lb)
63
+ continue;
64
+ if (la.negated === lb.negated)
65
+ continue;
66
+ const sub = (0, unify_1.unifyLiterals)({ ...la, negated: false }, { ...lb, negated: false });
67
+ if (!sub)
68
+ continue;
69
+ const remaining = [];
70
+ for (let k = 0; k < aR.literals.length; k++) {
71
+ if (k === i)
72
+ continue;
73
+ const lit = aR.literals[k];
74
+ if (lit)
75
+ remaining.push((0, unify_1.applySubToLiteral)(lit, sub));
76
+ }
77
+ for (let k = 0; k < bR.literals.length; k++) {
78
+ if (k === j)
79
+ continue;
80
+ const lit = bR.literals[k];
81
+ if (lit)
82
+ remaining.push((0, unify_1.applySubToLiteral)(lit, sub));
83
+ }
84
+ out.push({ clause: dedupLiterals({ literals: remaining }), sub });
85
+ }
86
+ }
87
+ return out;
88
+ }
89
+ /**
90
+ * Hyperresolución: en un solo paso, elimina **todas** las literales negativas
91
+ * de un "núcleo" (nucleus) usando cláusulas auxiliares positivas (electrons)
92
+ * que sean unitarias o tengan sólo literales positivas. El resultado es una
93
+ * cláusula con sólo literales positivas (positive hyperresolvent).
94
+ *
95
+ * `positive` aquí es una lista; en la práctica el caller pasa cláusulas
96
+ * positivas candidatas y la función produce todos los hyperresolventes
97
+ * posibles del núcleo contra ese conjunto. Para mantener la API del spec,
98
+ * exportamos `hyperresolve(positive, nucleus)` con la primera cláusula como
99
+ * electron (cubre el caso "3 units + nucleus" si se llama en cadena).
100
+ */
101
+ function hyperresolve(positive, nucleus) {
102
+ return hyperresolveMany([positive], nucleus).map((r) => r.clause);
103
+ }
104
+ function hyperresolveMany(positives, nucleus) {
105
+ // Núcleo debe tener al menos una literal negativa para ser candidato.
106
+ const negativeIdxs = nucleus.literals
107
+ .map((l, i) => ({ l, i }))
108
+ .filter(({ l }) => l && l.negated)
109
+ .map(({ i }) => i);
110
+ if (negativeIdxs.length === 0)
111
+ return [];
112
+ // Electrons válidos: cláusulas con sólo literales positivas (≥1 literal).
113
+ const electrons = positives.filter((c) => c.literals.length > 0 && c.literals.every((l) => !l.negated));
114
+ if (electrons.length === 0)
115
+ return [];
116
+ const nucleusR = renameClause(nucleus);
117
+ // Re-mapear índices originales tras el renombre (mismo orden).
118
+ const negIdxsRenamed = nucleusR.literals
119
+ .map((l, i) => ({ l, i }))
120
+ .filter(({ l }) => l && l.negated)
121
+ .map(({ i }) => i);
122
+ const start = {
123
+ nucleus: nucleusR,
124
+ remaining: negIdxsRenamed,
125
+ sub: new Map(),
126
+ used: []
127
+ };
128
+ const results = [];
129
+ const stack = [start];
130
+ while (stack.length > 0) {
131
+ const state = stack.pop();
132
+ if (!state)
133
+ break;
134
+ if (state.remaining.length === 0) {
135
+ // Todas las literales negativas eliminadas → emitir el residual.
136
+ const survivors = [];
137
+ const removedSet = new Set(negIdxsRenamed);
138
+ for (let i = 0; i < state.nucleus.literals.length; i++) {
139
+ if (removedSet.has(i))
140
+ continue;
141
+ const lit = state.nucleus.literals[i];
142
+ if (lit)
143
+ survivors.push((0, unify_1.applySubToLiteral)(lit, state.sub));
144
+ }
145
+ results.push({
146
+ clause: dedupLiterals({ literals: survivors }),
147
+ sub: state.sub,
148
+ usedElectrons: state.used
149
+ });
150
+ continue;
151
+ }
152
+ const targetIdx = state.remaining[0];
153
+ if (targetIdx === undefined)
154
+ continue;
155
+ const target = state.nucleus.literals[targetIdx];
156
+ if (!target)
157
+ continue;
158
+ const targetApplied = (0, unify_1.applySubToLiteral)(target, state.sub);
159
+ for (let ei = 0; ei < electrons.length; ei++) {
160
+ const electron = electrons[ei];
161
+ if (!electron)
162
+ continue;
163
+ const eR = renameClause(electron);
164
+ for (let li = 0; li < eR.literals.length; li++) {
165
+ const candidate = eR.literals[li];
166
+ if (!candidate)
167
+ continue;
168
+ const partial = (0, unify_1.unifyLiterals)({ ...targetApplied, negated: false }, { ...candidate, negated: false });
169
+ if (!partial)
170
+ continue;
171
+ // Componer sustituciones
172
+ const combined = new Map();
173
+ for (const [k, v] of state.sub)
174
+ combined.set(k, (0, unify_1.applySubToTerm)(v, partial));
175
+ for (const [k, v] of partial) {
176
+ if (!combined.has(k))
177
+ combined.set(k, v);
178
+ }
179
+ // Si el electron tiene más literales (no unitario), se añaden al residual.
180
+ const extra = [];
181
+ for (let k = 0; k < eR.literals.length; k++) {
182
+ if (k === li)
183
+ continue;
184
+ const ex = eR.literals[k];
185
+ if (ex)
186
+ extra.push(ex);
187
+ }
188
+ // Extender la cláusula del núcleo con las extras (vía agregar al final
189
+ // como literales aplicadas, manteniendo índices remaining intactos).
190
+ const extendedNucleus = {
191
+ literals: [...state.nucleus.literals, ...extra],
192
+ parents: state.nucleus.parents,
193
+ fromGoal: state.nucleus.fromGoal
194
+ };
195
+ stack.push({
196
+ nucleus: extendedNucleus,
197
+ remaining: state.remaining.slice(1),
198
+ sub: combined,
199
+ used: [...state.used, ei]
200
+ });
201
+ }
202
+ }
203
+ }
204
+ return results;
205
+ }
206
+ /**
207
+ * Factoring: si dos literales del mismo signo unifican, colapsarlas reduce la
208
+ * cláusula. Indispensable para completar la resolución.
209
+ */
210
+ function factor(c) {
211
+ const out = [];
212
+ for (let i = 0; i < c.literals.length; i++) {
213
+ for (let j = i + 1; j < c.literals.length; j++) {
214
+ const li = c.literals[i];
215
+ const lj = c.literals[j];
216
+ if (!li || !lj)
217
+ continue;
218
+ if (li.negated !== lj.negated)
219
+ continue;
220
+ const sub = (0, unify_1.unifyLiterals)({ ...li, negated: false }, { ...lj, negated: false });
221
+ if (!sub)
222
+ continue;
223
+ const survivors = [];
224
+ for (let k = 0; k < c.literals.length; k++) {
225
+ if (k === j)
226
+ continue;
227
+ const lit = c.literals[k];
228
+ if (lit)
229
+ survivors.push((0, unify_1.applySubToLiteral)(lit, sub));
230
+ }
231
+ out.push(dedupLiterals({ literals: survivors }));
232
+ }
233
+ }
234
+ return out;
235
+ }
236
+ function dedupLiterals(c) {
237
+ const seen = [];
238
+ for (const l of c.literals) {
239
+ if (!seen.some((s) => (0, unify_1.literalsEqual)(s, l)))
240
+ seen.push(l);
241
+ }
242
+ return { literals: seen, parents: c.parents, fromGoal: c.fromGoal };
243
+ }
244
+ /** Detecta cláusulas tautológicas (P ∨ ¬P). */
245
+ function isTautology(c) {
246
+ for (let i = 0; i < c.literals.length; i++) {
247
+ for (let j = i + 1; j < c.literals.length; j++) {
248
+ const li = c.literals[i];
249
+ const lj = c.literals[j];
250
+ if (!li || !lj)
251
+ continue;
252
+ if (li.negated === lj.negated)
253
+ continue;
254
+ if (li.predicate !== lj.predicate)
255
+ continue;
256
+ if (li.args.length !== lj.args.length)
257
+ continue;
258
+ let same = true;
259
+ for (let k = 0; k < li.args.length; k++) {
260
+ const a = li.args[k];
261
+ const b = lj.args[k];
262
+ if (!a || !b) {
263
+ same = false;
264
+ break;
265
+ }
266
+ if (!termsEqualLocal(a, b)) {
267
+ same = false;
268
+ break;
269
+ }
270
+ }
271
+ if (same)
272
+ return true;
273
+ }
274
+ }
275
+ return false;
276
+ }
277
+ function termsEqualLocal(a, b) {
278
+ if (a.kind !== b.kind)
279
+ return false;
280
+ if (a.kind === 'variable' && b.kind === 'variable')
281
+ return a.name === b.name;
282
+ if (a.kind === 'function' && b.kind === 'function') {
283
+ if (a.name !== b.name || a.args.length !== b.args.length)
284
+ return false;
285
+ for (let i = 0; i < a.args.length; i++) {
286
+ const ai = a.args[i];
287
+ const bi = b.args[i];
288
+ if (ai === undefined || bi === undefined)
289
+ return false;
290
+ if (!termsEqualLocal(ai, bi))
291
+ return false;
292
+ }
293
+ return true;
294
+ }
295
+ return false;
296
+ }
297
+ //# sourceMappingURL=resolve.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/resolve.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { FOLClause } from './types';
2
+ /**
3
+ * Subsumption clásico: c1 subsume c2 si existe una sustitución σ tal que
4
+ * cada literal de c1·σ aparece en c2.
5
+ *
6
+ * Estrategia: backtracking sobre el matching de cada literal de c1 contra c2.
7
+ * Costoso en el caso general, pero acotado: cláusulas en pruebas reales
8
+ * tienen pocas literales.
9
+ */
10
+ export declare function subsumes(c1: FOLClause, c2: FOLClause): boolean;
11
+ /**
12
+ * Filtra cláusulas dejando sólo las no-subsumidas por otras del mismo set.
13
+ * Conserva orden de la primera aparición.
14
+ */
15
+ export declare function removeSubsumed(clauses: FOLClause[]): FOLClause[];
16
+ /**
17
+ * Igualdad sintáctica módulo orden de literales y renombre de variables
18
+ * (alpha-equivalencia simple). Suficiente para detectar duplicados producidos
19
+ * por resolución sobre instancias renombradas.
20
+ */
21
+ export declare function clausesAlphaEqual(a: FOLClause, b: FOLClause): boolean;
22
+ /**
23
+ * Reordena cláusulas para que las unitarias (1 literal) vayan primero.
24
+ * Patrón "unit preference" — reduce drásticamente el espacio de búsqueda en
25
+ * problemas tipo modus-ponens encadenado.
26
+ */
27
+ export declare function unitPreference(clauses: FOLClause[]): FOLClause[];
28
+ //# sourceMappingURL=subsumption.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsumption.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/subsumption.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAqC,MAAM,SAAS,CAAC;AAG5E;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAI9D;AA2ED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAsBhE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,OAAO,CAerE;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAEhE"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.subsumes = subsumes;
4
+ exports.removeSubsumed = removeSubsumed;
5
+ exports.clausesAlphaEqual = clausesAlphaEqual;
6
+ exports.unitPreference = unitPreference;
7
+ const unify_1 = require("./unify");
8
+ /**
9
+ * Subsumption clásico: c1 subsume c2 si existe una sustitución σ tal que
10
+ * cada literal de c1·σ aparece en c2.
11
+ *
12
+ * Estrategia: backtracking sobre el matching de cada literal de c1 contra c2.
13
+ * Costoso en el caso general, pero acotado: cláusulas en pruebas reales
14
+ * tienen pocas literales.
15
+ */
16
+ function subsumes(c1, c2) {
17
+ if (c1.literals.length === 0)
18
+ return true; // ⊥ subsume todo
19
+ if (c1.literals.length > c2.literals.length)
20
+ return false;
21
+ return matchLiterals(c1.literals, c2.literals, new Map());
22
+ }
23
+ function matchLiterals(remaining, target, sub) {
24
+ if (remaining.length === 0)
25
+ return true;
26
+ const first = remaining[0];
27
+ if (!first)
28
+ return true;
29
+ const rest = remaining.slice(1);
30
+ for (const lit of target) {
31
+ const extended = matchLiteral(first, lit, new Map(sub));
32
+ if (extended && matchLiterals(rest, target, extended))
33
+ return true;
34
+ }
35
+ return false;
36
+ }
37
+ function matchLiteral(pattern, target, sub) {
38
+ if (pattern.negated !== target.negated)
39
+ return null;
40
+ if (pattern.predicate !== target.predicate)
41
+ return null;
42
+ if (pattern.args.length !== target.args.length)
43
+ return null;
44
+ let current = sub;
45
+ for (let i = 0; i < pattern.args.length; i++) {
46
+ const a = pattern.args[i];
47
+ const b = target.args[i];
48
+ if (a === undefined || b === undefined)
49
+ return null;
50
+ const next = matchTerm(a, b, current);
51
+ if (!next)
52
+ return null;
53
+ current = next;
54
+ }
55
+ return current;
56
+ }
57
+ /**
58
+ * Matching unidireccional (no unificación): sólo variables del `pattern` se
59
+ * sustituyen; los términos del `target` se mantienen fijos.
60
+ */
61
+ function matchTerm(pattern, target, sub) {
62
+ if (pattern.kind === 'variable') {
63
+ const existing = sub.get(pattern.name);
64
+ if (existing) {
65
+ return termsEqual((0, unify_1.applySubToTerm)(existing, sub), target) ? sub : null;
66
+ }
67
+ const next = new Map(sub);
68
+ next.set(pattern.name, target);
69
+ return next;
70
+ }
71
+ if (target.kind === 'variable')
72
+ return null;
73
+ if (pattern.name !== target.name)
74
+ return null;
75
+ if (pattern.args.length !== target.args.length)
76
+ return null;
77
+ let current = sub;
78
+ for (let i = 0; i < pattern.args.length; i++) {
79
+ const a = pattern.args[i];
80
+ const b = target.args[i];
81
+ if (a === undefined || b === undefined)
82
+ return null;
83
+ const next = matchTerm(a, b, current);
84
+ if (!next)
85
+ return null;
86
+ current = next;
87
+ }
88
+ return current;
89
+ }
90
+ function termsEqual(a, b) {
91
+ if (a.kind !== b.kind)
92
+ return false;
93
+ if (a.kind === 'variable' && b.kind === 'variable')
94
+ return a.name === b.name;
95
+ if (a.kind === 'function' && b.kind === 'function') {
96
+ if (a.name !== b.name || a.args.length !== b.args.length)
97
+ return false;
98
+ for (let i = 0; i < a.args.length; i++) {
99
+ const ai = a.args[i];
100
+ const bi = b.args[i];
101
+ if (ai === undefined || bi === undefined)
102
+ return false;
103
+ if (!termsEqual(ai, bi))
104
+ return false;
105
+ }
106
+ return true;
107
+ }
108
+ return false;
109
+ }
110
+ /**
111
+ * Filtra cláusulas dejando sólo las no-subsumidas por otras del mismo set.
112
+ * Conserva orden de la primera aparición.
113
+ */
114
+ function removeSubsumed(clauses) {
115
+ const kept = [];
116
+ for (let i = 0; i < clauses.length; i++) {
117
+ const c = clauses[i];
118
+ if (!c)
119
+ continue;
120
+ let dominated = false;
121
+ for (let j = 0; j < clauses.length; j++) {
122
+ if (i === j)
123
+ continue;
124
+ const other = clauses[j];
125
+ if (!other)
126
+ continue;
127
+ if (clausesAlphaEqual(c, other) && j < i) {
128
+ dominated = true; // duplicado posterior
129
+ break;
130
+ }
131
+ if (!clausesAlphaEqual(c, other) && subsumes(other, c)) {
132
+ dominated = true;
133
+ break;
134
+ }
135
+ }
136
+ if (!dominated)
137
+ kept.push(c);
138
+ }
139
+ return kept;
140
+ }
141
+ /**
142
+ * Igualdad sintáctica módulo orden de literales y renombre de variables
143
+ * (alpha-equivalencia simple). Suficiente para detectar duplicados producidos
144
+ * por resolución sobre instancias renombradas.
145
+ */
146
+ function clausesAlphaEqual(a, b) {
147
+ if (a.literals.length !== b.literals.length)
148
+ return false;
149
+ const matched = new Array(b.literals.length).fill(false);
150
+ outer: for (const la of a.literals) {
151
+ for (let i = 0; i < b.literals.length; i++) {
152
+ if (matched[i])
153
+ continue;
154
+ const lb = b.literals[i];
155
+ if (lb && (0, unify_1.literalsEqual)(la, lb)) {
156
+ matched[i] = true;
157
+ continue outer;
158
+ }
159
+ }
160
+ return false;
161
+ }
162
+ return true;
163
+ }
164
+ /**
165
+ * Reordena cláusulas para que las unitarias (1 literal) vayan primero.
166
+ * Patrón "unit preference" — reduce drásticamente el espacio de búsqueda en
167
+ * problemas tipo modus-ponens encadenado.
168
+ */
169
+ function unitPreference(clauses) {
170
+ return [...clauses].sort((a, b) => a.literals.length - b.literals.length);
171
+ }
172
+ //# sourceMappingURL=subsumption.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subsumption.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/subsumption.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * Tipos base de primer orden para el prover avanzado.
3
+ *
4
+ * Variables: identificadores que empiezan con minúscula y se interpretan como
5
+ * sustituibles durante la unificación (convención: `x`, `y`, `u`, `v`).
6
+ * Constantes/funciones: identificadores en minúscula con `args` (aridad ≥ 0).
7
+ * Diferenciamos `variable` vs `function` por el campo `kind` para evitar
8
+ * ambigüedades.
9
+ */
10
+ export type FOLTerm = {
11
+ kind: 'variable';
12
+ name: string;
13
+ } | {
14
+ kind: 'function';
15
+ name: string;
16
+ args: FOLTerm[];
17
+ };
18
+ export interface FOLLiteral {
19
+ /** Si la literal está negada (¬P(x)) o es positiva (P(x)). */
20
+ negated: boolean;
21
+ predicate: string;
22
+ args: FOLTerm[];
23
+ }
24
+ export interface FOLClause {
25
+ /** Disyunción de literales. Cláusula vacía ⇒ contradicción. */
26
+ literals: FOLLiteral[];
27
+ /** Trazabilidad: índices de cláusulas padre (si fue derivada). */
28
+ parents?: number[];
29
+ /** Marca cláusulas que provienen del goal o su negación (SoS). */
30
+ fromGoal?: boolean;
31
+ }
32
+ export type Substitution = Map<string, FOLTerm>;
33
+ export type RefinementStrategy = 'binary' | 'hyperresolution' | 'set-of-support' | 'ordered' | 'unit-preference';
34
+ export type TermOrdering = 'KBO' | 'LPO' | 'none';
35
+ export interface AdvancedProveOptions {
36
+ strategy: RefinementStrategy;
37
+ ordering?: TermOrdering;
38
+ /** Pesos para KBO (símbolo → peso). Variables tienen peso fijo 1. */
39
+ kboWeights?: Map<string, number>;
40
+ /** Precedencia para LPO/ordered (símbolo → rank; mayor = más fuerte). */
41
+ precedence?: Map<string, number>;
42
+ /** Índices (en `premises` + goal-negado) que arrancan en el set-of-support. */
43
+ setOfSupport?: number[];
44
+ timeoutMs?: number;
45
+ maxSteps?: number;
46
+ }
47
+ export interface ProofStep {
48
+ rule: string;
49
+ from: number[];
50
+ result: FOLClause;
51
+ substitution?: Substitution;
52
+ }
53
+ export interface ProofStats {
54
+ resolutions: number;
55
+ subsumed: number;
56
+ deduplicated: number;
57
+ hyperresolutions: number;
58
+ factored: number;
59
+ steps: number;
60
+ }
61
+ export interface AdvancedProveResult {
62
+ proven: boolean;
63
+ steps: ProofStep[];
64
+ stats: ProofStats;
65
+ /** Razón cuando `proven=false`: timeout, saturated, maxSteps. */
66
+ termination: 'refuted' | 'saturated' | 'timeout' | 'max-steps';
67
+ }
68
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,OAAO,GACf;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,OAAO,EAAE,CAAA;CAAE,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,8DAA8D;IAC9D,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,+DAA+D;IAC/D,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEhD,MAAM,MAAM,kBAAkB,GAC1B,QAAQ,GACR,iBAAiB,GACjB,gBAAgB,GAChB,SAAS,GACT,iBAAiB,CAAC;AAEtB,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,qEAAqE;IACrE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,yEAAyE;IACzE,UAAU,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,SAAS,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,EAAE,UAAU,CAAC;IAClB,iEAAiE;IACjE,WAAW,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;CAChE"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Tipos base de primer orden para el prover avanzado.
4
+ *
5
+ * Variables: identificadores que empiezan con minúscula y se interpretan como
6
+ * sustituibles durante la unificación (convención: `x`, `y`, `u`, `v`).
7
+ * Constantes/funciones: identificadores en minúscula con `args` (aridad ≥ 0).
8
+ * Diferenciamos `variable` vs `function` por el campo `kind` para evitar
9
+ * ambigüedades.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}
@@ -0,0 +1,15 @@
1
+ import type { FOLLiteral, FOLTerm, Substitution } from './types';
2
+ /**
3
+ * Unificación de Robinson con occurs-check. Devuelve la sustitución más
4
+ * general (mgu) o `null` si no unifica.
5
+ *
6
+ * Implementación iterativa sobre una pila de pares (t1,t2) para evitar
7
+ * recursión profunda en cláusulas grandes.
8
+ */
9
+ export declare function unify(t1: FOLTerm, t2: FOLTerm): Substitution | null;
10
+ export declare function unifyLiterals(l1: FOLLiteral, l2: FOLLiteral): Substitution | null;
11
+ export declare function applySubToTerm(t: FOLTerm, sub: Substitution): FOLTerm;
12
+ export declare function applySubToLiteral(l: FOLLiteral, sub: Substitution): FOLLiteral;
13
+ export declare function termsEqual(a: FOLTerm, b: FOLTerm): boolean;
14
+ export declare function literalsEqual(a: FOLLiteral, b: FOLLiteral): boolean;
15
+ //# sourceMappingURL=unify.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unify.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/unify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEjE;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,GAAG,YAAY,GAAG,IAAI,CAkCnE;AAED,wBAAgB,aAAa,CAAC,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,GAAG,YAAY,GAAG,IAAI,CAejF;AAED,wBAAgB,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,YAAY,GAAG,OAAO,CAYrE;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,GAAG,UAAU,CAM9E;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAc1D;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,UAAU,GAAG,OAAO,CAWnE"}