@stevenvo780/st-lang 3.2.3 → 4.0.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 (445) hide show
  1. package/README.md +47 -7
  2. package/dist/api.d.ts +2 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +5 -1
  5. package/dist/api.js.map +1 -1
  6. package/dist/argumentation/dot.d.ts +3 -0
  7. package/dist/argumentation/dot.d.ts.map +1 -0
  8. package/dist/argumentation/dot.js +25 -0
  9. package/dist/argumentation/dot.js.map +1 -0
  10. package/dist/argumentation/extensions.d.ts +11 -0
  11. package/dist/argumentation/extensions.d.ts.map +1 -0
  12. package/dist/argumentation/extensions.js +173 -0
  13. package/dist/argumentation/extensions.js.map +1 -0
  14. package/dist/argumentation/framework.d.ts +13 -0
  15. package/dist/argumentation/framework.d.ts.map +1 -0
  16. package/dist/argumentation/framework.js +117 -0
  17. package/dist/argumentation/framework.js.map +1 -0
  18. package/dist/argumentation/index.d.ts +6 -0
  19. package/dist/argumentation/index.d.ts.map +1 -0
  20. package/dist/argumentation/index.js +33 -0
  21. package/dist/argumentation/index.js.map +1 -0
  22. package/dist/argumentation/types.d.ts +11 -0
  23. package/dist/argumentation/types.d.ts.map +1 -0
  24. package/dist/argumentation/types.js +8 -0
  25. package/dist/argumentation/types.js.map +1 -0
  26. package/dist/ast/visitor.d.ts +95 -0
  27. package/dist/ast/visitor.d.ts.map +1 -0
  28. package/dist/ast/visitor.js +223 -0
  29. package/dist/ast/visitor.js.map +1 -0
  30. package/dist/citation-reasoning/derive.d.ts +31 -0
  31. package/dist/citation-reasoning/derive.d.ts.map +1 -0
  32. package/dist/citation-reasoning/derive.js +157 -0
  33. package/dist/citation-reasoning/derive.js.map +1 -0
  34. package/dist/citation-reasoning/index.d.ts +4 -0
  35. package/dist/citation-reasoning/index.d.ts.map +1 -0
  36. package/dist/citation-reasoning/index.js +10 -0
  37. package/dist/citation-reasoning/index.js.map +1 -0
  38. package/dist/citation-reasoning/types.d.ts +36 -0
  39. package/dist/citation-reasoning/types.d.ts.map +1 -0
  40. package/dist/citation-reasoning/types.js +6 -0
  41. package/dist/citation-reasoning/types.js.map +1 -0
  42. package/dist/educational/checker.d.ts +3 -0
  43. package/dist/educational/checker.d.ts.map +1 -0
  44. package/dist/educational/checker.js +244 -0
  45. package/dist/educational/checker.js.map +1 -0
  46. package/dist/educational/generator.d.ts +4 -0
  47. package/dist/educational/generator.d.ts.map +1 -0
  48. package/dist/educational/generator.js +158 -0
  49. package/dist/educational/generator.js.map +1 -0
  50. package/dist/educational/index.d.ts +6 -0
  51. package/dist/educational/index.d.ts.map +1 -0
  52. package/dist/educational/index.js +21 -0
  53. package/dist/educational/index.js.map +1 -0
  54. package/dist/educational/normalize.d.ts +6 -0
  55. package/dist/educational/normalize.d.ts.map +1 -0
  56. package/dist/educational/normalize.js +124 -0
  57. package/dist/educational/normalize.js.map +1 -0
  58. package/dist/educational/rng.d.ts +10 -0
  59. package/dist/educational/rng.d.ts.map +1 -0
  60. package/dist/educational/rng.js +47 -0
  61. package/dist/educational/rng.js.map +1 -0
  62. package/dist/educational/templates.d.ts +30 -0
  63. package/dist/educational/templates.d.ts.map +1 -0
  64. package/dist/educational/templates.js +567 -0
  65. package/dist/educational/templates.js.map +1 -0
  66. package/dist/educational/types.d.ts +44 -0
  67. package/dist/educational/types.d.ts.map +1 -0
  68. package/dist/educational/types.js +20 -0
  69. package/dist/educational/types.js.map +1 -0
  70. package/dist/exporters/coq/index.d.ts +35 -0
  71. package/dist/exporters/coq/index.d.ts.map +1 -0
  72. package/dist/exporters/coq/index.js +299 -0
  73. package/dist/exporters/coq/index.js.map +1 -0
  74. package/dist/fol-prover/cnf.d.ts +10 -0
  75. package/dist/fol-prover/cnf.d.ts.map +1 -0
  76. package/dist/fol-prover/cnf.js +357 -0
  77. package/dist/fol-prover/cnf.js.map +1 -0
  78. package/dist/fol-prover/index.d.ts +7 -0
  79. package/dist/fol-prover/index.d.ts.map +1 -0
  80. package/dist/fol-prover/index.js +27 -0
  81. package/dist/fol-prover/index.js.map +1 -0
  82. package/dist/fol-prover/prove.d.ts +4 -0
  83. package/dist/fol-prover/prove.d.ts.map +1 -0
  84. package/dist/fol-prover/prove.js +34 -0
  85. package/dist/fol-prover/prove.js.map +1 -0
  86. package/dist/fol-prover/resolve.d.ts +27 -0
  87. package/dist/fol-prover/resolve.d.ts.map +1 -0
  88. package/dist/fol-prover/resolve.js +234 -0
  89. package/dist/fol-prover/resolve.js.map +1 -0
  90. package/dist/fol-prover/types.d.ts +34 -0
  91. package/dist/fol-prover/types.d.ts.map +1 -0
  92. package/dist/fol-prover/types.js +38 -0
  93. package/dist/fol-prover/types.js.map +1 -0
  94. package/dist/fol-prover/unify.d.ts +9 -0
  95. package/dist/fol-prover/unify.d.ts.map +1 -0
  96. package/dist/fol-prover/unify.js +110 -0
  97. package/dist/fol-prover/unify.js.map +1 -0
  98. package/dist/hyperreal/index.d.ts +45 -0
  99. package/dist/hyperreal/index.d.ts.map +1 -0
  100. package/dist/hyperreal/index.js +183 -0
  101. package/dist/hyperreal/index.js.map +1 -0
  102. package/dist/index.d.ts +26 -0
  103. package/dist/index.d.ts.map +1 -1
  104. package/dist/index.js +72 -1
  105. package/dist/index.js.map +1 -1
  106. package/dist/lsp/index.d.ts +6 -0
  107. package/dist/lsp/index.d.ts.map +1 -0
  108. package/dist/lsp/index.js +29 -0
  109. package/dist/lsp/index.js.map +1 -0
  110. package/dist/lsp/protocol.d.ts +20 -0
  111. package/dist/lsp/protocol.d.ts.map +1 -0
  112. package/dist/lsp/protocol.js +64 -0
  113. package/dist/lsp/protocol.js.map +1 -0
  114. package/dist/lsp/server.d.ts +47 -0
  115. package/dist/lsp/server.d.ts.map +1 -0
  116. package/dist/lsp/server.js +529 -0
  117. package/dist/lsp/server.js.map +1 -0
  118. package/dist/lsp/types.d.ts +152 -0
  119. package/dist/lsp/types.d.ts.map +1 -0
  120. package/dist/lsp/types.js +70 -0
  121. package/dist/lsp/types.js.map +1 -0
  122. package/dist/parser/formulas.d.ts +7 -0
  123. package/dist/parser/formulas.d.ts.map +1 -0
  124. package/dist/parser/formulas.js +511 -0
  125. package/dist/parser/formulas.js.map +1 -0
  126. package/dist/parser/parser.d.ts +11 -41
  127. package/dist/parser/parser.d.ts.map +1 -1
  128. package/dist/parser/parser.js +410 -1037
  129. package/dist/parser/parser.js.map +1 -1
  130. package/dist/parser/state.d.ts +34 -0
  131. package/dist/parser/state.d.ts.map +1 -0
  132. package/dist/parser/state.js +163 -0
  133. package/dist/parser/state.js.map +1 -0
  134. package/dist/plugin-system/demo-min-logic.d.ts +3 -0
  135. package/dist/plugin-system/demo-min-logic.d.ts.map +1 -0
  136. package/dist/plugin-system/demo-min-logic.js +116 -0
  137. package/dist/plugin-system/demo-min-logic.js.map +1 -0
  138. package/dist/plugin-system/errors.d.ts +9 -0
  139. package/dist/plugin-system/errors.d.ts.map +1 -0
  140. package/dist/plugin-system/errors.js +24 -0
  141. package/dist/plugin-system/errors.js.map +1 -0
  142. package/dist/plugin-system/index.d.ts +6 -0
  143. package/dist/plugin-system/index.d.ts.map +1 -0
  144. package/dist/plugin-system/index.js +14 -0
  145. package/dist/plugin-system/index.js.map +1 -0
  146. package/dist/plugin-system/registry.d.ts +12 -0
  147. package/dist/plugin-system/registry.d.ts.map +1 -0
  148. package/dist/plugin-system/registry.js +46 -0
  149. package/dist/plugin-system/registry.js.map +1 -0
  150. package/dist/plugin-system/types.d.ts +23 -0
  151. package/dist/plugin-system/types.d.ts.map +1 -0
  152. package/dist/plugin-system/types.js +3 -0
  153. package/dist/plugin-system/types.js.map +1 -0
  154. package/dist/plugin-system/validate.d.ts +4 -0
  155. package/dist/plugin-system/validate.d.ts.map +1 -0
  156. package/dist/plugin-system/validate.js +60 -0
  157. package/dist/plugin-system/validate.js.map +1 -0
  158. package/dist/profiles/classical/parallel-sat.js +3 -3
  159. package/dist/profiles/classical/parallel-sat.js.map +1 -1
  160. package/dist/proof-exchange/index.d.ts +26 -0
  161. package/dist/proof-exchange/index.d.ts.map +1 -0
  162. package/dist/proof-exchange/index.js +94 -0
  163. package/dist/proof-exchange/index.js.map +1 -0
  164. package/dist/runtime/memo/cache.d.ts +32 -0
  165. package/dist/runtime/memo/cache.d.ts.map +1 -0
  166. package/dist/runtime/memo/cache.js +129 -0
  167. package/dist/runtime/memo/cache.js.map +1 -0
  168. package/dist/runtime/memo/hash.d.ts +9 -0
  169. package/dist/runtime/memo/hash.d.ts.map +1 -0
  170. package/dist/runtime/memo/hash.js +87 -0
  171. package/dist/runtime/memo/hash.js.map +1 -0
  172. package/dist/runtime/memo/index.d.ts +4 -0
  173. package/dist/runtime/memo/index.d.ts.map +1 -0
  174. package/dist/runtime/memo/index.js +8 -0
  175. package/dist/runtime/memo/index.js.map +1 -0
  176. package/dist/runtime/parallel/index.d.ts +34 -0
  177. package/dist/runtime/parallel/index.d.ts.map +1 -0
  178. package/dist/runtime/parallel/index.js +220 -0
  179. package/dist/runtime/parallel/index.js.map +1 -0
  180. package/dist/runtime/parallel/worker.d.ts +22 -0
  181. package/dist/runtime/parallel/worker.d.ts.map +1 -0
  182. package/dist/runtime/parallel/worker.js +43 -0
  183. package/dist/runtime/parallel/worker.js.map +1 -0
  184. package/dist/runtime/smt/index.d.ts +6 -0
  185. package/dist/runtime/smt/index.d.ts.map +1 -0
  186. package/dist/runtime/smt/index.js +18 -0
  187. package/dist/runtime/smt/index.js.map +1 -0
  188. package/dist/runtime/smt/mock-backend.d.ts +30 -0
  189. package/dist/runtime/smt/mock-backend.d.ts.map +1 -0
  190. package/dist/runtime/smt/mock-backend.js +460 -0
  191. package/dist/runtime/smt/mock-backend.js.map +1 -0
  192. package/dist/runtime/smt/serializer.d.ts +21 -0
  193. package/dist/runtime/smt/serializer.d.ts.map +1 -0
  194. package/dist/runtime/smt/serializer.js +314 -0
  195. package/dist/runtime/smt/serializer.js.map +1 -0
  196. package/dist/runtime/smt/subprocess-backend.d.ts +62 -0
  197. package/dist/runtime/smt/subprocess-backend.d.ts.map +1 -0
  198. package/dist/runtime/smt/subprocess-backend.js +261 -0
  199. package/dist/runtime/smt/subprocess-backend.js.map +1 -0
  200. package/dist/runtime/smt/types.d.ts +57 -0
  201. package/dist/runtime/smt/types.d.ts.map +1 -0
  202. package/dist/runtime/smt/types.js +6 -0
  203. package/dist/runtime/smt/types.js.map +1 -0
  204. package/dist/runtime/streaming/index.d.ts +4 -0
  205. package/dist/runtime/streaming/index.d.ts.map +1 -0
  206. package/dist/runtime/streaming/index.js +9 -0
  207. package/dist/runtime/streaming/index.js.map +1 -0
  208. package/dist/runtime/streaming/stream-eval.d.ts +31 -0
  209. package/dist/runtime/streaming/stream-eval.d.ts.map +1 -0
  210. package/dist/runtime/streaming/stream-eval.js +155 -0
  211. package/dist/runtime/streaming/stream-eval.js.map +1 -0
  212. package/dist/runtime/streaming/types.d.ts +33 -0
  213. package/dist/runtime/streaming/types.d.ts.map +1 -0
  214. package/dist/runtime/streaming/types.js +6 -0
  215. package/dist/runtime/streaming/types.js.map +1 -0
  216. package/dist/runtime/typecheck/checker.d.ts +72 -0
  217. package/dist/runtime/typecheck/checker.d.ts.map +1 -0
  218. package/dist/runtime/typecheck/checker.js +462 -0
  219. package/dist/runtime/typecheck/checker.js.map +1 -0
  220. package/dist/runtime/typecheck/index.d.ts +4 -0
  221. package/dist/runtime/typecheck/index.d.ts.map +1 -0
  222. package/dist/runtime/typecheck/index.js +13 -0
  223. package/dist/runtime/typecheck/index.js.map +1 -0
  224. package/dist/runtime/typecheck/levenshtein.d.ts +11 -0
  225. package/dist/runtime/typecheck/levenshtein.d.ts.map +1 -0
  226. package/dist/runtime/typecheck/levenshtein.js +49 -0
  227. package/dist/runtime/typecheck/levenshtein.js.map +1 -0
  228. package/dist/runtime/typecheck/types.d.ts +14 -0
  229. package/dist/runtime/typecheck/types.d.ts.map +1 -0
  230. package/dist/runtime/typecheck/types.js +26 -0
  231. package/dist/runtime/typecheck/types.js.map +1 -0
  232. package/dist/solver/cdcl-v2/clause-learning.d.ts +33 -0
  233. package/dist/solver/cdcl-v2/clause-learning.d.ts.map +1 -0
  234. package/dist/solver/cdcl-v2/clause-learning.js +110 -0
  235. package/dist/solver/cdcl-v2/clause-learning.js.map +1 -0
  236. package/dist/solver/cdcl-v2/index.d.ts +9 -0
  237. package/dist/solver/cdcl-v2/index.d.ts.map +1 -0
  238. package/dist/solver/cdcl-v2/index.js +39 -0
  239. package/dist/solver/cdcl-v2/index.js.map +1 -0
  240. package/dist/solver/cdcl-v2/lbd.d.ts +34 -0
  241. package/dist/solver/cdcl-v2/lbd.d.ts.map +1 -0
  242. package/dist/solver/cdcl-v2/lbd.js +72 -0
  243. package/dist/solver/cdcl-v2/lbd.js.map +1 -0
  244. package/dist/solver/cdcl-v2/luby.d.ts +28 -0
  245. package/dist/solver/cdcl-v2/luby.d.ts.map +1 -0
  246. package/dist/solver/cdcl-v2/luby.js +70 -0
  247. package/dist/solver/cdcl-v2/luby.js.map +1 -0
  248. package/dist/solver/cdcl-v2/phase-saving.d.ts +14 -0
  249. package/dist/solver/cdcl-v2/phase-saving.d.ts.map +1 -0
  250. package/dist/solver/cdcl-v2/phase-saving.js +44 -0
  251. package/dist/solver/cdcl-v2/phase-saving.js.map +1 -0
  252. package/dist/solver/cdcl-v2/solver.d.ts +10 -0
  253. package/dist/solver/cdcl-v2/solver.d.ts.map +1 -0
  254. package/dist/solver/cdcl-v2/solver.js +442 -0
  255. package/dist/solver/cdcl-v2/solver.js.map +1 -0
  256. package/dist/solver/cdcl-v2/state.d.ts +54 -0
  257. package/dist/solver/cdcl-v2/state.d.ts.map +1 -0
  258. package/dist/solver/cdcl-v2/state.js +22 -0
  259. package/dist/solver/cdcl-v2/state.js.map +1 -0
  260. package/dist/solver/cdcl-v2/vsids.d.ts +19 -0
  261. package/dist/solver/cdcl-v2/vsids.d.ts.map +1 -0
  262. package/dist/solver/cdcl-v2/vsids.js +77 -0
  263. package/dist/solver/cdcl-v2/vsids.js.map +1 -0
  264. package/dist/tests/agora-integration-fixtures.test.js.map +1 -1
  265. package/dist/tests/argumentation/dung.test.d.ts +2 -0
  266. package/dist/tests/argumentation/dung.test.d.ts.map +1 -0
  267. package/dist/tests/argumentation/dung.test.js +219 -0
  268. package/dist/tests/argumentation/dung.test.js.map +1 -0
  269. package/dist/tests/citation-reasoning/citation-reasoning.test.d.ts +2 -0
  270. package/dist/tests/citation-reasoning/citation-reasoning.test.d.ts.map +1 -0
  271. package/dist/tests/citation-reasoning/citation-reasoning.test.js +240 -0
  272. package/dist/tests/citation-reasoning/citation-reasoning.test.js.map +1 -0
  273. package/dist/tests/coverage-fill-api.test.d.ts +7 -0
  274. package/dist/tests/coverage-fill-api.test.d.ts.map +1 -0
  275. package/dist/tests/coverage-fill-api.test.js +310 -0
  276. package/dist/tests/coverage-fill-api.test.js.map +1 -0
  277. package/dist/tests/coverage-fill-aristotelian.test.d.ts +7 -0
  278. package/dist/tests/coverage-fill-aristotelian.test.d.ts.map +1 -0
  279. package/dist/tests/coverage-fill-aristotelian.test.js +377 -0
  280. package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -0
  281. package/dist/tests/coverage-fill-belnap.test.d.ts +6 -0
  282. package/dist/tests/coverage-fill-belnap.test.d.ts.map +1 -0
  283. package/dist/tests/coverage-fill-belnap.test.js +277 -0
  284. package/dist/tests/coverage-fill-belnap.test.js.map +1 -0
  285. package/dist/tests/coverage-fill-cross-system.test.d.ts +6 -0
  286. package/dist/tests/coverage-fill-cross-system.test.d.ts.map +1 -0
  287. package/dist/tests/coverage-fill-cross-system.test.js +75 -0
  288. package/dist/tests/coverage-fill-cross-system.test.js.map +1 -0
  289. package/dist/tests/coverage-fill-fallacies.test.d.ts +6 -0
  290. package/dist/tests/coverage-fill-fallacies.test.d.ts.map +1 -0
  291. package/dist/tests/coverage-fill-fallacies.test.js +287 -0
  292. package/dist/tests/coverage-fill-fallacies.test.js.map +1 -0
  293. package/dist/tests/coverage-fill-format.test.d.ts +7 -0
  294. package/dist/tests/coverage-fill-format.test.d.ts.map +1 -0
  295. package/dist/tests/coverage-fill-format.test.js +455 -0
  296. package/dist/tests/coverage-fill-format.test.js.map +1 -0
  297. package/dist/tests/coverage-fill-intuitionistic.test.d.ts +6 -0
  298. package/dist/tests/coverage-fill-intuitionistic.test.d.ts.map +1 -0
  299. package/dist/tests/coverage-fill-intuitionistic.test.js +293 -0
  300. package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -0
  301. package/dist/tests/coverage-fill-probabilistic.test.d.ts +7 -0
  302. package/dist/tests/coverage-fill-probabilistic.test.d.ts.map +1 -0
  303. package/dist/tests/coverage-fill-probabilistic.test.js +314 -0
  304. package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -0
  305. package/dist/tests/educational/checker.test.d.ts +2 -0
  306. package/dist/tests/educational/checker.test.d.ts.map +1 -0
  307. package/dist/tests/educational/checker.test.js +212 -0
  308. package/dist/tests/educational/checker.test.js.map +1 -0
  309. package/dist/tests/educational/generator.test.d.ts +2 -0
  310. package/dist/tests/educational/generator.test.d.ts.map +1 -0
  311. package/dist/tests/educational/generator.test.js +137 -0
  312. package/dist/tests/educational/generator.test.js.map +1 -0
  313. package/dist/tests/exporters/coq/coq-exporter.test.d.ts +2 -0
  314. package/dist/tests/exporters/coq/coq-exporter.test.d.ts.map +1 -0
  315. package/dist/tests/exporters/coq/coq-exporter.test.js +353 -0
  316. package/dist/tests/exporters/coq/coq-exporter.test.js.map +1 -0
  317. package/dist/tests/fol-prover/cnf.test.d.ts +2 -0
  318. package/dist/tests/fol-prover/cnf.test.d.ts.map +1 -0
  319. package/dist/tests/fol-prover/cnf.test.js +74 -0
  320. package/dist/tests/fol-prover/cnf.test.js.map +1 -0
  321. package/dist/tests/fol-prover/prove.test.d.ts +2 -0
  322. package/dist/tests/fol-prover/prove.test.d.ts.map +1 -0
  323. package/dist/tests/fol-prover/prove.test.js +106 -0
  324. package/dist/tests/fol-prover/prove.test.js.map +1 -0
  325. package/dist/tests/fol-prover/unify.test.d.ts +2 -0
  326. package/dist/tests/fol-prover/unify.test.d.ts.map +1 -0
  327. package/dist/tests/fol-prover/unify.test.js +66 -0
  328. package/dist/tests/fol-prover/unify.test.js.map +1 -0
  329. package/dist/tests/hyperreal/hyperreal.test.d.ts +2 -0
  330. package/dist/tests/hyperreal/hyperreal.test.d.ts.map +1 -0
  331. package/dist/tests/hyperreal/hyperreal.test.js +219 -0
  332. package/dist/tests/hyperreal/hyperreal.test.js.map +1 -0
  333. package/dist/tests/lsp/server.test.d.ts +2 -0
  334. package/dist/tests/lsp/server.test.d.ts.map +1 -0
  335. package/dist/tests/lsp/server.test.js +406 -0
  336. package/dist/tests/lsp/server.test.js.map +1 -0
  337. package/dist/tests/memo/cache.test.d.ts +2 -0
  338. package/dist/tests/memo/cache.test.d.ts.map +1 -0
  339. package/dist/tests/memo/cache.test.js +252 -0
  340. package/dist/tests/memo/cache.test.js.map +1 -0
  341. package/dist/tests/parallel/parallel-pool.test.d.ts +11 -0
  342. package/dist/tests/parallel/parallel-pool.test.d.ts.map +1 -0
  343. package/dist/tests/parallel/parallel-pool.test.js +192 -0
  344. package/dist/tests/parallel/parallel-pool.test.js.map +1 -0
  345. package/dist/tests/plugin-system/demo-min-logic.test.d.ts +2 -0
  346. package/dist/tests/plugin-system/demo-min-logic.test.d.ts.map +1 -0
  347. package/dist/tests/plugin-system/demo-min-logic.test.js +85 -0
  348. package/dist/tests/plugin-system/demo-min-logic.test.js.map +1 -0
  349. package/dist/tests/plugin-system/registry.test.d.ts +2 -0
  350. package/dist/tests/plugin-system/registry.test.d.ts.map +1 -0
  351. package/dist/tests/plugin-system/registry.test.js +88 -0
  352. package/dist/tests/plugin-system/registry.test.js.map +1 -0
  353. package/dist/tests/plugin-system/validate.test.d.ts +2 -0
  354. package/dist/tests/plugin-system/validate.test.d.ts.map +1 -0
  355. package/dist/tests/plugin-system/validate.test.js +101 -0
  356. package/dist/tests/plugin-system/validate.test.js.map +1 -0
  357. package/dist/tests/proof-exchange/proof-exchange.test.d.ts +2 -0
  358. package/dist/tests/proof-exchange/proof-exchange.test.d.ts.map +1 -0
  359. package/dist/tests/proof-exchange/proof-exchange.test.js +161 -0
  360. package/dist/tests/proof-exchange/proof-exchange.test.js.map +1 -0
  361. package/dist/tests/sat-v2/clause-learning.test.d.ts +2 -0
  362. package/dist/tests/sat-v2/clause-learning.test.d.ts.map +1 -0
  363. package/dist/tests/sat-v2/clause-learning.test.js +73 -0
  364. package/dist/tests/sat-v2/clause-learning.test.js.map +1 -0
  365. package/dist/tests/sat-v2/lbd.test.d.ts +2 -0
  366. package/dist/tests/sat-v2/lbd.test.d.ts.map +1 -0
  367. package/dist/tests/sat-v2/lbd.test.js +82 -0
  368. package/dist/tests/sat-v2/lbd.test.js.map +1 -0
  369. package/dist/tests/sat-v2/luby.test.d.ts +2 -0
  370. package/dist/tests/sat-v2/luby.test.d.ts.map +1 -0
  371. package/dist/tests/sat-v2/luby.test.js +58 -0
  372. package/dist/tests/sat-v2/luby.test.js.map +1 -0
  373. package/dist/tests/sat-v2/phase-saving.test.d.ts +2 -0
  374. package/dist/tests/sat-v2/phase-saving.test.d.ts.map +1 -0
  375. package/dist/tests/sat-v2/phase-saving.test.js +38 -0
  376. package/dist/tests/sat-v2/phase-saving.test.js.map +1 -0
  377. package/dist/tests/sat-v2/solver-end-to-end.test.d.ts +2 -0
  378. package/dist/tests/sat-v2/solver-end-to-end.test.d.ts.map +1 -0
  379. package/dist/tests/sat-v2/solver-end-to-end.test.js +199 -0
  380. package/dist/tests/sat-v2/solver-end-to-end.test.js.map +1 -0
  381. package/dist/tests/sat-v2/vsids.test.d.ts +2 -0
  382. package/dist/tests/sat-v2/vsids.test.d.ts.map +1 -0
  383. package/dist/tests/sat-v2/vsids.test.js +69 -0
  384. package/dist/tests/sat-v2/vsids.test.js.map +1 -0
  385. package/dist/tests/smt/mock-backend.test.d.ts +2 -0
  386. package/dist/tests/smt/mock-backend.test.d.ts.map +1 -0
  387. package/dist/tests/smt/mock-backend.test.js +129 -0
  388. package/dist/tests/smt/mock-backend.test.js.map +1 -0
  389. package/dist/tests/smt/serializer.test.d.ts +2 -0
  390. package/dist/tests/smt/serializer.test.d.ts.map +1 -0
  391. package/dist/tests/smt/serializer.test.js +94 -0
  392. package/dist/tests/smt/serializer.test.js.map +1 -0
  393. package/dist/tests/smt/subprocess-backend.test.d.ts +2 -0
  394. package/dist/tests/smt/subprocess-backend.test.d.ts.map +1 -0
  395. package/dist/tests/smt/subprocess-backend.test.js +89 -0
  396. package/dist/tests/smt/subprocess-backend.test.js.map +1 -0
  397. package/dist/tests/streaming/stream-eval.test.d.ts +2 -0
  398. package/dist/tests/streaming/stream-eval.test.d.ts.map +1 -0
  399. package/dist/tests/streaming/stream-eval.test.js +170 -0
  400. package/dist/tests/streaming/stream-eval.test.js.map +1 -0
  401. package/dist/tests/text-layer-v2/claim-graph.test.d.ts +2 -0
  402. package/dist/tests/text-layer-v2/claim-graph.test.d.ts.map +1 -0
  403. package/dist/tests/text-layer-v2/claim-graph.test.js +255 -0
  404. package/dist/tests/text-layer-v2/claim-graph.test.js.map +1 -0
  405. package/dist/tests/time-travel/snapshot.test.d.ts +2 -0
  406. package/dist/tests/time-travel/snapshot.test.d.ts.map +1 -0
  407. package/dist/tests/time-travel/snapshot.test.js +75 -0
  408. package/dist/tests/time-travel/snapshot.test.js.map +1 -0
  409. package/dist/tests/time-travel/store.test.d.ts +2 -0
  410. package/dist/tests/time-travel/store.test.d.ts.map +1 -0
  411. package/dist/tests/time-travel/store.test.js +242 -0
  412. package/dist/tests/time-travel/store.test.js.map +1 -0
  413. package/dist/tests/typecheck-core.test.d.ts +2 -0
  414. package/dist/tests/typecheck-core.test.d.ts.map +1 -0
  415. package/dist/tests/typecheck-core.test.js +339 -0
  416. package/dist/tests/typecheck-core.test.js.map +1 -0
  417. package/dist/text-layer/v2/claim-graph.d.ts +45 -0
  418. package/dist/text-layer/v2/claim-graph.d.ts.map +1 -0
  419. package/dist/text-layer/v2/claim-graph.js +270 -0
  420. package/dist/text-layer/v2/claim-graph.js.map +1 -0
  421. package/dist/text-layer/v2/index.d.ts +6 -0
  422. package/dist/text-layer/v2/index.d.ts.map +1 -0
  423. package/dist/text-layer/v2/index.js +10 -0
  424. package/dist/text-layer/v2/index.js.map +1 -0
  425. package/dist/text-layer/v2/types.d.ts +32 -0
  426. package/dist/text-layer/v2/types.d.ts.map +1 -0
  427. package/dist/text-layer/v2/types.js +11 -0
  428. package/dist/text-layer/v2/types.js.map +1 -0
  429. package/dist/time-travel/index.d.ts +4 -0
  430. package/dist/time-travel/index.d.ts.map +1 -0
  431. package/dist/time-travel/index.js +8 -0
  432. package/dist/time-travel/index.js.map +1 -0
  433. package/dist/time-travel/snapshot.d.ts +9 -0
  434. package/dist/time-travel/snapshot.d.ts.map +1 -0
  435. package/dist/time-travel/snapshot.js +24 -0
  436. package/dist/time-travel/snapshot.js.map +1 -0
  437. package/dist/time-travel/store.d.ts +14 -0
  438. package/dist/time-travel/store.d.ts.map +1 -0
  439. package/dist/time-travel/store.js +119 -0
  440. package/dist/time-travel/store.js.map +1 -0
  441. package/dist/time-travel/types.d.ts +50 -0
  442. package/dist/time-travel/types.d.ts.map +1 -0
  443. package/dist/time-travel/types.js +3 -0
  444. package/dist/time-travel/types.js.map +1 -0
  445. package/package.json +5 -1
