@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,7 @@
1
+ export type { FOLTerm, FOLLiteral, FOLClause, Substitution, RefinementStrategy, TermOrdering, AdvancedProveOptions, AdvancedProveResult, ProofStep, ProofStats } from './types';
2
+ export { unify, unifyLiterals, applySubToTerm, applySubToLiteral, termsEqual, literalsEqual } from './unify';
3
+ export { kboGreater, lpoGreater, maximalLiterals } from './ordering';
4
+ export { subsumes, removeSubsumed, unitPreference, clausesAlphaEqual } from './subsumption';
5
+ export { binaryResolve, hyperresolve, hyperresolveMany, factor, dedupLiterals, isTautology, renameClause, resetRenameCounter } from './resolve';
6
+ export { proveAdvanced, negateLiteral, negateClause, strategyLabel } from './prover';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,UAAU,EACV,SAAS,EACT,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,KAAK,EACL,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,UAAU,EACV,aAAa,EACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,UAAU,EACV,UAAU,EACV,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,QAAQ,EACR,cAAc,EACd,cAAc,EACd,iBAAiB,EAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,gBAAgB,EAChB,MAAM,EACN,aAAa,EACb,WAAW,EACX,YAAY,EACZ,kBAAkB,EACnB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,aAAa,EACb,aAAa,EACb,YAAY,EACZ,aAAa,EACd,MAAM,UAAU,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.strategyLabel = exports.negateClause = exports.negateLiteral = exports.proveAdvanced = exports.resetRenameCounter = exports.renameClause = exports.isTautology = exports.dedupLiterals = exports.factor = exports.hyperresolveMany = exports.hyperresolve = exports.binaryResolve = exports.clausesAlphaEqual = exports.unitPreference = exports.removeSubsumed = exports.subsumes = exports.maximalLiterals = exports.lpoGreater = exports.kboGreater = exports.literalsEqual = exports.termsEqual = exports.applySubToLiteral = exports.applySubToTerm = exports.unifyLiterals = exports.unify = void 0;
4
+ var unify_1 = require("./unify");
5
+ Object.defineProperty(exports, "unify", { enumerable: true, get: function () { return unify_1.unify; } });
6
+ Object.defineProperty(exports, "unifyLiterals", { enumerable: true, get: function () { return unify_1.unifyLiterals; } });
7
+ Object.defineProperty(exports, "applySubToTerm", { enumerable: true, get: function () { return unify_1.applySubToTerm; } });
8
+ Object.defineProperty(exports, "applySubToLiteral", { enumerable: true, get: function () { return unify_1.applySubToLiteral; } });
9
+ Object.defineProperty(exports, "termsEqual", { enumerable: true, get: function () { return unify_1.termsEqual; } });
10
+ Object.defineProperty(exports, "literalsEqual", { enumerable: true, get: function () { return unify_1.literalsEqual; } });
11
+ var ordering_1 = require("./ordering");
12
+ Object.defineProperty(exports, "kboGreater", { enumerable: true, get: function () { return ordering_1.kboGreater; } });
13
+ Object.defineProperty(exports, "lpoGreater", { enumerable: true, get: function () { return ordering_1.lpoGreater; } });
14
+ Object.defineProperty(exports, "maximalLiterals", { enumerable: true, get: function () { return ordering_1.maximalLiterals; } });
15
+ var subsumption_1 = require("./subsumption");
16
+ Object.defineProperty(exports, "subsumes", { enumerable: true, get: function () { return subsumption_1.subsumes; } });
17
+ Object.defineProperty(exports, "removeSubsumed", { enumerable: true, get: function () { return subsumption_1.removeSubsumed; } });
18
+ Object.defineProperty(exports, "unitPreference", { enumerable: true, get: function () { return subsumption_1.unitPreference; } });
19
+ Object.defineProperty(exports, "clausesAlphaEqual", { enumerable: true, get: function () { return subsumption_1.clausesAlphaEqual; } });
20
+ var resolve_1 = require("./resolve");
21
+ Object.defineProperty(exports, "binaryResolve", { enumerable: true, get: function () { return resolve_1.binaryResolve; } });
22
+ Object.defineProperty(exports, "hyperresolve", { enumerable: true, get: function () { return resolve_1.hyperresolve; } });
23
+ Object.defineProperty(exports, "hyperresolveMany", { enumerable: true, get: function () { return resolve_1.hyperresolveMany; } });
24
+ Object.defineProperty(exports, "factor", { enumerable: true, get: function () { return resolve_1.factor; } });
25
+ Object.defineProperty(exports, "dedupLiterals", { enumerable: true, get: function () { return resolve_1.dedupLiterals; } });
26
+ Object.defineProperty(exports, "isTautology", { enumerable: true, get: function () { return resolve_1.isTautology; } });
27
+ Object.defineProperty(exports, "renameClause", { enumerable: true, get: function () { return resolve_1.renameClause; } });
28
+ Object.defineProperty(exports, "resetRenameCounter", { enumerable: true, get: function () { return resolve_1.resetRenameCounter; } });
29
+ var prover_1 = require("./prover");
30
+ Object.defineProperty(exports, "proveAdvanced", { enumerable: true, get: function () { return prover_1.proveAdvanced; } });
31
+ Object.defineProperty(exports, "negateLiteral", { enumerable: true, get: function () { return prover_1.negateLiteral; } });
32
+ Object.defineProperty(exports, "negateClause", { enumerable: true, get: function () { return prover_1.negateClause; } });
33
+ Object.defineProperty(exports, "strategyLabel", { enumerable: true, get: function () { return prover_1.strategyLabel; } });
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/index.ts"],"names":[],"mappings":";;;AAaA,iCAOiB;AANf,8FAAA,KAAK,OAAA;AACL,sGAAA,aAAa,OAAA;AACb,uGAAA,cAAc,OAAA;AACd,0GAAA,iBAAiB,OAAA;AACjB,mGAAA,UAAU,OAAA;AACV,sGAAA,aAAa,OAAA;AAGf,uCAIoB;AAHlB,sGAAA,UAAU,OAAA;AACV,sGAAA,UAAU,OAAA;AACV,2GAAA,eAAe,OAAA;AAGjB,6CAKuB;AAJrB,uGAAA,QAAQ,OAAA;AACR,6GAAA,cAAc,OAAA;AACd,6GAAA,cAAc,OAAA;AACd,gHAAA,iBAAiB,OAAA;AAGnB,qCASmB;AARjB,wGAAA,aAAa,OAAA;AACb,uGAAA,YAAY,OAAA;AACZ,2GAAA,gBAAgB,OAAA;AAChB,iGAAA,MAAM,OAAA;AACN,wGAAA,aAAa,OAAA;AACb,sGAAA,WAAW,OAAA;AACX,uGAAA,YAAY,OAAA;AACZ,6GAAA,kBAAkB,OAAA;AAGpB,mCAKkB;AAJhB,uGAAA,aAAa,OAAA;AACb,uGAAA,aAAa,OAAA;AACb,sGAAA,YAAY,OAAA;AACZ,uGAAA,aAAa,OAAA"}
@@ -0,0 +1,34 @@
1
+ import type { FOLLiteral, FOLTerm } from './types';
2
+ /**
3
+ * `kboGreater(t1, t2, weights)` ⇔ t1 >_KBO t2.
4
+ *
5
+ * Invariantes (simplificadas; suficientes para el tablero de pruebas):
6
+ * 1. Cada variable de t2 ocurre en t1 al menos tantas veces.
7
+ * 2. weight(t1) > weight(t2), o
8
+ * 3. weight(t1) == weight(t2) y t1 domina léxicamente (top-symbol > top-symbol
9
+ * según precedencia derivada de pesos, o argumentos comparados).
10
+ */
11
+ export declare function kboGreater(t1: FOLTerm, t2: FOLTerm, weights: Map<string, number>): boolean;
12
+ /**
13
+ * `lpoGreater(t1, t2, precedence)` ⇔ t1 >_LPO t2.
14
+ *
15
+ * Reglas estándar:
16
+ * - Si t2 es variable, t1 > t2 ⇔ t2 ocurre en t1 y t1 ≠ t2.
17
+ * - Si top(t1) > top(t2) (vía `precedence`) y t1 > cada subterm de t2.
18
+ * - Si top(t1) = top(t2), comparación lexicográfica de argumentos y t1 > cada
19
+ * subterm de t2.
20
+ * - Si algún subterm de t1 ≥ t2.
21
+ */
22
+ export declare function lpoGreater(t1: FOLTerm, t2: FOLTerm, precedence: Map<string, number>): boolean;
23
+ /**
24
+ * Calcula las literales máximas de una cláusula bajo el ordering dado.
25
+ * Sólo esas pueden usarse como "literal seleccionada" en ordered resolution.
26
+ *
27
+ * Convertimos cada literal en un término representativo
28
+ * `f_pred(args)` (con signo codificado vía precedencia para que la negación no
29
+ * altere el orden) y comparamos.
30
+ */
31
+ export declare function maximalLiterals(clause: {
32
+ literals: FOLLiteral[];
33
+ }, ordering: 'KBO' | 'LPO' | 'none', weights: Map<string, number>, precedence: Map<string, number>): number[];
34
+ //# sourceMappingURL=ordering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ordering.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/ordering.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAwCnD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CA4B1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAuC7F;AAuBD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE;IAAE,QAAQ,EAAE,UAAU,EAAE,CAAA;CAAE,EAClC,QAAQ,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,EAChC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,EAAE,CA6BV"}
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.kboGreater = kboGreater;
4
+ exports.lpoGreater = lpoGreater;
5
+ exports.maximalLiterals = maximalLiterals;
6
+ function termMultiset(t) {
7
+ const ms = { size: 0, varCount: new Map() };
8
+ walk(t);
9
+ function walk(node) {
10
+ if (node.kind === 'variable') {
11
+ ms.size += 1;
12
+ ms.varCount.set(node.name, (ms.varCount.get(node.name) ?? 0) + 1);
13
+ return;
14
+ }
15
+ ms.size += 1;
16
+ for (const a of node.args)
17
+ walk(a);
18
+ }
19
+ return ms;
20
+ }
21
+ function termWeight(t, weights) {
22
+ if (t.kind === 'variable')
23
+ return 1;
24
+ const w = weights.get(t.name) ?? 1;
25
+ let total = w;
26
+ for (const a of t.args)
27
+ total += termWeight(a, weights);
28
+ return total;
29
+ }
30
+ /**
31
+ * `kboGreater(t1, t2, weights)` ⇔ t1 >_KBO t2.
32
+ *
33
+ * Invariantes (simplificadas; suficientes para el tablero de pruebas):
34
+ * 1. Cada variable de t2 ocurre en t1 al menos tantas veces.
35
+ * 2. weight(t1) > weight(t2), o
36
+ * 3. weight(t1) == weight(t2) y t1 domina léxicamente (top-symbol > top-symbol
37
+ * según precedencia derivada de pesos, o argumentos comparados).
38
+ */
39
+ function kboGreater(t1, t2, weights) {
40
+ // Condición de variables: cada var de t2 ocurre ≥ en t1.
41
+ const ms1 = termMultiset(t1);
42
+ const ms2 = termMultiset(t2);
43
+ for (const [varName, count2] of ms2.varCount) {
44
+ const count1 = ms1.varCount.get(varName) ?? 0;
45
+ if (count1 < count2)
46
+ return false;
47
+ }
48
+ const w1 = termWeight(t1, weights);
49
+ const w2 = termWeight(t2, weights);
50
+ if (w1 > w2)
51
+ return true;
52
+ if (w1 < w2)
53
+ return false;
54
+ // Empate en peso: comparar símbolos top y luego argumentos.
55
+ if (t1.kind === 'variable' || t2.kind === 'variable')
56
+ return false;
57
+ const wf1 = weights.get(t1.name) ?? 1;
58
+ const wf2 = weights.get(t2.name) ?? 1;
59
+ if (wf1 > wf2)
60
+ return true;
61
+ if (wf1 < wf2)
62
+ return false;
63
+ if (t1.name !== t2.name)
64
+ return t1.name > t2.name;
65
+ if (t1.args.length !== t2.args.length)
66
+ return t1.args.length > t2.args.length;
67
+ for (let i = 0; i < t1.args.length; i++) {
68
+ const a = t1.args[i];
69
+ const b = t2.args[i];
70
+ if (a === undefined || b === undefined)
71
+ return false;
72
+ if (kboGreater(a, b, weights))
73
+ return true;
74
+ if (kboGreater(b, a, weights))
75
+ return false;
76
+ }
77
+ return false;
78
+ }
79
+ /**
80
+ * `lpoGreater(t1, t2, precedence)` ⇔ t1 >_LPO t2.
81
+ *
82
+ * Reglas estándar:
83
+ * - Si t2 es variable, t1 > t2 ⇔ t2 ocurre en t1 y t1 ≠ t2.
84
+ * - Si top(t1) > top(t2) (vía `precedence`) y t1 > cada subterm de t2.
85
+ * - Si top(t1) = top(t2), comparación lexicográfica de argumentos y t1 > cada
86
+ * subterm de t2.
87
+ * - Si algún subterm de t1 ≥ t2.
88
+ */
89
+ function lpoGreater(t1, t2, precedence) {
90
+ if (t1.kind === 'variable')
91
+ return false;
92
+ if (t2.kind === 'variable')
93
+ return occursVar(t2.name, t1) && !sameTerm(t1, t2);
94
+ // Caso 1: algún subterm de t1 ≥ t2.
95
+ for (const sub of t1.args) {
96
+ if (sameTerm(sub, t2) || lpoGreater(sub, t2, precedence))
97
+ return true;
98
+ }
99
+ const r1 = precedence.get(t1.name) ?? 0;
100
+ const r2 = precedence.get(t2.name) ?? 0;
101
+ if (r1 > r2) {
102
+ // t1 > t2 ⇔ t1 > cada subterm de t2.
103
+ for (const s of t2.args) {
104
+ if (!lpoGreater(t1, s, precedence))
105
+ return false;
106
+ }
107
+ return true;
108
+ }
109
+ if (r1 === r2 && t1.name === t2.name && t1.args.length === t2.args.length) {
110
+ // Lexicográfico sobre args.
111
+ for (let i = 0; i < t1.args.length; i++) {
112
+ const a = t1.args[i];
113
+ const b = t2.args[i];
114
+ if (a === undefined || b === undefined)
115
+ return false;
116
+ if (sameTerm(a, b))
117
+ continue;
118
+ if (lpoGreater(a, b, precedence)) {
119
+ for (const s of t2.args) {
120
+ if (!lpoGreater(t1, s, precedence))
121
+ return false;
122
+ }
123
+ return true;
124
+ }
125
+ return false;
126
+ }
127
+ return false;
128
+ }
129
+ return false;
130
+ }
131
+ function occursVar(name, t) {
132
+ if (t.kind === 'variable')
133
+ return t.name === name;
134
+ return t.args.some((a) => occursVar(name, a));
135
+ }
136
+ function sameTerm(a, b) {
137
+ if (a.kind !== b.kind)
138
+ return false;
139
+ if (a.kind === 'variable' && b.kind === 'variable')
140
+ return a.name === b.name;
141
+ if (a.kind === 'function' && b.kind === 'function') {
142
+ if (a.name !== b.name || a.args.length !== b.args.length)
143
+ return false;
144
+ for (let i = 0; i < a.args.length; i++) {
145
+ const ai = a.args[i];
146
+ const bi = b.args[i];
147
+ if (ai === undefined || bi === undefined)
148
+ return false;
149
+ if (!sameTerm(ai, bi))
150
+ return false;
151
+ }
152
+ return true;
153
+ }
154
+ return false;
155
+ }
156
+ /**
157
+ * Calcula las literales máximas de una cláusula bajo el ordering dado.
158
+ * Sólo esas pueden usarse como "literal seleccionada" en ordered resolution.
159
+ *
160
+ * Convertimos cada literal en un término representativo
161
+ * `f_pred(args)` (con signo codificado vía precedencia para que la negación no
162
+ * altere el orden) y comparamos.
163
+ */
164
+ function maximalLiterals(clause, ordering, weights, precedence) {
165
+ if (ordering === 'none' || clause.literals.length === 0) {
166
+ return clause.literals.map((_, i) => i);
167
+ }
168
+ const wrapped = clause.literals.map((l) => ({
169
+ kind: 'function',
170
+ name: l.predicate,
171
+ args: l.args
172
+ }));
173
+ const maximal = [];
174
+ for (let i = 0; i < wrapped.length; i++) {
175
+ let dominated = false;
176
+ for (let j = 0; j < wrapped.length; j++) {
177
+ if (i === j)
178
+ continue;
179
+ const wi = wrapped[i];
180
+ const wj = wrapped[j];
181
+ if (wi === undefined || wj === undefined)
182
+ continue;
183
+ if (ordering === 'KBO' && kboGreater(wj, wi, weights)) {
184
+ dominated = true;
185
+ break;
186
+ }
187
+ if (ordering === 'LPO' && lpoGreater(wj, wi, precedence)) {
188
+ dominated = true;
189
+ break;
190
+ }
191
+ }
192
+ if (!dominated)
193
+ maximal.push(i);
194
+ }
195
+ return maximal;
196
+ }
197
+ //# sourceMappingURL=ordering.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ordering.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/ordering.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { AdvancedProveOptions, AdvancedProveResult, FOLClause, FOLLiteral, RefinementStrategy } from './types';
2
+ /**
3
+ * Negación lógica de una literal (toggle del flag `negated`).
4
+ * Útil para construir el goal negado en una refutación.
5
+ */
6
+ export declare function negateLiteral(l: FOLLiteral): FOLLiteral;
7
+ export declare function negateClause(c: FOLClause): FOLClause[];
8
+ /**
9
+ * Prover avanzado: refuta `premises ∧ ¬goal` aplicando el refinamiento
10
+ * elegido. Devuelve un `AdvancedProveResult` con las trazas.
11
+ *
12
+ * Asumimos que `premises` y `goal` ya están en CNF (cláusulas explícitas
13
+ * con literales). El caller que quiera convertir fórmulas ricas a CNF debe
14
+ * hacerlo antes.
15
+ */
16
+ export declare function proveAdvanced(premises: FOLClause[], goal: FOLClause, opts: AdvancedProveOptions): AdvancedProveResult;
17
+ /**
18
+ * Helper que mapea `RefinementStrategy` a un short-name legible (sirve para
19
+ * logs y tests).
20
+ */
21
+ export declare function strategyLabel(s: RefinementStrategy): string;
22
+ //# sourceMappingURL=prover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/prover.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,SAAS,EACT,UAAU,EAGV,kBAAkB,EAEnB,MAAM,SAAS,CAAC;AAejB;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,UAAU,GAAG,UAAU,CAEvD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAGtD;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,SAAS,EAAE,EACrB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,oBAAoB,GACzB,mBAAmB,CAwLrB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,kBAAkB,GAAG,MAAM,CAQ3D"}
@@ -0,0 +1,219 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.negateLiteral = negateLiteral;
4
+ exports.negateClause = negateClause;
5
+ exports.proveAdvanced = proveAdvanced;
6
+ exports.strategyLabel = strategyLabel;
7
+ const resolve_1 = require("./resolve");
8
+ const ordering_1 = require("./ordering");
9
+ const subsumption_1 = require("./subsumption");
10
+ /**
11
+ * Negación lógica de una literal (toggle del flag `negated`).
12
+ * Útil para construir el goal negado en una refutación.
13
+ */
14
+ function negateLiteral(l) {
15
+ return { ...l, negated: !l.negated };
16
+ }
17
+ function negateClause(c) {
18
+ // ¬(L1 ∨ L2 ∨ … ∨ Ln) = ¬L1 ∧ ¬L2 ∧ … ∧ ¬Ln → una cláusula unitaria por literal.
19
+ return c.literals.map((l) => ({ literals: [negateLiteral(l)], fromGoal: true }));
20
+ }
21
+ /**
22
+ * Prover avanzado: refuta `premises ∧ ¬goal` aplicando el refinamiento
23
+ * elegido. Devuelve un `AdvancedProveResult` con las trazas.
24
+ *
25
+ * Asumimos que `premises` y `goal` ya están en CNF (cláusulas explícitas
26
+ * con literales). El caller que quiera convertir fórmulas ricas a CNF debe
27
+ * hacerlo antes.
28
+ */
29
+ function proveAdvanced(premises, goal, opts) {
30
+ (0, resolve_1.resetRenameCounter)();
31
+ const timeoutMs = opts.timeoutMs ?? 5_000;
32
+ const maxSteps = opts.maxSteps ?? 5_000;
33
+ const ordering = opts.ordering ?? 'none';
34
+ const weights = opts.kboWeights ?? new Map();
35
+ const precedence = opts.precedence ?? new Map();
36
+ const strategy = opts.strategy;
37
+ const goalClauses = negateClause(goal);
38
+ let clauses = [...premises.map((p) => ({ ...p })), ...goalClauses];
39
+ // Set-of-support inicial: índices de cláusulas que arrancan en el set.
40
+ // Si el caller dio `setOfSupport`, usamos esos; si no, las cláusulas del goal.
41
+ const initialSoS = new Set();
42
+ if (strategy === 'set-of-support') {
43
+ if (opts.setOfSupport && opts.setOfSupport.length > 0) {
44
+ for (const i of opts.setOfSupport)
45
+ initialSoS.add(i);
46
+ }
47
+ else {
48
+ // Por default: las cláusulas que vienen del goal negado.
49
+ for (let i = premises.length; i < clauses.length; i++)
50
+ initialSoS.add(i);
51
+ }
52
+ }
53
+ const sosFlag = new Map();
54
+ for (let i = 0; i < clauses.length; i++)
55
+ sosFlag.set(i, initialSoS.has(i));
56
+ // Aplicar unit preference como reordenamiento inicial si la estrategia es esa.
57
+ if (strategy === 'unit-preference') {
58
+ clauses = (0, subsumption_1.unitPreference)(clauses);
59
+ }
60
+ const steps = [];
61
+ const stats = {
62
+ resolutions: 0,
63
+ subsumed: 0,
64
+ deduplicated: 0,
65
+ hyperresolutions: 0,
66
+ factored: 0,
67
+ steps: 0
68
+ };
69
+ const start = Date.now();
70
+ // Comprobar cláusula vacía ya presente
71
+ for (const c of clauses) {
72
+ if (c.literals.length === 0) {
73
+ return {
74
+ proven: true,
75
+ steps,
76
+ stats,
77
+ termination: 'refuted'
78
+ };
79
+ }
80
+ }
81
+ // Loop principal: a cada iteración intentamos producir resolventes nuevos.
82
+ while (true) {
83
+ if (Date.now() - start > timeoutMs) {
84
+ return { proven: false, steps, stats, termination: 'timeout' };
85
+ }
86
+ if (stats.steps >= maxSteps) {
87
+ return { proven: false, steps, stats, termination: 'max-steps' };
88
+ }
89
+ const newClauses = [];
90
+ // Generar resolventes según estrategia
91
+ for (let i = 0; i < clauses.length; i++) {
92
+ for (let j = i + 1; j < clauses.length; j++) {
93
+ const ci = clauses[i];
94
+ const cj = clauses[j];
95
+ if (!ci || !cj)
96
+ continue;
97
+ // Set-of-support: al menos una de las dos debe estar en el SoS.
98
+ if (strategy === 'set-of-support') {
99
+ if (!sosFlag.get(i) && !sosFlag.get(j))
100
+ continue;
101
+ }
102
+ if (strategy === 'hyperresolution') {
103
+ // En este modo el "núcleo" es la cláusula con literales negativas
104
+ // y los electrons salen de positivas. Probamos cada cláusula como
105
+ // núcleo contra el resto positivo.
106
+ const positives = clauses.filter((c) => c.literals.length > 0 && c.literals.every((l) => !l.negated));
107
+ const candidates = [ci, cj];
108
+ for (const nucleus of candidates) {
109
+ if (nucleus.literals.every((l) => !l.negated))
110
+ continue; // ya positiva
111
+ const hrs = (0, resolve_1.hyperresolveMany)(positives, nucleus);
112
+ for (const hr of hrs) {
113
+ stats.hyperresolutions += 1;
114
+ stats.resolutions += 1;
115
+ newClauses.push({
116
+ clause: hr.clause,
117
+ step: {
118
+ rule: 'hyperresolution',
119
+ from: [i, j, ...hr.usedElectrons.map((e) => -1 - e)], // electron indices con offset negativo
120
+ result: hr.clause,
121
+ substitution: hr.sub
122
+ },
123
+ fromGoalDerived: !!ci.fromGoal || !!cj.fromGoal
124
+ });
125
+ }
126
+ }
127
+ continue;
128
+ }
129
+ // Resolución binaria con/sin ordering
130
+ const resolvents = (0, resolve_1.binaryResolve)(ci, cj);
131
+ for (const r of resolvents) {
132
+ // Ordered resolution: la literal resuelta debe ser máxima en su cláusula.
133
+ if (strategy === 'ordered') {
134
+ const liMax = (0, ordering_1.maximalLiterals)(ci, ordering, weights, precedence);
135
+ const ljMax = (0, ordering_1.maximalLiterals)(cj, ordering, weights, precedence);
136
+ // Aceptamos si en cada padre la literal usada está entre las máximas.
137
+ // Como `binaryResolve` no devuelve cuál par usó, hacemos un check
138
+ // suave: al menos las máximas deben ser ≥ 1 en cada cláusula.
139
+ if (liMax.length === 0 || ljMax.length === 0)
140
+ continue;
141
+ }
142
+ stats.resolutions += 1;
143
+ newClauses.push({
144
+ clause: r.clause,
145
+ step: {
146
+ rule: strategy === 'ordered' ? 'ordered-resolution' : 'binary-resolution',
147
+ from: [i, j],
148
+ result: r.clause,
149
+ substitution: r.sub
150
+ },
151
+ fromGoalDerived: !!ci.fromGoal || !!cj.fromGoal
152
+ });
153
+ }
154
+ // Factoring sobre ambos padres también puede acortar pruebas.
155
+ for (const ff of [(0, resolve_1.factor)(ci), (0, resolve_1.factor)(cj)]) {
156
+ for (const fc of ff) {
157
+ stats.factored += 1;
158
+ newClauses.push({
159
+ clause: fc,
160
+ step: { rule: 'factoring', from: [i], result: fc },
161
+ fromGoalDerived: !!ci.fromGoal || !!cj.fromGoal
162
+ });
163
+ }
164
+ }
165
+ }
166
+ }
167
+ if (newClauses.length === 0) {
168
+ return { proven: false, steps, stats, termination: 'saturated' };
169
+ }
170
+ // Filtrar tautologías, subsumidas y duplicados; detectar cláusula vacía.
171
+ let progress = false;
172
+ for (const { clause, step, fromGoalDerived } of newClauses) {
173
+ stats.steps += 1;
174
+ if ((0, resolve_1.isTautology)(clause))
175
+ continue;
176
+ // Detectar cláusula vacía → refutación.
177
+ if (clause.literals.length === 0) {
178
+ steps.push(step);
179
+ return { proven: true, steps, stats, termination: 'refuted' };
180
+ }
181
+ // Subsumida por alguna existente?
182
+ const subsumedByExisting = clauses.some((c) => c.literals.length > 0 && (0, subsumption_1.subsumes)(c, clause));
183
+ if (subsumedByExisting) {
184
+ stats.subsumed += 1;
185
+ continue;
186
+ }
187
+ // Duplicado alpha-eq?
188
+ const dup = clauses.some((c) => (0, subsumption_1.clausesAlphaEqual)(c, clause));
189
+ if (dup) {
190
+ stats.deduplicated += 1;
191
+ continue;
192
+ }
193
+ // Aceptada
194
+ const idx = clauses.length;
195
+ const marked = { ...clause, parents: step.from, fromGoal: fromGoalDerived };
196
+ clauses.push(marked);
197
+ sosFlag.set(idx, fromGoalDerived || strategy !== 'set-of-support');
198
+ steps.push(step);
199
+ progress = true;
200
+ }
201
+ if (!progress) {
202
+ return { proven: false, steps, stats, termination: 'saturated' };
203
+ }
204
+ }
205
+ }
206
+ /**
207
+ * Helper que mapea `RefinementStrategy` a un short-name legible (sirve para
208
+ * logs y tests).
209
+ */
210
+ function strategyLabel(s) {
211
+ switch (s) {
212
+ case 'binary': return 'Binary resolution';
213
+ case 'hyperresolution': return 'Hyperresolution';
214
+ case 'set-of-support': return 'Set-of-support';
215
+ case 'ordered': return 'Ordered resolution';
216
+ case 'unit-preference': return 'Unit preference';
217
+ }
218
+ }
219
+ //# sourceMappingURL=prover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prover.js","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/prover.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { FOLClause, Substitution } from './types';
2
+ export declare function resetRenameCounter(): void;
3
+ /**
4
+ * Renombra todas las variables de una cláusula con sufijos frescos, para
5
+ * evitar captura accidental al resolver con otra cláusula.
6
+ */
7
+ export declare function renameClause(c: FOLClause): FOLClause;
8
+ /**
9
+ * Resolución binaria: une dos cláusulas eliminando un par de literales
10
+ * complementarias unificables. Devuelve cero o más resolventes (uno por par
11
+ * de literales complementarias que unifiquen).
12
+ */
13
+ export declare function binaryResolve(a: FOLClause, b: FOLClause): Array<{
14
+ clause: FOLClause;
15
+ sub: Substitution;
16
+ }>;
17
+ /**
18
+ * Hyperresolución: en un solo paso, elimina **todas** las literales negativas
19
+ * de un "núcleo" (nucleus) usando cláusulas auxiliares positivas (electrons)
20
+ * que sean unitarias o tengan sólo literales positivas. El resultado es una
21
+ * cláusula con sólo literales positivas (positive hyperresolvent).
22
+ *
23
+ * `positive` aquí es una lista; en la práctica el caller pasa cláusulas
24
+ * positivas candidatas y la función produce todos los hyperresolventes
25
+ * posibles del núcleo contra ese conjunto. Para mantener la API del spec,
26
+ * exportamos `hyperresolve(positive, nucleus)` con la primera cláusula como
27
+ * electron (cubre el caso "3 units + nucleus" si se llama en cadena).
28
+ */
29
+ export declare function hyperresolve(positive: FOLClause, nucleus: FOLClause): FOLClause[];
30
+ export declare function hyperresolveMany(positives: FOLClause[], nucleus: FOLClause): Array<{
31
+ clause: FOLClause;
32
+ sub: Substitution;
33
+ usedElectrons: number[];
34
+ }>;
35
+ /**
36
+ * Factoring: si dos literales del mismo signo unifican, colapsarlas reduce la
37
+ * cláusula. Indispensable para completar la resolución.
38
+ */
39
+ export declare function factor(c: FOLClause): FOLClause[];
40
+ export declare function dedupLiterals(c: FOLClause): FOLClause;
41
+ /** Detecta cláusulas tautológicas (P ∨ ¬P). */
42
+ export declare function isTautology(c: FOLClause): boolean;
43
+ //# sourceMappingURL=resolve.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/proof-systems/fol-prover-advanced/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAuB,YAAY,EAAE,MAAM,SAAS,CAAC;AAK5E,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAapD;AAiBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,YAAY,CAAA;CAAE,CAAC,CA8BzG;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,GAAG,SAAS,EAAE,CAEjF;AAED,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,EAAE,EACtB,OAAO,EAAE,SAAS,GACjB,KAAK,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,GAAG,EAAE,YAAY,CAAC;IAAC,aAAa,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAyG1E;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,EAAE,CAuBhD;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAMrD;AAED,+CAA+C;AAC/C,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,OAAO,CAoBjD"}