@@ -0,0 +1,442 @@
1
+ "use strict";
2
+ // CDCL v2 — Orquestador principal.
3
+ // Combina: 2-watched literals, BCP, 1UIP clause learning, VSIDS, Luby restarts,
4
+ // phase saving, LBD scoring + reducción periódica de aprendidas.
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.solveCDCLv2 = solveCDCLv2;
7
+ const clause_learning_1 = require("./clause-learning");
8
+ const lbd_1 = require("./lbd");
9
+ const luby_1 = require("./luby");
10
+ const phase_saving_1 = require("./phase-saving");
11
+ const state_1 = require("./state");
12
+ const vsids_1 = require("./vsids");
13
+ const DEFAULTS = {
14
+ timeoutMs: 30_000,
15
+ lubyBase: 100,
16
+ vsidsDecay: 0.95,
17
+ clauseDecay: 0.999,
18
+ lbdReduceThreshold: 2,
19
+ initialPhase: 0,
20
+ };
21
+ function normalizeOpts(opts) {
22
+ return {
23
+ timeoutMs: opts?.timeoutMs ?? DEFAULTS.timeoutMs,
24
+ lubyBase: opts?.lubyBase ?? DEFAULTS.lubyBase,
25
+ vsidsDecay: opts?.vsidsDecay ?? DEFAULTS.vsidsDecay,
26
+ clauseDecay: opts?.clauseDecay ?? DEFAULTS.clauseDecay,
27
+ lbdReduceThreshold: opts?.lbdReduceThreshold ?? DEFAULTS.lbdReduceThreshold,
28
+ atomNames: opts?.atomNames,
29
+ initialPhase: opts?.initialPhase ?? DEFAULTS.initialPhase,
30
+ };
31
+ }
32
+ function emptyStats() {
33
+ return {
34
+ decisions: 0,
35
+ propagations: 0,
36
+ conflicts: 0,
37
+ learnedClauses: 0,
38
+ reducedClauses: 0,
39
+ restarts: 0,
40
+ maxDecisionLevel: 0,
41
+ solveTimeMs: 0,
42
+ };
43
+ }
44
+ function buildModel(varVal, numVars, atomNames) {
45
+ const model = {};
46
+ if (!atomNames) {
47
+ for (let v = 1; v <= numVars; v++) {
48
+ model[`x${v}`] = varVal[v] === 1 || varVal[v] === 0;
49
+ }
50
+ return model;
51
+ }
52
+ for (let i = 0; i < atomNames.length && i < numVars; i++) {
53
+ const name = atomNames[i];
54
+ if (!name)
55
+ continue;
56
+ model[name] = varVal[i + 1] === 1 || varVal[i + 1] === 0;
57
+ }
58
+ return model;
59
+ }
60
+ /**
61
+ * Resuelve un conjunto de cláusulas CNF y retorna SAT (con modelo) o UNSAT
62
+ * (con core de variables involucradas en cláusulas vacías derivadas).
63
+ *
64
+ * Convención DIMACS: variables 1..numVars, literal positivo = variable
65
+ * asignada a true, negativo = false. Cláusula vacía ⇒ UNSAT inmediato.
66
+ */
67
+ function solveCDCLv2(inputClauses, numVars, opts) {
68
+ const o = normalizeOpts(opts);
69
+ const startTime = Date.now();
70
+ const stats = emptyStats();
71
+ // Caso degenerado: 0 variables.
72
+ if (numVars === 0) {
73
+ // Cláusula vacía explícita ⇒ UNSAT; sino SAT trivial.
74
+ for (const c of inputClauses)
75
+ if (c.length === 0) {
76
+ stats.solveTimeMs = Date.now() - startTime;
77
+ return makeUnsat([], stats);
78
+ }
79
+ stats.solveTimeMs = Date.now() - startTime;
80
+ return makeSat({}, stats);
81
+ }
82
+ // Copia mutable de cláusulas — las watched literals se reordenan in-place.
83
+ const allClauses = inputClauses.map((c) => new Int32Array(c));
84
+ // UNSAT trivial: cláusula vacía directa.
85
+ for (const c of allClauses) {
86
+ if (c.length === 0) {
87
+ stats.solveTimeMs = Date.now() - startTime;
88
+ return makeUnsat([], stats);
89
+ }
90
+ }
91
+ const originalCount = allClauses.length;
92
+ // Estado de variables (1-indexado).
93
+ const varVal = new Int8Array(numVars + 1);
94
+ const varLevel = new Int32Array(numVars + 1).fill(-1);
95
+ const varAnte = new Int32Array(numVars + 1).fill(state_1.NO_ANTECEDENT);
96
+ // Trail: literales asignados en orden cronológico. trailLim guarda el
97
+ // offset del trail al inicio de cada nivel de decisión > 0.
98
+ const trail = [];
99
+ const trailLim = [];
100
+ let qHead = 0;
101
+ // Watch lists: 2-watched literals (MiniSat).
102
+ const watchSize = 2 * numVars;
103
+ const watches = new Array(watchSize);
104
+ for (let i = 0; i < watchSize; i++)
105
+ watches[i] = [];
106
+ const rebuildWatches = () => {
107
+ for (let i = 0; i < watchSize; i++)
108
+ watches[i] = [];
109
+ for (let ci = 0; ci < allClauses.length; ci++) {
110
+ const c = allClauses[ci];
111
+ if (c.length >= 2) {
112
+ const w0 = watches[(0, state_1.litToIdx)(c[0], numVars)];
113
+ const w1 = watches[(0, state_1.litToIdx)(c[1], numVars)];
114
+ if (w0)
115
+ w0.push(ci);
116
+ if (w1)
117
+ w1.push(ci);
118
+ }
119
+ }
120
+ };
121
+ rebuildWatches();
122
+ // Heurísticas.
123
+ const vsids = new vsids_1.VSIDS(numVars, o.vsidsDecay);
124
+ vsids.initFromClauses(allClauses);
125
+ const phases = new phase_saving_1.PhaseSaver(numVars, o.initialPhase);
126
+ const restarter = new luby_1.LubyRestartPolicy(o.lubyBase);
127
+ // Metadatos de cláusulas aprendidas (sólo learned, índice >= originalCount).
128
+ const learnedMeta = new Map();
129
+ let clauseInc = 1.0;
130
+ const seenLevelsBuf = new Uint8Array(numVars + 2);
131
+ const ensureSeenLevels = (lvl) => {
132
+ if (lvl + 2 > seenLevelsBuf.length) {
133
+ // El tamaño máximo de un nivel está acotado por numVars, así que esto
134
+ // no debería disparar; pero por seguridad reasignamos sin tirar el
135
+ // buffer existente.
136
+ const grown = new Uint8Array(lvl + 2);
137
+ grown.set(seenLevelsBuf);
138
+ return grown;
139
+ }
140
+ return seenLevelsBuf;
141
+ };
142
+ // --- API interna ---
143
+ const currentLevel = () => trailLim.length;
144
+ const litIsTrue = (lit) => (lit > 0 ? varVal[lit] === 1 : varVal[-lit] === -1);
145
+ const litIsFalse = (lit) => (lit > 0 ? varVal[lit] === -1 : varVal[-lit] === 1);
146
+ const enqueue = (lit, lev, reason) => {
147
+ const v = Math.abs(lit);
148
+ if (varVal[v] !== 0)
149
+ return litIsTrue(lit);
150
+ varVal[v] = lit > 0 ? 1 : -1;
151
+ varLevel[v] = lev;
152
+ varAnte[v] = reason;
153
+ trail.push(lit);
154
+ phases.save(lit);
155
+ stats.propagations++;
156
+ return true;
157
+ };
158
+ // BCP — propagación booleana con watched literals.
159
+ const propagate = () => {
160
+ while (qHead < trail.length) {
161
+ const p = trail[qHead++];
162
+ const falseLit = -p;
163
+ const wIdx = (0, state_1.litToIdx)(falseLit, numVars);
164
+ const wl = watches[wIdx];
165
+ let j = 0;
166
+ for (let i = 0; i < wl.length; i++) {
167
+ const ci = wl[i];
168
+ const c = allClauses[ci];
169
+ if (!c || c.length < 2) {
170
+ wl[j++] = ci;
171
+ continue;
172
+ }
173
+ // Aseguramos que falseLit esté en c[1] para tener c[0] como "otro watch".
174
+ if (c[0] === falseLit) {
175
+ const tmp = c[0];
176
+ c[0] = c[1];
177
+ c[1] = tmp;
178
+ }
179
+ if (litIsTrue(c[0])) {
180
+ wl[j++] = ci;
181
+ continue;
182
+ }
183
+ // Buscar reemplazo para el watch en c[1].
184
+ let found = false;
185
+ for (let k = 2; k < c.length; k++) {
186
+ if (!litIsFalse(c[k])) {
187
+ const tmp = c[1];
188
+ c[1] = c[k];
189
+ c[k] = tmp;
190
+ const newWatch = watches[(0, state_1.litToIdx)(c[1], numVars)];
191
+ if (newWatch)
192
+ newWatch.push(ci);
193
+ found = true;
194
+ break;
195
+ }
196
+ }
197
+ if (found)
198
+ continue;
199
+ // No hay reemplazo: c[0] queda como única esperanza.
200
+ wl[j++] = ci;
201
+ if (litIsFalse(c[0])) {
202
+ // CONFLICTO: copiamos el resto de la watch list intacta y salimos.
203
+ for (let r = i + 1; r < wl.length; r++)
204
+ wl[j++] = wl[r];
205
+ wl.length = j;
206
+ qHead = trail.length;
207
+ return ci;
208
+ }
209
+ // Unit propagation sobre c[0].
210
+ if (!enqueue(c[0], currentLevel(), ci)) {
211
+ for (let r = i + 1; r < wl.length; r++)
212
+ wl[j++] = wl[r];
213
+ wl.length = j;
214
+ qHead = trail.length;
215
+ return ci;
216
+ }
217
+ }
218
+ wl.length = j;
219
+ }
220
+ return state_1.NO_CONFLICT;
221
+ };
222
+ const backtrack = (target) => {
223
+ if (currentLevel() <= target)
224
+ return;
225
+ const btPoint = target < trailLim.length ? trailLim[target] : trail.length;
226
+ for (let i = trail.length - 1; i >= btPoint; i--) {
227
+ const v = Math.abs(trail[i]);
228
+ varVal[v] = 0;
229
+ varLevel[v] = -1;
230
+ varAnte[v] = state_1.NO_ANTECEDENT;
231
+ }
232
+ trail.length = btPoint;
233
+ trailLim.length = target;
234
+ qHead = btPoint;
235
+ };
236
+ const bumpClauseAct = (ci) => {
237
+ const meta = learnedMeta.get(ci);
238
+ if (!meta)
239
+ return;
240
+ meta.activity += clauseInc;
241
+ if (meta.activity > 1e20) {
242
+ for (const m of learnedMeta.values())
243
+ m.activity *= 1e-20;
244
+ clauseInc *= 1e-20;
245
+ }
246
+ };
247
+ const decayClauseAct = () => {
248
+ clauseInc /= o.clauseDecay;
249
+ };
250
+ const addLearnedClause = (learned, lbd) => {
251
+ const ci = allClauses.length;
252
+ allClauses.push(learned);
253
+ stats.learnedClauses++;
254
+ if (learned.length >= 2) {
255
+ const w0 = watches[(0, state_1.litToIdx)(learned[0], numVars)];
256
+ const w1 = watches[(0, state_1.litToIdx)(learned[1], numVars)];
257
+ if (w0)
258
+ w0.push(ci);
259
+ if (w1)
260
+ w1.push(ci);
261
+ }
262
+ learnedMeta.set(ci, {
263
+ index: ci,
264
+ lbd,
265
+ activity: clauseInc,
266
+ locked: false,
267
+ length: learned.length,
268
+ });
269
+ return ci;
270
+ };
271
+ // Reducción de cláusulas aprendidas: marca locked las que actualmente
272
+ // sirven como antecedente, calcula candidatas y reescribe arrays + watches.
273
+ const reduceLearnedDB = () => {
274
+ if (learnedMeta.size < 100)
275
+ return;
276
+ // Marcar locked.
277
+ for (const m of learnedMeta.values())
278
+ m.locked = false;
279
+ for (let v = 1; v <= numVars; v++) {
280
+ const ante = varAnte[v];
281
+ if (ante !== state_1.NO_ANTECEDENT && ante >= originalCount) {
282
+ const m = learnedMeta.get(ante);
283
+ if (m)
284
+ m.locked = true;
285
+ }
286
+ }
287
+ const toRemove = new Set((0, lbd_1.selectClausesToRemove)(Array.from(learnedMeta.values()), o.lbdReduceThreshold));
288
+ if (toRemove.size === 0)
289
+ return;
290
+ const oldToNew = new Map();
291
+ const newClauses = [];
292
+ for (let ci = 0; ci < allClauses.length; ci++) {
293
+ if (toRemove.has(ci))
294
+ continue;
295
+ oldToNew.set(ci, newClauses.length);
296
+ newClauses.push(allClauses[ci]);
297
+ }
298
+ // Reindexar antecedentes.
299
+ for (let v = 1; v <= numVars; v++) {
300
+ const ante = varAnte[v];
301
+ if (ante !== state_1.NO_ANTECEDENT) {
302
+ const mapped = oldToNew.get(ante);
303
+ varAnte[v] = mapped !== undefined ? mapped : state_1.NO_ANTECEDENT;
304
+ }
305
+ }
306
+ // Reindexar learnedMeta.
307
+ const newMeta = new Map();
308
+ for (const [oldIdx, meta] of learnedMeta) {
309
+ const newIdx = oldToNew.get(oldIdx);
310
+ if (newIdx === undefined)
311
+ continue;
312
+ meta.index = newIdx;
313
+ newMeta.set(newIdx, meta);
314
+ }
315
+ learnedMeta.clear();
316
+ for (const [k, v] of newMeta)
317
+ learnedMeta.set(k, v);
318
+ stats.reducedClauses += toRemove.size;
319
+ allClauses.length = 0;
320
+ for (const c of newClauses)
321
+ allClauses.push(c);
322
+ rebuildWatches();
323
+ };
324
+ // --- Setup: cláusulas unitarias iniciales como propagaciones de nivel 0. ---
325
+ for (let ci = 0; ci < allClauses.length; ci++) {
326
+ const c = allClauses[ci];
327
+ if (c.length === 1) {
328
+ const lit = c[0];
329
+ const v = Math.abs(lit);
330
+ if (varVal[v] !== 0) {
331
+ if (!litIsTrue(lit)) {
332
+ stats.solveTimeMs = Date.now() - startTime;
333
+ return makeUnsat([v], stats);
334
+ }
335
+ continue;
336
+ }
337
+ if (!enqueue(lit, 0, ci)) {
338
+ stats.solveTimeMs = Date.now() - startTime;
339
+ return makeUnsat([v], stats);
340
+ }
341
+ }
342
+ }
343
+ let conflict = propagate();
344
+ if (conflict !== state_1.NO_CONFLICT) {
345
+ stats.solveTimeMs = Date.now() - startTime;
346
+ return makeUnsat(extractCoreFromClause(allClauses[conflict]), stats);
347
+ }
348
+ let conflictsUntilRestart = restarter.next();
349
+ let conflictsSinceRestart = 0;
350
+ // Trigger inicial: reducir cuando el #learned excede una cuota.
351
+ let learnedQuota = Math.max(100, Math.floor(originalCount / 3));
352
+ while (true) {
353
+ if (Date.now() - startTime > o.timeoutMs) {
354
+ stats.solveTimeMs = Date.now() - startTime;
355
+ // Timeout — devolvemos UNSAT con core vacío como señal pesimista.
356
+ return makeUnsat([], stats);
357
+ }
358
+ const v = vsids.pick(varVal);
359
+ if (v === 0) {
360
+ // No quedan variables libres ⇒ SAT.
361
+ const model = buildModel(varVal, numVars, o.atomNames);
362
+ stats.solveTimeMs = Date.now() - startTime;
363
+ return makeSat(model, stats);
364
+ }
365
+ stats.decisions++;
366
+ trailLim.push(trail.length);
367
+ if (trailLim.length > stats.maxDecisionLevel)
368
+ stats.maxDecisionLevel = trailLim.length;
369
+ enqueue(phases.pickLit(v), currentLevel(), state_1.NO_ANTECEDENT);
370
+ conflict = propagate();
371
+ while (conflict !== state_1.NO_CONFLICT) {
372
+ stats.conflicts++;
373
+ conflictsSinceRestart++;
374
+ if (currentLevel() === 0) {
375
+ stats.solveTimeMs = Date.now() - startTime;
376
+ const conflictClause = allClauses[conflict];
377
+ return makeUnsat(conflictClause ? extractCoreFromClause(conflictClause) : [], stats);
378
+ }
379
+ const result = (0, clause_learning_1.analyzeConflict1UIP)(conflict, {
380
+ clauses: allClauses,
381
+ trail,
382
+ currentLevel: currentLevel(),
383
+ varLevel,
384
+ varAnte,
385
+ });
386
+ // Bump activities de variables tocadas, luego decay.
387
+ for (const bv of result.bumped)
388
+ vsids.bump(bv);
389
+ vsids.decayStep();
390
+ // Si la "cláusula" aprendida es vacía con btLevel = -1, UNSAT.
391
+ if (result.learned.length === 0 || result.btLevel < 0) {
392
+ stats.solveTimeMs = Date.now() - startTime;
393
+ return makeUnsat(result.bumped, stats);
394
+ }
395
+ // Si la cláusula aprendida bumpeó cláusula raíz, también bumpeamos su act.
396
+ bumpClauseAct(conflict);
397
+ decayClauseAct();
398
+ backtrack(result.btLevel);
399
+ if (result.learned.length === 1) {
400
+ // Asignación forzada a nivel 0.
401
+ if (!enqueue(result.learned[0], 0, state_1.NO_ANTECEDENT)) {
402
+ stats.solveTimeMs = Date.now() - startTime;
403
+ return makeUnsat(result.bumped, stats);
404
+ }
405
+ }
406
+ else {
407
+ const lbdBuf = ensureSeenLevels(stats.maxDecisionLevel);
408
+ const lbd = (0, lbd_1.computeLBD)(result.learned, varLevel, lbdBuf);
409
+ const newCi = addLearnedClause(result.learned, lbd);
410
+ if (!enqueue(result.learned[0], result.btLevel, newCi)) {
411
+ stats.solveTimeMs = Date.now() - startTime;
412
+ return makeUnsat(result.bumped, stats);
413
+ }
414
+ }
415
+ conflict = propagate();
416
+ }
417
+ if (conflictsSinceRestart >= conflictsUntilRestart) {
418
+ stats.restarts++;
419
+ backtrack(0);
420
+ conflictsSinceRestart = 0;
421
+ conflictsUntilRestart = restarter.next();
422
+ }
423
+ if (learnedMeta.size > learnedQuota) {
424
+ reduceLearnedDB();
425
+ learnedQuota = Math.max(100, learnedMeta.size + Math.floor(originalCount / 2));
426
+ }
427
+ }
428
+ }
429
+ function makeSat(model, stats) {
430
+ return { sat: true, model, stats };
431
+ }
432
+ function makeUnsat(core, stats) {
433
+ return { unsat: true, core, stats };
434
+ }
435
+ /** Extrae las variables de una cláusula como "core" pesimista. */
436
+ function extractCoreFromClause(c) {
437
+ const out = [];
438
+ for (let i = 0; i < c.length; i++)
439
+ out.push(Math.abs(c[i] ?? 0));
440
+ return out;
441
+ }
442
+ //# sourceMappingURL=solver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solver.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/solver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ export type Clause = Int32Array;
2
+ export type Literal = number;
3
+ /** Valor de variable: 0 = sin asignar, 1 = true, -1 = false. */
4
+ export type VarValue = 0 | 1 | -1;
5
+ export interface SolverStatsV2 {
6
+ decisions: number;
7
+ propagations: number;
8
+ conflicts: number;
9
+ learnedClauses: number;
10
+ reducedClauses: number;
11
+ restarts: number;
12
+ maxDecisionLevel: number;
13
+ solveTimeMs: number;
14
+ }
15
+ /** Resultado SAT con modelo. */
16
+ export interface SatResult {
17
+ sat: true;
18
+ model: Record<string, boolean>;
19
+ stats: SolverStatsV2;
20
+ }
21
+ /** Resultado UNSAT con núcleo (conjunto de variables que entran en cláusulas
22
+ * aprendidas vacías en el camino al conflicto raíz). */
23
+ export interface UnsatResult {
24
+ unsat: true;
25
+ core: number[];
26
+ stats: SolverStatsV2;
27
+ }
28
+ export type SolveResult = SatResult | UnsatResult;
29
+ /** Opciones públicas del solver. */
30
+ export interface SolverOptions {
31
+ /** Límite total en ms. Default: 30000. */
32
+ timeoutMs?: number;
33
+ /** Multiplicador de la secuencia de Luby (cada paso vale `base * luby(i)` conflictos). */
34
+ lubyBase?: number;
35
+ /** Decay multiplicativo para activities VSIDS (entre 0 y 1, típico 0.95). */
36
+ vsidsDecay?: number;
37
+ /** Decay multiplicativo para activities de cláusulas (typical 0.999). */
38
+ clauseDecay?: number;
39
+ /** LBD máximo aceptado al reducir; cláusulas con LBD > threshold se candidatean a eliminación. */
40
+ lbdReduceThreshold?: number;
41
+ /** Nombres de átomos opcional para producir modelo legible (1-indexado). */
42
+ atomNames?: ReadonlyArray<string>;
43
+ /** Fase inicial sugerida: 1 = polaridad positiva, 0 = negativa. Default 0 (MiniSat). */
44
+ initialPhase?: 0 | 1;
45
+ }
46
+ /** Resultado de propagar: -1 si todo OK, o índice de cláusula en conflicto. */
47
+ export declare const NO_CONFLICT = -1;
48
+ /** Sentinela de "sin antecedente" (variable decidida o forzada por preprocessing). */
49
+ export declare const NO_ANTECEDENT = -1;
50
+ /** Convierte literal DIMACS a índice de watch list (rango 0..2*numVars-1). */
51
+ export declare function litToIdx(lit: Literal, numVars: number): number;
52
+ /** Inversa de litToIdx — útil sólo para debugging. */
53
+ export declare function idxToLit(idx: number, numVars: number): Literal;
54
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/state.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,MAAM,GAAG,UAAU,CAAC;AAEhC,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC;AAE7B,gEAAgE;AAChE,MAAM,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AAElC,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,gCAAgC;AAChC,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,IAAI,CAAC;IACV,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;wDACwD;AACxD,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,IAAI,CAAC;IACZ,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,aAAa,CAAC;CACtB;AAED,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAElD,oCAAoC;AACpC,MAAM,WAAW,aAAa;IAC5B,0CAA0C;IAC1C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kGAAkG;IAClG,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,4EAA4E;IAC5E,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAClC,wFAAwF;IACxF,YAAY,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;CACtB;AAED,+EAA+E;AAC/E,eAAO,MAAM,WAAW,KAAK,CAAC;AAE9B,sFAAsF;AACtF,eAAO,MAAM,aAAa,KAAK,CAAC;AAEhC,8EAA8E;AAC9E,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D;AAED,sDAAsD;AACtD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAE9D"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ // Estado compartido del solver CDCL v2.
3
+ // Una "Clause" es un Int32Array de literales DIMACS (var positiva = true, negativa = false).
4
+ // Var IDs son 1-indexados. Literal `l` se mapea a índice de watch list mediante
5
+ // litToIdx(l, numVars).
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.NO_ANTECEDENT = exports.NO_CONFLICT = void 0;
8
+ exports.litToIdx = litToIdx;
9
+ exports.idxToLit = idxToLit;
10
+ /** Resultado de propagar: -1 si todo OK, o índice de cláusula en conflicto. */
11
+ exports.NO_CONFLICT = -1;
12
+ /** Sentinela de "sin antecedente" (variable decidida o forzada por preprocessing). */
13
+ exports.NO_ANTECEDENT = -1;
14
+ /** Convierte literal DIMACS a índice de watch list (rango 0..2*numVars-1). */
15
+ function litToIdx(lit, numVars) {
16
+ return lit > 0 ? lit - 1 : numVars + -lit - 1;
17
+ }
18
+ /** Inversa de litToIdx — útil sólo para debugging. */
19
+ function idxToLit(idx, numVars) {
20
+ return idx < numVars ? idx + 1 : -(idx - numVars + 1);
21
+ }
22
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/state.ts"],"names":[],"mappings":";AAAA,wCAAwC;AACxC,6FAA6F;AAC7F,gFAAgF;AAChF,wBAAwB;;;AA8DxB,4BAEC;AAGD,4BAEC;AAdD,+EAA+E;AAClE,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC;AAE9B,sFAAsF;AACzE,QAAA,aAAa,GAAG,CAAC,CAAC,CAAC;AAEhC,8EAA8E;AAC9E,SAAgB,QAAQ,CAAC,GAAY,EAAE,OAAe;IACpD,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAChD,CAAC;AAED,sDAAsD;AACtD,SAAgB,QAAQ,CAAC,GAAW,EAAE,OAAe;IACnD,OAAO,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,19 @@
1
+ export declare class VSIDS {
2
+ readonly activity: Float64Array;
3
+ readonly numVars: number;
4
+ private varInc;
5
+ private readonly decay;
6
+ constructor(numVars: number, decay?: number);
7
+ /** Inicializa activities por frecuencia de aparición en las cláusulas dadas. */
8
+ initFromClauses(clauses: ReadonlyArray<Int32Array>): void;
9
+ /** Incrementa la activity de la variable y dispara rescaling si hace falta. */
10
+ bump(v: number): void;
11
+ /** Aumenta varInc para que próximos bumps pesen más (decay efectivo). */
12
+ decayStep(): void;
13
+ /** Variable libre (varVal[v]==0) con mayor activity, 0 si no hay. */
14
+ pick(varVal: Int8Array): number;
15
+ /** Acceso al incremento actual (para tests). */
16
+ get currentInc(): number;
17
+ private rescale;
18
+ }
19
+ //# sourceMappingURL=vsids.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsids.d.ts","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/vsids.ts"],"names":[],"mappings":"AAYA,qBAAa,KAAK;IAChB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,MAAM,CAAO;IACrB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAa;IAYjD,gFAAgF;IAChF,eAAe,CAAC,OAAO,EAAE,aAAa,CAAC,UAAU,CAAC,GAAG,IAAI;IASzD,+EAA+E;IAC/E,IAAI,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAMrB,yEAAyE;IACzE,SAAS,IAAI,IAAI;IAKjB,qEAAqE;IACrE,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,MAAM;IAY/B,gDAAgD;IAChD,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,OAAO,CAAC,OAAO;CAIhB"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ // VSIDS (Variable State Independent Decaying Sum) — Moskewicz et al. (2001)
3
+ // + EVSIDS (Exponential VSIDS) con rescaling para evitar overflow (MiniSat 2.0+).
4
+ //
5
+ // Cada conflicto bumpea las variables que aparecen en la cláusula aprendida.
6
+ // El `varInc` se incrementa periódicamente (cada conflicto) mediante división
7
+ // por VAR_DECAY, lo que efectivamente decae las activities viejas relativas a
8
+ // las nuevas — equivalente matemáticamente a multiplicar todo el array por
9
+ // VAR_DECAY pero O(1) en vez de O(n).
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.VSIDS = void 0;
12
+ const RESCALE_THRESHOLD = 1e100;
13
+ const RESCALE_FACTOR = 1e-100;
14
+ class VSIDS {
15
+ activity;
16
+ numVars;
17
+ varInc = 1.0;
18
+ decay;
19
+ constructor(numVars, decay = 0.95) {
20
+ if (numVars < 0 || !Number.isInteger(numVars)) {
21
+ throw new RangeError(`VSIDS: numVars inválido ${numVars}`);
22
+ }
23
+ if (!(decay > 0 && decay <= 1)) {
24
+ throw new RangeError(`VSIDS: decay debe estar en (0, 1], recibido ${decay}`);
25
+ }
26
+ this.numVars = numVars;
27
+ this.decay = decay;
28
+ this.activity = new Float64Array(numVars + 1);
29
+ }
30
+ /** Inicializa activities por frecuencia de aparición en las cláusulas dadas. */
31
+ initFromClauses(clauses) {
32
+ for (const c of clauses) {
33
+ for (let i = 0; i < c.length; i++) {
34
+ const v = Math.abs(c[i] ?? 0);
35
+ if (v > 0 && v <= this.numVars)
36
+ this.activity[v] += 1.0;
37
+ }
38
+ }
39
+ }
40
+ /** Incrementa la activity de la variable y dispara rescaling si hace falta. */
41
+ bump(v) {
42
+ if (v <= 0 || v > this.numVars)
43
+ return;
44
+ this.activity[v] += this.varInc;
45
+ if (this.activity[v] > RESCALE_THRESHOLD)
46
+ this.rescale();
47
+ }
48
+ /** Aumenta varInc para que próximos bumps pesen más (decay efectivo). */
49
+ decayStep() {
50
+ this.varInc /= this.decay;
51
+ if (this.varInc > RESCALE_THRESHOLD)
52
+ this.rescale();
53
+ }
54
+ /** Variable libre (varVal[v]==0) con mayor activity, 0 si no hay. */
55
+ pick(varVal) {
56
+ let best = 0;
57
+ let bestAct = -1;
58
+ for (let v = 1; v <= this.numVars; v++) {
59
+ if (varVal[v] === 0 && this.activity[v] > bestAct) {
60
+ bestAct = this.activity[v];
61
+ best = v;
62
+ }
63
+ }
64
+ return best;
65
+ }
66
+ /** Acceso al incremento actual (para tests). */
67
+ get currentInc() {
68
+ return this.varInc;
69
+ }
70
+ rescale() {
71
+ for (let i = 1; i <= this.numVars; i++)
72
+ this.activity[i] *= RESCALE_FACTOR;
73
+ this.varInc *= RESCALE_FACTOR;
74
+ }
75
+ }
76
+ exports.VSIDS = VSIDS;
77
+ //# sourceMappingURL=vsids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vsids.js","sourceRoot":"","sources":["../../../src/solver/cdcl-v2/vsids.ts"],"names":[],"mappings":"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"}