@stevenvo780/st-lang 4.0.1 → 4.2.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 (393) hide show
  1. package/dist/belief-revision/agm.d.ts +76 -0
  2. package/dist/belief-revision/agm.d.ts.map +1 -0
  3. package/dist/belief-revision/agm.js +249 -0
  4. package/dist/belief-revision/agm.js.map +1 -0
  5. package/dist/belief-revision/index.d.ts +6 -0
  6. package/dist/belief-revision/index.d.ts.map +1 -0
  7. package/dist/belief-revision/index.js +33 -0
  8. package/dist/belief-revision/index.js.map +1 -0
  9. package/dist/belief-revision/parser.d.ts +16 -0
  10. package/dist/belief-revision/parser.d.ts.map +1 -0
  11. package/dist/belief-revision/parser.js +199 -0
  12. package/dist/belief-revision/parser.js.map +1 -0
  13. package/dist/belief-revision/sat.d.ts +19 -0
  14. package/dist/belief-revision/sat.d.ts.map +1 -0
  15. package/dist/belief-revision/sat.js +90 -0
  16. package/dist/belief-revision/sat.js.map +1 -0
  17. package/dist/belief-revision/types.d.ts +51 -0
  18. package/dist/belief-revision/types.d.ts.map +1 -0
  19. package/dist/belief-revision/types.js +10 -0
  20. package/dist/belief-revision/types.js.map +1 -0
  21. package/dist/curry-howard/index.d.ts +7 -0
  22. package/dist/curry-howard/index.d.ts.map +1 -0
  23. package/dist/curry-howard/index.js +46 -0
  24. package/dist/curry-howard/index.js.map +1 -0
  25. package/dist/curry-howard/infer.d.ts +9 -0
  26. package/dist/curry-howard/infer.d.ts.map +1 -0
  27. package/dist/curry-howard/infer.js +129 -0
  28. package/dist/curry-howard/infer.js.map +1 -0
  29. package/dist/curry-howard/proof.d.ts +7 -0
  30. package/dist/curry-howard/proof.d.ts.map +1 -0
  31. package/dist/curry-howard/proof.js +282 -0
  32. package/dist/curry-howard/proof.js.map +1 -0
  33. package/dist/curry-howard/reduce.d.ts +7 -0
  34. package/dist/curry-howard/reduce.d.ts.map +1 -0
  35. package/dist/curry-howard/reduce.js +266 -0
  36. package/dist/curry-howard/reduce.js.map +1 -0
  37. package/dist/curry-howard/types.d.ts +91 -0
  38. package/dist/curry-howard/types.d.ts.map +1 -0
  39. package/dist/curry-howard/types.js +149 -0
  40. package/dist/curry-howard/types.js.map +1 -0
  41. package/dist/fol-prover-equality/demodulate.d.ts +29 -0
  42. package/dist/fol-prover-equality/demodulate.d.ts.map +1 -0
  43. package/dist/fol-prover-equality/demodulate.js +197 -0
  44. package/dist/fol-prover-equality/demodulate.js.map +1 -0
  45. package/dist/fol-prover-equality/index.d.ts +8 -0
  46. package/dist/fol-prover-equality/index.d.ts.map +1 -0
  47. package/dist/fol-prover-equality/index.js +24 -0
  48. package/dist/fol-prover-equality/index.js.map +1 -0
  49. package/dist/fol-prover-equality/paramodulate.d.ts +46 -0
  50. package/dist/fol-prover-equality/paramodulate.d.ts.map +1 -0
  51. package/dist/fol-prover-equality/paramodulate.js +159 -0
  52. package/dist/fol-prover-equality/paramodulate.js.map +1 -0
  53. package/dist/fol-prover-equality/prove.d.ts +7 -0
  54. package/dist/fol-prover-equality/prove.d.ts.map +1 -0
  55. package/dist/fol-prover-equality/prove.js +307 -0
  56. package/dist/fol-prover-equality/prove.js.map +1 -0
  57. package/dist/fol-prover-equality/term-utils.d.ts +43 -0
  58. package/dist/fol-prover-equality/term-utils.d.ts.map +1 -0
  59. package/dist/fol-prover-equality/term-utils.js +230 -0
  60. package/dist/fol-prover-equality/term-utils.js.map +1 -0
  61. package/dist/fol-prover-equality/types.d.ts +20 -0
  62. package/dist/fol-prover-equality/types.d.ts.map +1 -0
  63. package/dist/fol-prover-equality/types.js +5 -0
  64. package/dist/fol-prover-equality/types.js.map +1 -0
  65. package/dist/index.d.ts +4 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +18 -1
  68. package/dist/index.js.map +1 -1
  69. package/dist/profiles/ctl/check.d.ts +13 -0
  70. package/dist/profiles/ctl/check.d.ts.map +1 -0
  71. package/dist/profiles/ctl/check.js +359 -0
  72. package/dist/profiles/ctl/check.js.map +1 -0
  73. package/dist/profiles/ctl/index.d.ts +5 -0
  74. package/dist/profiles/ctl/index.d.ts.map +1 -0
  75. package/dist/profiles/ctl/index.js +23 -0
  76. package/dist/profiles/ctl/index.js.map +1 -0
  77. package/dist/profiles/ctl/types.d.ts +74 -0
  78. package/dist/profiles/ctl/types.d.ts.map +1 -0
  79. package/dist/profiles/ctl/types.js +53 -0
  80. package/dist/profiles/ctl/types.js.map +1 -0
  81. package/dist/profiles/ctl/witness.d.ts +20 -0
  82. package/dist/profiles/ctl/witness.d.ts.map +1 -0
  83. package/dist/profiles/ctl/witness.js +149 -0
  84. package/dist/profiles/ctl/witness.js.map +1 -0
  85. package/dist/profiles/default-logic/entailment.d.ts +14 -0
  86. package/dist/profiles/default-logic/entailment.d.ts.map +1 -0
  87. package/dist/profiles/default-logic/entailment.js +36 -0
  88. package/dist/profiles/default-logic/entailment.js.map +1 -0
  89. package/dist/profiles/default-logic/extensions.d.ts +35 -0
  90. package/dist/profiles/default-logic/extensions.d.ts.map +1 -0
  91. package/dist/profiles/default-logic/extensions.js +276 -0
  92. package/dist/profiles/default-logic/extensions.js.map +1 -0
  93. package/dist/profiles/default-logic/index.d.ts +5 -0
  94. package/dist/profiles/default-logic/index.d.ts.map +1 -0
  95. package/dist/profiles/default-logic/index.js +33 -0
  96. package/dist/profiles/default-logic/index.js.map +1 -0
  97. package/dist/profiles/default-logic/types.d.ts +29 -0
  98. package/dist/profiles/default-logic/types.d.ts.map +1 -0
  99. package/dist/profiles/default-logic/types.js +25 -0
  100. package/dist/profiles/default-logic/types.js.map +1 -0
  101. package/dist/profiles/description-logic/index.d.ts +5 -0
  102. package/dist/profiles/description-logic/index.d.ts.map +1 -0
  103. package/dist/profiles/description-logic/index.js +39 -0
  104. package/dist/profiles/description-logic/index.js.map +1 -0
  105. package/dist/profiles/description-logic/nnf.d.ts +13 -0
  106. package/dist/profiles/description-logic/nnf.d.ts.map +1 -0
  107. package/dist/profiles/description-logic/nnf.js +123 -0
  108. package/dist/profiles/description-logic/nnf.js.map +1 -0
  109. package/dist/profiles/description-logic/tableau.d.ts +27 -0
  110. package/dist/profiles/description-logic/tableau.d.ts.map +1 -0
  111. package/dist/profiles/description-logic/tableau.js +491 -0
  112. package/dist/profiles/description-logic/tableau.js.map +1 -0
  113. package/dist/profiles/description-logic/types.d.ts +45 -0
  114. package/dist/profiles/description-logic/types.d.ts.map +1 -0
  115. package/dist/profiles/description-logic/types.js +71 -0
  116. package/dist/profiles/description-logic/types.js.map +1 -0
  117. package/dist/profiles/hybrid-logic/index.d.ts +5 -0
  118. package/dist/profiles/hybrid-logic/index.d.ts.map +1 -0
  119. package/dist/profiles/hybrid-logic/index.js +34 -0
  120. package/dist/profiles/hybrid-logic/index.js.map +1 -0
  121. package/dist/profiles/hybrid-logic/sat.d.ts +15 -0
  122. package/dist/profiles/hybrid-logic/sat.d.ts.map +1 -0
  123. package/dist/profiles/hybrid-logic/sat.js +142 -0
  124. package/dist/profiles/hybrid-logic/sat.js.map +1 -0
  125. package/dist/profiles/hybrid-logic/semantics.d.ts +20 -0
  126. package/dist/profiles/hybrid-logic/semantics.d.ts.map +1 -0
  127. package/dist/profiles/hybrid-logic/semantics.js +107 -0
  128. package/dist/profiles/hybrid-logic/semantics.js.map +1 -0
  129. package/dist/profiles/hybrid-logic/types.d.ts +78 -0
  130. package/dist/profiles/hybrid-logic/types.d.ts.map +1 -0
  131. package/dist/profiles/hybrid-logic/types.js +107 -0
  132. package/dist/profiles/hybrid-logic/types.js.map +1 -0
  133. package/dist/profiles/ltl-sat/index.d.ts +4 -0
  134. package/dist/profiles/ltl-sat/index.d.ts.map +1 -0
  135. package/dist/profiles/ltl-sat/index.js +40 -0
  136. package/dist/profiles/ltl-sat/index.js.map +1 -0
  137. package/dist/profiles/ltl-sat/sat.d.ts +8 -0
  138. package/dist/profiles/ltl-sat/sat.d.ts.map +1 -0
  139. package/dist/profiles/ltl-sat/sat.js +140 -0
  140. package/dist/profiles/ltl-sat/sat.js.map +1 -0
  141. package/dist/profiles/ltl-sat/tableau.d.ts +19 -0
  142. package/dist/profiles/ltl-sat/tableau.d.ts.map +1 -0
  143. package/dist/profiles/ltl-sat/tableau.js +358 -0
  144. package/dist/profiles/ltl-sat/tableau.js.map +1 -0
  145. package/dist/profiles/ltl-sat/types.d.ts +52 -0
  146. package/dist/profiles/ltl-sat/types.d.ts.map +1 -0
  147. package/dist/profiles/ltl-sat/types.js +101 -0
  148. package/dist/profiles/ltl-sat/types.js.map +1 -0
  149. package/dist/profiles/sequent-g3/index.d.ts +5 -0
  150. package/dist/profiles/sequent-g3/index.d.ts.map +1 -0
  151. package/dist/profiles/sequent-g3/index.js +23 -0
  152. package/dist/profiles/sequent-g3/index.js.map +1 -0
  153. package/dist/profiles/sequent-g3/latex.d.ts +7 -0
  154. package/dist/profiles/sequent-g3/latex.d.ts.map +1 -0
  155. package/dist/profiles/sequent-g3/latex.js +107 -0
  156. package/dist/profiles/sequent-g3/latex.js.map +1 -0
  157. package/dist/profiles/sequent-g3/normalize.d.ts +15 -0
  158. package/dist/profiles/sequent-g3/normalize.d.ts.map +1 -0
  159. package/dist/profiles/sequent-g3/normalize.js +121 -0
  160. package/dist/profiles/sequent-g3/normalize.js.map +1 -0
  161. package/dist/profiles/sequent-g3/prover.d.ts +16 -0
  162. package/dist/profiles/sequent-g3/prover.d.ts.map +1 -0
  163. package/dist/profiles/sequent-g3/prover.js +348 -0
  164. package/dist/profiles/sequent-g3/prover.js.map +1 -0
  165. package/dist/profiles/sequent-g3/types.d.ts +30 -0
  166. package/dist/profiles/sequent-g3/types.d.ts.map +1 -0
  167. package/dist/profiles/sequent-g3/types.js +16 -0
  168. package/dist/profiles/sequent-g3/types.js.map +1 -0
  169. package/dist/runtime/countermodel-min/index.d.ts +3 -0
  170. package/dist/runtime/countermodel-min/index.d.ts.map +1 -0
  171. package/dist/runtime/countermodel-min/index.js +9 -0
  172. package/dist/runtime/countermodel-min/index.js.map +1 -0
  173. package/dist/runtime/countermodel-min/minimize.d.ts +17 -0
  174. package/dist/runtime/countermodel-min/minimize.d.ts.map +1 -0
  175. package/dist/runtime/countermodel-min/minimize.js +0 -0
  176. package/dist/runtime/countermodel-min/minimize.js.map +1 -0
  177. package/dist/runtime/countermodel-min/types.d.ts +40 -0
  178. package/dist/runtime/countermodel-min/types.d.ts.map +1 -0
  179. package/dist/runtime/countermodel-min/types.js +6 -0
  180. package/dist/runtime/countermodel-min/types.js.map +1 -0
  181. package/dist/runtime/mus/extract.d.ts +34 -0
  182. package/dist/runtime/mus/extract.d.ts.map +1 -0
  183. package/dist/runtime/mus/extract.js +243 -0
  184. package/dist/runtime/mus/extract.js.map +1 -0
  185. package/dist/runtime/mus/index.d.ts +4 -0
  186. package/dist/runtime/mus/index.d.ts.map +1 -0
  187. package/dist/runtime/mus/index.js +12 -0
  188. package/dist/runtime/mus/index.js.map +1 -0
  189. package/dist/runtime/mus/quickxplain.d.ts +10 -0
  190. package/dist/runtime/mus/quickxplain.d.ts.map +1 -0
  191. package/dist/runtime/mus/quickxplain.js +100 -0
  192. package/dist/runtime/mus/quickxplain.js.map +1 -0
  193. package/dist/runtime/mus/types.d.ts +59 -0
  194. package/dist/runtime/mus/types.d.ts.map +1 -0
  195. package/dist/runtime/mus/types.js +20 -0
  196. package/dist/runtime/mus/types.js.map +1 -0
  197. package/dist/solver/cdcl-v2-incremental/index.d.ts +3 -0
  198. package/dist/solver/cdcl-v2-incremental/index.d.ts.map +1 -0
  199. package/dist/solver/cdcl-v2-incremental/index.js +16 -0
  200. package/dist/solver/cdcl-v2-incremental/index.js.map +1 -0
  201. package/dist/solver/cdcl-v2-incremental/solver.d.ts +83 -0
  202. package/dist/solver/cdcl-v2-incremental/solver.d.ts.map +1 -0
  203. package/dist/solver/cdcl-v2-incremental/solver.js +727 -0
  204. package/dist/solver/cdcl-v2-incremental/solver.js.map +1 -0
  205. package/dist/solver/cdcl-v2-incremental/types.d.ts +47 -0
  206. package/dist/solver/cdcl-v2-incremental/types.d.ts.map +1 -0
  207. package/dist/solver/cdcl-v2-incremental/types.js +13 -0
  208. package/dist/solver/cdcl-v2-incremental/types.js.map +1 -0
  209. package/dist/tests/belief-revision/agm.test.d.ts +2 -0
  210. package/dist/tests/belief-revision/agm.test.d.ts.map +1 -0
  211. package/dist/tests/belief-revision/agm.test.js +173 -0
  212. package/dist/tests/belief-revision/agm.test.js.map +1 -0
  213. package/dist/tests/countermodel-min/minimize.test.d.ts +2 -0
  214. package/dist/tests/countermodel-min/minimize.test.d.ts.map +1 -0
  215. package/dist/tests/countermodel-min/minimize.test.js +241 -0
  216. package/dist/tests/countermodel-min/minimize.test.js.map +1 -0
  217. package/dist/tests/coverage-95/api-and-interpreter-e2e.test.d.ts +2 -0
  218. package/dist/tests/coverage-95/api-and-interpreter-e2e.test.d.ts.map +1 -0
  219. package/dist/tests/coverage-95/api-and-interpreter-e2e.test.js +255 -0
  220. package/dist/tests/coverage-95/api-and-interpreter-e2e.test.js.map +1 -0
  221. package/dist/tests/coverage-95/argumentation.test.d.ts +2 -0
  222. package/dist/tests/coverage-95/argumentation.test.d.ts.map +1 -0
  223. package/dist/tests/coverage-95/argumentation.test.js +105 -0
  224. package/dist/tests/coverage-95/argumentation.test.js.map +1 -0
  225. package/dist/tests/coverage-95/arithmetic.test.d.ts +2 -0
  226. package/dist/tests/coverage-95/arithmetic.test.d.ts.map +1 -0
  227. package/dist/tests/coverage-95/arithmetic.test.js +139 -0
  228. package/dist/tests/coverage-95/arithmetic.test.js.map +1 -0
  229. package/dist/tests/coverage-95/belnap.test.d.ts +2 -0
  230. package/dist/tests/coverage-95/belnap.test.d.ts.map +1 -0
  231. package/dist/tests/coverage-95/belnap.test.js +145 -0
  232. package/dist/tests/coverage-95/belnap.test.js.map +1 -0
  233. package/dist/tests/coverage-95/cdcl-v2-solver.test.d.ts +2 -0
  234. package/dist/tests/coverage-95/cdcl-v2-solver.test.d.ts.map +1 -0
  235. package/dist/tests/coverage-95/cdcl-v2-solver.test.js +61 -0
  236. package/dist/tests/coverage-95/cdcl-v2-solver.test.js.map +1 -0
  237. package/dist/tests/coverage-95/classical-propositional-direct.test.d.ts +2 -0
  238. package/dist/tests/coverage-95/classical-propositional-direct.test.d.ts.map +1 -0
  239. package/dist/tests/coverage-95/classical-propositional-direct.test.js +175 -0
  240. package/dist/tests/coverage-95/classical-propositional-direct.test.js.map +1 -0
  241. package/dist/tests/coverage-95/compat.test.d.ts +2 -0
  242. package/dist/tests/coverage-95/compat.test.d.ts.map +1 -0
  243. package/dist/tests/coverage-95/compat.test.js +82 -0
  244. package/dist/tests/coverage-95/compat.test.js.map +1 -0
  245. package/dist/tests/coverage-95/examples-runner.test.d.ts +2 -0
  246. package/dist/tests/coverage-95/examples-runner.test.d.ts.map +1 -0
  247. package/dist/tests/coverage-95/examples-runner.test.js +34 -0
  248. package/dist/tests/coverage-95/examples-runner.test.js.map +1 -0
  249. package/dist/tests/coverage-95/first-order.test.d.ts +2 -0
  250. package/dist/tests/coverage-95/first-order.test.d.ts.map +1 -0
  251. package/dist/tests/coverage-95/first-order.test.js +138 -0
  252. package/dist/tests/coverage-95/first-order.test.js.map +1 -0
  253. package/dist/tests/coverage-95/fol-prover.test.d.ts +2 -0
  254. package/dist/tests/coverage-95/fol-prover.test.d.ts.map +1 -0
  255. package/dist/tests/coverage-95/fol-prover.test.js +228 -0
  256. package/dist/tests/coverage-95/fol-prover.test.js.map +1 -0
  257. package/dist/tests/coverage-95/interpreter-commands.test.d.ts +2 -0
  258. package/dist/tests/coverage-95/interpreter-commands.test.d.ts.map +1 -0
  259. package/dist/tests/coverage-95/interpreter-commands.test.js +332 -0
  260. package/dist/tests/coverage-95/interpreter-commands.test.js.map +1 -0
  261. package/dist/tests/coverage-95/lsp-server.test.d.ts +2 -0
  262. package/dist/tests/coverage-95/lsp-server.test.d.ts.map +1 -0
  263. package/dist/tests/coverage-95/lsp-server.test.js +181 -0
  264. package/dist/tests/coverage-95/lsp-server.test.js.map +1 -0
  265. package/dist/tests/coverage-95/modal-tableau-profiles.test.d.ts +2 -0
  266. package/dist/tests/coverage-95/modal-tableau-profiles.test.d.ts.map +1 -0
  267. package/dist/tests/coverage-95/modal-tableau-profiles.test.js +157 -0
  268. package/dist/tests/coverage-95/modal-tableau-profiles.test.js.map +1 -0
  269. package/dist/tests/coverage-95/parallel-sat.test.d.ts +2 -0
  270. package/dist/tests/coverage-95/parallel-sat.test.d.ts.map +1 -0
  271. package/dist/tests/coverage-95/parallel-sat.test.js +42 -0
  272. package/dist/tests/coverage-95/parallel-sat.test.js.map +1 -0
  273. package/dist/tests/coverage-95/parser-extra.test.d.ts +2 -0
  274. package/dist/tests/coverage-95/parser-extra.test.d.ts.map +1 -0
  275. package/dist/tests/coverage-95/parser-extra.test.js +210 -0
  276. package/dist/tests/coverage-95/parser-extra.test.js.map +1 -0
  277. package/dist/tests/coverage-95/propositional-utilities.test.d.ts +2 -0
  278. package/dist/tests/coverage-95/propositional-utilities.test.d.ts.map +1 -0
  279. package/dist/tests/coverage-95/propositional-utilities.test.js +281 -0
  280. package/dist/tests/coverage-95/propositional-utilities.test.js.map +1 -0
  281. package/dist/tests/coverage-95/protocol-handler.test.d.ts +2 -0
  282. package/dist/tests/coverage-95/protocol-handler.test.d.ts.map +1 -0
  283. package/dist/tests/coverage-95/protocol-handler.test.js +275 -0
  284. package/dist/tests/coverage-95/protocol-handler.test.js.map +1 -0
  285. package/dist/tests/coverage-95/smt-mock-backend.test.d.ts +2 -0
  286. package/dist/tests/coverage-95/smt-mock-backend.test.d.ts.map +1 -0
  287. package/dist/tests/coverage-95/smt-mock-backend.test.js +201 -0
  288. package/dist/tests/coverage-95/smt-mock-backend.test.js.map +1 -0
  289. package/dist/tests/coverage-95/smt-serializer.test.d.ts +2 -0
  290. package/dist/tests/coverage-95/smt-serializer.test.d.ts.map +1 -0
  291. package/dist/tests/coverage-95/smt-serializer.test.js +143 -0
  292. package/dist/tests/coverage-95/smt-serializer.test.js.map +1 -0
  293. package/dist/tests/coverage-95/smt-subprocess.test.d.ts +2 -0
  294. package/dist/tests/coverage-95/smt-subprocess.test.d.ts.map +1 -0
  295. package/dist/tests/coverage-95/smt-subprocess.test.js +96 -0
  296. package/dist/tests/coverage-95/smt-subprocess.test.js.map +1 -0
  297. package/dist/tests/coverage-95/tableau-engine.test.d.ts +2 -0
  298. package/dist/tests/coverage-95/tableau-engine.test.d.ts.map +1 -0
  299. package/dist/tests/coverage-95/tableau-engine.test.js +125 -0
  300. package/dist/tests/coverage-95/tableau-engine.test.js.map +1 -0
  301. package/dist/tests/coverage-95/temporal-ltl.test.d.ts +2 -0
  302. package/dist/tests/coverage-95/temporal-ltl.test.d.ts.map +1 -0
  303. package/dist/tests/coverage-95/temporal-ltl.test.js +94 -0
  304. package/dist/tests/coverage-95/temporal-ltl.test.js.map +1 -0
  305. package/dist/tests/coverage-95/typecheck-checker.test.d.ts +2 -0
  306. package/dist/tests/coverage-95/typecheck-checker.test.d.ts.map +1 -0
  307. package/dist/tests/coverage-95/typecheck-checker.test.js +191 -0
  308. package/dist/tests/coverage-95/typecheck-checker.test.js.map +1 -0
  309. package/dist/tests/coverage-95/undecidability-detector.test.d.ts +2 -0
  310. package/dist/tests/coverage-95/undecidability-detector.test.d.ts.map +1 -0
  311. package/dist/tests/coverage-95/undecidability-detector.test.js +149 -0
  312. package/dist/tests/coverage-95/undecidability-detector.test.js.map +1 -0
  313. package/dist/tests/coverage-95/visitor.test.d.ts +2 -0
  314. package/dist/tests/coverage-95/visitor.test.d.ts.map +1 -0
  315. package/dist/tests/coverage-95/visitor.test.js +140 -0
  316. package/dist/tests/coverage-95/visitor.test.js.map +1 -0
  317. package/dist/tests/ctl/check.test.d.ts +2 -0
  318. package/dist/tests/ctl/check.test.d.ts.map +1 -0
  319. package/dist/tests/ctl/check.test.js +337 -0
  320. package/dist/tests/ctl/check.test.js.map +1 -0
  321. package/dist/tests/curry-howard/infer.test.d.ts +2 -0
  322. package/dist/tests/curry-howard/infer.test.d.ts.map +1 -0
  323. package/dist/tests/curry-howard/infer.test.js +93 -0
  324. package/dist/tests/curry-howard/infer.test.js.map +1 -0
  325. package/dist/tests/curry-howard/proof.test.d.ts +2 -0
  326. package/dist/tests/curry-howard/proof.test.d.ts.map +1 -0
  327. package/dist/tests/curry-howard/proof.test.js +105 -0
  328. package/dist/tests/curry-howard/proof.test.js.map +1 -0
  329. package/dist/tests/curry-howard/reduce.test.d.ts +2 -0
  330. package/dist/tests/curry-howard/reduce.test.d.ts.map +1 -0
  331. package/dist/tests/curry-howard/reduce.test.js +109 -0
  332. package/dist/tests/curry-howard/reduce.test.js.map +1 -0
  333. package/dist/tests/default-logic/extensions.test.d.ts +2 -0
  334. package/dist/tests/default-logic/extensions.test.d.ts.map +1 -0
  335. package/dist/tests/default-logic/extensions.test.js +323 -0
  336. package/dist/tests/default-logic/extensions.test.js.map +1 -0
  337. package/dist/tests/description-logic/alc.test.d.ts +2 -0
  338. package/dist/tests/description-logic/alc.test.d.ts.map +1 -0
  339. package/dist/tests/description-logic/alc.test.js +253 -0
  340. package/dist/tests/description-logic/alc.test.js.map +1 -0
  341. package/dist/tests/fol-prover-equality/prove.test.d.ts +2 -0
  342. package/dist/tests/fol-prover-equality/prove.test.d.ts.map +1 -0
  343. package/dist/tests/fol-prover-equality/prove.test.js +179 -0
  344. package/dist/tests/fol-prover-equality/prove.test.js.map +1 -0
  345. package/dist/tests/hybrid-logic/semantics.test.d.ts +2 -0
  346. package/dist/tests/hybrid-logic/semantics.test.d.ts.map +1 -0
  347. package/dist/tests/hybrid-logic/semantics.test.js +169 -0
  348. package/dist/tests/hybrid-logic/semantics.test.js.map +1 -0
  349. package/dist/tests/ltl-sat/sat.test.d.ts +2 -0
  350. package/dist/tests/ltl-sat/sat.test.d.ts.map +1 -0
  351. package/dist/tests/ltl-sat/sat.test.js +160 -0
  352. package/dist/tests/ltl-sat/sat.test.js.map +1 -0
  353. package/dist/tests/mus/extract.test.d.ts +2 -0
  354. package/dist/tests/mus/extract.test.d.ts.map +1 -0
  355. package/dist/tests/mus/extract.test.js +352 -0
  356. package/dist/tests/mus/extract.test.js.map +1 -0
  357. package/dist/tests/sat-v2-incremental/basic.test.d.ts +2 -0
  358. package/dist/tests/sat-v2-incremental/basic.test.d.ts.map +1 -0
  359. package/dist/tests/sat-v2-incremental/basic.test.js +352 -0
  360. package/dist/tests/sat-v2-incremental/basic.test.js.map +1 -0
  361. package/dist/tests/sequent-g3/prover.test.d.ts +2 -0
  362. package/dist/tests/sequent-g3/prover.test.d.ts.map +1 -0
  363. package/dist/tests/sequent-g3/prover.test.js +205 -0
  364. package/dist/tests/sequent-g3/prover.test.js.map +1 -0
  365. package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.d.ts +2 -0
  366. package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.d.ts.map +1 -0
  367. package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.js +200 -0
  368. package/dist/tests/text-layer-v2/mdx-bridge/mdx-bridge.test.js.map +1 -0
  369. package/dist/text-layer/v2/index.d.ts +2 -0
  370. package/dist/text-layer/v2/index.d.ts.map +1 -1
  371. package/dist/text-layer/v2/index.js +7 -1
  372. package/dist/text-layer/v2/index.js.map +1 -1
  373. package/dist/text-layer/v2/mdx-bridge/diff.d.ts +13 -0
  374. package/dist/text-layer/v2/mdx-bridge/diff.d.ts.map +1 -0
  375. package/dist/text-layer/v2/mdx-bridge/diff.js +69 -0
  376. package/dist/text-layer/v2/mdx-bridge/diff.js.map +1 -0
  377. package/dist/text-layer/v2/mdx-bridge/index.d.ts +14 -0
  378. package/dist/text-layer/v2/mdx-bridge/index.d.ts.map +1 -0
  379. package/dist/text-layer/v2/mdx-bridge/index.js +21 -0
  380. package/dist/text-layer/v2/mdx-bridge/index.js.map +1 -0
  381. package/dist/text-layer/v2/mdx-bridge/parser.d.ts +33 -0
  382. package/dist/text-layer/v2/mdx-bridge/parser.d.ts.map +1 -0
  383. package/dist/text-layer/v2/mdx-bridge/parser.js +192 -0
  384. package/dist/text-layer/v2/mdx-bridge/parser.js.map +1 -0
  385. package/dist/text-layer/v2/mdx-bridge/serializer.d.ts +17 -0
  386. package/dist/text-layer/v2/mdx-bridge/serializer.d.ts.map +1 -0
  387. package/dist/text-layer/v2/mdx-bridge/serializer.js +69 -0
  388. package/dist/text-layer/v2/mdx-bridge/serializer.js.map +1 -0
  389. package/dist/text-layer/v2/mdx-bridge/types.d.ts +53 -0
  390. package/dist/text-layer/v2/mdx-bridge/types.d.ts.map +1 -0
  391. package/dist/text-layer/v2/mdx-bridge/types.js +19 -0
  392. package/dist/text-layer/v2/mdx-bridge/types.js.map +1 -0
  393. package/package.json +1 -1
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.cloneClause = exports.termsEqual = exports.termKey = exports.isEqualityLiteral = void 0;
4
+ exports.paramodulate = paramodulate;
5
+ exports.paramodulateWithSubst = paramodulateWithSubst;
6
+ exports.paramodulateAll = paramodulateAll;
7
+ exports.reflexivityResolve = reflexivityResolve;
8
+ const unify_1 = require("../fol-prover/unify");
9
+ const term_utils_1 = require("./term-utils");
10
+ Object.defineProperty(exports, "cloneClause", { enumerable: true, get: function () { return term_utils_1.cloneClause; } });
11
+ Object.defineProperty(exports, "isEqualityLiteral", { enumerable: true, get: function () { return term_utils_1.isEqualityLiteral; } });
12
+ Object.defineProperty(exports, "termKey", { enumerable: true, get: function () { return term_utils_1.termKey; } });
13
+ Object.defineProperty(exports, "termsEqual", { enumerable: true, get: function () { return term_utils_1.termsEqual; } });
14
+ /**
15
+ * Paramodulation:
16
+ *
17
+ * from C ∨ (s = t) (eqClause, eq_idx points to the s=t literal)
18
+ * and D[u] (target clause, target_idx points to literal containing u,
19
+ * target_pos points inside that literal's args)
20
+ * if unify(s, u) = σ then (C ∨ D[u → t])·σ
21
+ *
22
+ * The direction is fixed: args[0] = s (lhs), args[1] = t (rhs). To paramodulate
23
+ * "in the other direction" callers should retry with the equation flipped (see
24
+ * `paramodulateAll` for the symmetric enumeration).
25
+ *
26
+ * Returns null when the literals can't paramodulate (wrong kind, unification fails, etc.).
27
+ */
28
+ function paramodulate(c1Raw, eq_idx, c2Raw, target_idx, target_pos) {
29
+ const out = paramodulateWithSubst(c1Raw, eq_idx, c2Raw, target_idx, target_pos);
30
+ return out ? out.resolvent : null;
31
+ }
32
+ function paramodulateWithSubst(c1Raw, eq_idx, c2Raw, target_idx, target_pos) {
33
+ // Standardize variables apart between the two parents.
34
+ const c1 = (0, term_utils_1.freshenClause)(c1Raw);
35
+ const c2 = (0, term_utils_1.freshenClause)(c2Raw);
36
+ const eqLit = c1[eq_idx];
37
+ if (eqLit === undefined)
38
+ return null;
39
+ if (!(0, term_utils_1.isEqualityLiteral)(eqLit))
40
+ return null;
41
+ if (eqLit.negated)
42
+ return null;
43
+ const s = eqLit.args[0];
44
+ const t = eqLit.args[1];
45
+ if (s === undefined || t === undefined)
46
+ return null;
47
+ const target = c2[target_idx];
48
+ if (target === undefined)
49
+ return null;
50
+ const u = (0, term_utils_1.getLiteralSubterm)(target, target_pos);
51
+ if (u === null)
52
+ return null;
53
+ // Don't try to paramodulate into a bare variable subterm — that produces
54
+ // an explosion of useless rewrites equivalent to factoring.
55
+ if (u.kind === 'var')
56
+ return null;
57
+ const sigma = new Map();
58
+ const unified = (0, unify_1.unify)(s, u, sigma);
59
+ if (unified === null)
60
+ return null;
61
+ // Build C·σ (rest of clause 1 minus the equation literal)
62
+ const rest1 = c1.filter((_, k) => k !== eq_idx).map((lit) => (0, unify_1.applyLiteral)(lit, sigma));
63
+ // Build the rewritten target: replace u with t at target_pos, then apply σ.
64
+ const rewritten = (0, term_utils_1.replaceLiteralSubterm)(target, target_pos, (0, unify_1.applyTerm)(t, sigma));
65
+ const rewrittenSigma = (0, unify_1.applyLiteral)(rewritten, sigma);
66
+ const rest2 = c2.filter((_, k) => k !== target_idx).map((lit) => (0, unify_1.applyLiteral)(lit, sigma));
67
+ const merged = factor([...rest1, rewrittenSigma, ...rest2]);
68
+ return { resolvent: merged, substitution: sigma };
69
+ }
70
+ function paramodulateAll(idxA, cA, idxB, cB) {
71
+ const out = [];
72
+ collectParamods(idxA, cA, idxB, cB, false, out);
73
+ if (idxA !== idxB)
74
+ collectParamods(idxB, cB, idxA, cA, false, out);
75
+ return out;
76
+ }
77
+ function collectParamods(idxEq, cEq, idxTgt, cTgt, _unusedFlip, out) {
78
+ for (let i = 0; i < cEq.length; i++) {
79
+ const lit = cEq[i];
80
+ if (lit === undefined)
81
+ continue;
82
+ if (!(0, term_utils_1.isEqualityLiteral)(lit) || lit.negated)
83
+ continue;
84
+ const lhs = lit.args[0];
85
+ const rhs = lit.args[1];
86
+ if (lhs === undefined || rhs === undefined)
87
+ continue;
88
+ for (const flip of [false, true]) {
89
+ // Build a virtual clause where, when flip=true, the equation is t = s instead of s = t.
90
+ const directedEq = flip
91
+ ? cEq.map((l, k) => k === i
92
+ ? {
93
+ negated: l.negated,
94
+ predicate: l.predicate,
95
+ args: [(0, term_utils_1.cloneTerm)(rhs), (0, term_utils_1.cloneTerm)(lhs)],
96
+ }
97
+ : l)
98
+ : cEq;
99
+ for (let j = 0; j < cTgt.length; j++) {
100
+ const tgtLit = cTgt[j];
101
+ if (tgtLit === undefined)
102
+ continue;
103
+ for (const pos of (0, term_utils_1.allLiteralPositions)(tgtLit)) {
104
+ const result = paramodulateWithSubst(directedEq, i, cTgt, j, pos);
105
+ if (result === null)
106
+ continue;
107
+ out.push({
108
+ fromEqClause: idxEq,
109
+ fromTargetClause: idxTgt,
110
+ eqIdx: i,
111
+ targetIdx: j,
112
+ targetPos: pos,
113
+ flipped: flip,
114
+ resolvent: result.resolvent,
115
+ substitution: result.substitution,
116
+ });
117
+ }
118
+ }
119
+ }
120
+ }
121
+ }
122
+ function factor(c) {
123
+ const seen = new Set();
124
+ const out = [];
125
+ for (const lit of c) {
126
+ const k = (0, term_utils_1.literalKey)(lit);
127
+ if (seen.has(k))
128
+ continue;
129
+ seen.add(k);
130
+ out.push(lit);
131
+ }
132
+ return out;
133
+ }
134
+ /**
135
+ * Reflexivity resolution: drop a literal of the form ¬(t = t) from a clause.
136
+ * Useful both during search and for proving reflexive goals.
137
+ */
138
+ function reflexivityResolve(c) {
139
+ for (let i = 0; i < c.length; i++) {
140
+ const lit = c[i];
141
+ if (lit === undefined)
142
+ continue;
143
+ if (!(0, term_utils_1.isEqualityLiteral)(lit))
144
+ continue;
145
+ if (!lit.negated)
146
+ continue;
147
+ const a = lit.args[0];
148
+ const b = lit.args[1];
149
+ if (a === undefined || b === undefined)
150
+ continue;
151
+ const sigma = new Map();
152
+ const u = (0, unify_1.unify)(a, b, sigma);
153
+ if (u === null)
154
+ continue;
155
+ return (0, unify_1.applyClause)(c.filter((_, k) => k !== i), sigma);
156
+ }
157
+ return null;
158
+ }
159
+ //# sourceMappingURL=paramodulate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paramodulate.js","sourceRoot":"","sources":["../../src/fol-prover-equality/paramodulate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { Formula } from '../types';
2
+ import type { FOLClause } from '../fol-prover/types';
3
+ import type { EqualityProveOptions, EqualityProveResult } from './types';
4
+ declare function rewriteEqualityClause(c: FOLClause): FOLClause;
5
+ export declare function proveWithEquality(premises: Formula[], goal: Formula, opts?: EqualityProveOptions): EqualityProveResult;
6
+ export { rewriteEqualityClause };
7
+ //# sourceMappingURL=prove.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prove.d.ts","sourceRoot":"","sources":["../../src/fol-prover-equality/prove.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAuB,MAAM,qBAAqB,CAAC;AAO1E,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAqB,MAAM,SAAS,CAAC;AAgC5F,iBAAS,qBAAqB,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAEtD;AA4FD,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,OAAO,EAAE,EACnB,IAAI,EAAE,OAAO,EACb,IAAI,GAAE,oBAAyB,GAC9B,mBAAmB,CA6KrB;AAGD,OAAO,EAAE,qBAAqB,EAAE,CAAC"}
@@ -0,0 +1,307 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.proveWithEquality = proveWithEquality;
4
+ exports.rewriteEqualityClause = rewriteEqualityClause;
5
+ const cnf_1 = require("../fol-prover/cnf");
6
+ const resolve_1 = require("../fol-prover/resolve");
7
+ const unify_1 = require("../fol-prover/unify");
8
+ const paramodulate_1 = require("./paramodulate");
9
+ const demodulate_1 = require("./demodulate");
10
+ const term_utils_1 = require("./term-utils");
11
+ const types_1 = require("./types");
12
+ const DEFAULT_TIMEOUT_MS = 3000;
13
+ const DEFAULT_MAX_STEPS = 5000;
14
+ /**
15
+ * Translate the FOL Formula's `equals` kind to our internal equality predicate.
16
+ * Currently the project's CNF pipeline does not natively know about `equals`; it
17
+ * would turn an `equals(t1, t2)` formula into a predicate literal with two
18
+ * parameters by name. To bring it into the equality prover we walk the Formula
19
+ * tree and rewrite any `equals` node into a `predicate` with the special name
20
+ * `__eq__` whose params are the term strings — but since the existing CNF only
21
+ * supports name-based terms, we explicitly construct the FOLClause for the goal
22
+ * and premises that contain equality.
23
+ *
24
+ * Strategy: parse premises and goal via the usual `toCNF`. After CNF, walk every
25
+ * literal and rewrite predicates that look like equalities into the canonical
26
+ * `__eq__(arg0, arg1)` form. The user-facing convention is: any literal of the
27
+ * form `equals(a, b)` (either as a predicate named "equals", "=", or "eq") is
28
+ * treated as an equality.
29
+ */
30
+ const EQUALITY_ALIASES = new Set(['equals', '=', 'eq', '==']);
31
+ function rewriteEqualityLiteral(lit) {
32
+ if (EQUALITY_ALIASES.has(lit.predicate) && lit.args.length === 2) {
33
+ return { negated: lit.negated, predicate: types_1.EQ_PREDICATE, args: lit.args };
34
+ }
35
+ return lit;
36
+ }
37
+ function rewriteEqualityClause(c) {
38
+ return c.map(rewriteEqualityLiteral);
39
+ }
40
+ function preprocessFormula(f) {
41
+ if (f.kind === 'equals') {
42
+ const params = (f.params ?? f.terms ?? []).slice();
43
+ const newF = { kind: 'predicate', name: '=', params, terms: params };
44
+ if (f.args !== undefined)
45
+ newF.args = f.args.map(preprocessFormula);
46
+ return newF;
47
+ }
48
+ if (f.args === undefined)
49
+ return f;
50
+ return { ...f, args: f.args.map(preprocessFormula) };
51
+ }
52
+ function reflexivityClauses() {
53
+ // The axiom ∀x. x = x → CNF clause __eq__(x, x)
54
+ return [
55
+ [
56
+ {
57
+ negated: false,
58
+ predicate: types_1.EQ_PREDICATE,
59
+ args: [
60
+ { kind: 'var', name: '__refl_x' },
61
+ { kind: 'var', name: '__refl_x' },
62
+ ],
63
+ },
64
+ ],
65
+ ];
66
+ }
67
+ function isTautology(c) {
68
+ // Standard tautology: P and ¬P with identical args.
69
+ for (let i = 0; i < c.length; i++) {
70
+ for (let j = i + 1; j < c.length; j++) {
71
+ const li = c[i];
72
+ const lj = c[j];
73
+ if (li === undefined || lj === undefined)
74
+ continue;
75
+ if (li.negated === lj.negated)
76
+ continue;
77
+ if (li.predicate !== lj.predicate)
78
+ continue;
79
+ if (li.args.length !== lj.args.length)
80
+ continue;
81
+ let same = true;
82
+ for (let k = 0; k < li.args.length; k++) {
83
+ const a = li.args[k];
84
+ const b = lj.args[k];
85
+ if (a === undefined || b === undefined) {
86
+ same = false;
87
+ break;
88
+ }
89
+ if (!(0, term_utils_1.termsEqual)(a, b)) {
90
+ same = false;
91
+ break;
92
+ }
93
+ }
94
+ if (same)
95
+ return true;
96
+ }
97
+ }
98
+ // Reflexive tautology: positive __eq__(t, t).
99
+ for (const lit of c) {
100
+ if (!(0, term_utils_1.isEqualityLiteral)(lit) || lit.negated)
101
+ continue;
102
+ const a = lit.args[0];
103
+ const b = lit.args[1];
104
+ if (a === undefined || b === undefined)
105
+ continue;
106
+ if ((0, term_utils_1.termsEqual)(a, b))
107
+ return true;
108
+ }
109
+ return false;
110
+ }
111
+ function reflexivityResolveStep(c) {
112
+ for (let i = 0; i < c.length; i++) {
113
+ const lit = c[i];
114
+ if (lit === undefined)
115
+ continue;
116
+ if (!(0, term_utils_1.isEqualityLiteral)(lit))
117
+ continue;
118
+ if (!lit.negated)
119
+ continue;
120
+ const a = lit.args[0];
121
+ const b = lit.args[1];
122
+ if (a === undefined || b === undefined)
123
+ continue;
124
+ const sigma = new Map();
125
+ const u = (0, unify_1.unify)(a, b, sigma);
126
+ if (u === null)
127
+ continue;
128
+ const rest = c
129
+ .filter((_, k) => k !== i)
130
+ .map((l) => ({
131
+ negated: l.negated,
132
+ predicate: l.predicate,
133
+ args: l.args.map((t) => (0, unify_1.applyTerm)(t, sigma)),
134
+ }));
135
+ return { clause: rest, sigma };
136
+ }
137
+ return null;
138
+ }
139
+ function proveWithEquality(premises, goal, opts = {}) {
140
+ const timeoutMs = opts.timeoutMs ?? DEFAULT_TIMEOUT_MS;
141
+ const maxSteps = opts.maxSteps ?? DEFAULT_MAX_STEPS;
142
+ // Rewrite `equals` nodes so CNF treats them as binary predicates we can recognise.
143
+ const preProcessedPremises = premises.map(preprocessFormula);
144
+ const preGoal = preprocessFormula(goal);
145
+ const rawPremiseClauses = preProcessedPremises.flatMap((p) => (0, cnf_1.toCNF)(p));
146
+ const negatedGoal = { kind: 'not', args: [preGoal] };
147
+ const rawNegGoalClauses = (0, cnf_1.toCNF)(negatedGoal);
148
+ const premiseClauses = rawPremiseClauses.map(rewriteEqualityClause);
149
+ const negGoalClauses = rawNegGoalClauses.map(rewriteEqualityClause);
150
+ if (premiseClauses.some((c) => c.length === 0) || negGoalClauses.some((c) => c.length === 0)) {
151
+ return { proven: true, steps: [] };
152
+ }
153
+ const all = [];
154
+ const seen = new Set();
155
+ const addClause = (c) => {
156
+ if (isTautology(c))
157
+ return { idx: -1, novel: false };
158
+ const key = (0, term_utils_1.clauseKey)(c);
159
+ const existingIdx = all.findIndex((existing) => (0, term_utils_1.clauseKey)(existing) === key);
160
+ if (existingIdx >= 0)
161
+ return { idx: existingIdx, novel: false };
162
+ seen.add(key);
163
+ all.push(c);
164
+ return { idx: all.length - 1, novel: true };
165
+ };
166
+ // Seed: reflexivity axiom (used by paramodulation when a clause demands x = x).
167
+ for (const c of reflexivityClauses())
168
+ addClause(c);
169
+ for (const c of premiseClauses)
170
+ addClause(c);
171
+ for (const c of negGoalClauses)
172
+ addClause(c);
173
+ const steps = [];
174
+ const startedAt = Date.now();
175
+ const finishSuccess = () => ({ proven: true, steps });
176
+ // Saturation loop: classic given-clause-ish. For each new clause, try resolution
177
+ // and paramodulation with every older clause; apply reflexivity resolution and
178
+ // equality factoring inline.
179
+ let cursor = 0;
180
+ while (cursor < all.length) {
181
+ if (Date.now() - startedAt > timeoutMs) {
182
+ return { proven: false, steps, timeoutHit: true };
183
+ }
184
+ if (steps.length >= maxSteps) {
185
+ return { proven: false, steps, reason: 'max-steps' };
186
+ }
187
+ const ci = all[cursor];
188
+ if (ci === undefined) {
189
+ cursor++;
190
+ continue;
191
+ }
192
+ // Reflexivity resolution on the current clause itself.
193
+ {
194
+ const r = reflexivityResolveStep(ci);
195
+ if (r !== null) {
196
+ if (r.clause.length === 0) {
197
+ steps.push({
198
+ rule: 'reflex',
199
+ from: [cursor],
200
+ result: r.clause,
201
+ substitution: (0, term_utils_1.substToRecordTerm)(r.sigma),
202
+ });
203
+ return finishSuccess();
204
+ }
205
+ const { idx, novel } = addClause(r.clause);
206
+ if (novel && idx >= 0) {
207
+ steps.push({
208
+ rule: 'reflex',
209
+ from: [cursor],
210
+ result: r.clause,
211
+ substitution: (0, term_utils_1.substToRecordTerm)(r.sigma),
212
+ });
213
+ }
214
+ }
215
+ }
216
+ // Equality factoring on the current clause.
217
+ for (const factored of (0, demodulate_1.equalityFactor)(ci)) {
218
+ const { idx, novel } = addClause(factored);
219
+ if (novel && idx >= 0) {
220
+ steps.push({
221
+ rule: 'factor',
222
+ from: [cursor],
223
+ result: factored,
224
+ substitution: {},
225
+ });
226
+ if (factored.length === 0)
227
+ return finishSuccess();
228
+ }
229
+ if (steps.length >= maxSteps)
230
+ return { proven: false, steps, reason: 'max-steps' };
231
+ }
232
+ for (let j = 0; j <= cursor; j++) {
233
+ if (Date.now() - startedAt > timeoutMs) {
234
+ return { proven: false, steps, timeoutHit: true };
235
+ }
236
+ const cj = all[j];
237
+ if (cj === undefined)
238
+ continue;
239
+ // --- Binary resolution
240
+ const resolvents = (0, resolve_1.resolveWithRecord)({ c1Idx: cursor, c2Idx: j, c1: ci, c2: cj });
241
+ for (const r of resolvents) {
242
+ if (r.resolvent.length === 0) {
243
+ steps.push({
244
+ rule: 'resolve',
245
+ from: [cursor, j],
246
+ result: r.resolvent,
247
+ substitution: {},
248
+ });
249
+ return finishSuccess();
250
+ }
251
+ const { idx, novel } = addClause(r.resolvent);
252
+ if (novel && idx >= 0) {
253
+ steps.push({
254
+ rule: 'resolve',
255
+ from: [cursor, j],
256
+ result: r.resolvent,
257
+ substitution: {},
258
+ });
259
+ if (steps.length >= maxSteps)
260
+ return { proven: false, steps, reason: 'max-steps' };
261
+ }
262
+ }
263
+ // --- Paramodulation in both directions
264
+ const paramods = (0, paramodulate_1.paramodulateAll)(cursor, ci, j, cj);
265
+ for (const p of paramods) {
266
+ if (p.resolvent.length === 0) {
267
+ steps.push({
268
+ rule: 'paramod',
269
+ from: [p.fromEqClause, p.fromTargetClause],
270
+ result: p.resolvent,
271
+ substitution: (0, term_utils_1.substToRecordTerm)(p.substitution),
272
+ });
273
+ return finishSuccess();
274
+ }
275
+ // Apply reflexivity resolution to the paramodulant before adding; this
276
+ // catches the common pattern where paramod produces e.g. ¬(a = a) ∨ ...
277
+ let toAdd = p.resolvent;
278
+ const reflexed = reflexivityResolveStep(toAdd);
279
+ if (reflexed !== null)
280
+ toAdd = reflexed.clause;
281
+ if (toAdd.length === 0) {
282
+ steps.push({
283
+ rule: 'paramod',
284
+ from: [p.fromEqClause, p.fromTargetClause],
285
+ result: toAdd,
286
+ substitution: (0, term_utils_1.substToRecordTerm)(p.substitution),
287
+ });
288
+ return finishSuccess();
289
+ }
290
+ const { idx, novel } = addClause(toAdd);
291
+ if (novel && idx >= 0) {
292
+ steps.push({
293
+ rule: 'paramod',
294
+ from: [p.fromEqClause, p.fromTargetClause],
295
+ result: toAdd,
296
+ substitution: (0, term_utils_1.substToRecordTerm)(p.substitution),
297
+ });
298
+ if (steps.length >= maxSteps)
299
+ return { proven: false, steps, reason: 'max-steps' };
300
+ }
301
+ }
302
+ }
303
+ cursor++;
304
+ }
305
+ return { proven: false, steps, reason: 'saturated' };
306
+ }
307
+ //# sourceMappingURL=prove.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prove.js","sourceRoot":"","sources":["../../src/fol-prover-equality/prove.ts"],"names":[],"mappings":";;AAsIA,8CAiLC;AAGQ,sDAAqB;AAxT9B,2CAA0C;AAC1C,mDAA0D;AAC1D,+CAAuD;AACvD,iDAAiD;AACjD,6CAA8C;AAC9C,6CAA2F;AAE3F,mCAAuC;AAEvC,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAChC,MAAM,iBAAiB,GAAG,IAAI,CAAC;AAE/B;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAE9D,SAAS,sBAAsB,CAAC,GAAe;IAC7C,IAAI,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,oBAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;IAC3E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,qBAAqB,CAAC,CAAY;IACzC,OAAO,CAAC,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAU;IACnC,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;QACnD,MAAM,IAAI,GAAY,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAC9E,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACnC,OAAO,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,kBAAkB;IACzB,mDAAmD;IACnD,OAAO;QACL;YACE;gBACE,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,oBAAY;gBACvB,IAAI,EAAE;oBACJ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;oBACjC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE;iBAClC;aACF;SACF;KACF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,CAAY;IAC/B,oDAAoD;IACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAChB,IAAI,EAAE,KAAK,SAAS,IAAI,EAAE,KAAK,SAAS;gBAAE,SAAS;YACnD,IAAI,EAAE,CAAC,OAAO,KAAK,EAAE,CAAC,OAAO;gBAAE,SAAS;YACxC,IAAI,EAAE,CAAC,SAAS,KAAK,EAAE,CAAC,SAAS;gBAAE,SAAS;YAC5C,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM;gBAAE,SAAS;YAChD,IAAI,IAAI,GAAG,IAAI,CAAC;YAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACxC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;oBACvC,IAAI,GAAG,KAAK,CAAC;oBACb,MAAM;gBACR,CAAC;gBACD,IAAI,CAAC,IAAA,uBAAU,EAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;oBACtB,IAAI,GAAG,KAAK,CAAC;oBACb,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,IAAI;gBAAE,OAAO,IAAI,CAAC;QACxB,CAAC;IACH,CAAC;IACD,8CAA8C;IAC9C,KAAK,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC;QACpB,IAAI,CAAC,IAAA,8BAAiB,EAAC,GAAG,CAAC,IAAI,GAAG,CAAC,OAAO;YAAE,SAAS;QACrD,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QACjD,IAAI,IAAA,uBAAU,EAAC,CAAC,EAAE,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,sBAAsB,CAC7B,CAAY;IAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,GAAG,KAAK,SAAS;YAAE,SAAS;QAChC,IAAI,CAAC,IAAA,8BAAiB,EAAC,GAAG,CAAC;YAAE,SAAS;QACtC,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,SAAS;QAC3B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;YAAE,SAAS;QACjD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAmB,CAAC;QACzC,MAAM,CAAC,GAAG,IAAA,aAAK,EAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,KAAK,IAAI;YAAE,SAAS;QACzB,MAAM,IAAI,GAAG,CAAC;aACX,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,OAAO,EAAE,CAAC,CAAC,OAAO;YAClB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,iBAAS,EAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SAC7C,CAAC,CAAC,CAAC;QACN,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACjC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAgB,iBAAiB,CAC/B,QAAmB,EACnB,IAAa,EACb,OAA6B,EAAE;IAE/B,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,kBAAkB,CAAC;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,iBAAiB,CAAC;IAEpD,mFAAmF;IACnF,MAAM,oBAAoB,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAExC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,WAAK,EAAC,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,WAAW,GAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,MAAM,iBAAiB,GAAG,IAAA,WAAK,EAAC,WAAW,CAAC,CAAC;IAE7C,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACpE,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAEpE,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7F,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;IACrC,CAAC;IAED,MAAM,GAAG,GAAgB,EAAE,CAAC;IAC5B,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAE/B,MAAM,SAAS,GAAG,CAAC,CAAY,EAAmC,EAAE;QAClE,IAAI,WAAW,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,IAAA,sBAAS,EAAC,CAAC,CAAC,CAAC;QACzB,MAAM,WAAW,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAA,sBAAS,EAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,CAAC;QAC7E,IAAI,WAAW,IAAI,CAAC;YAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACZ,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IAC9C,CAAC,CAAC;IAEF,gFAAgF;IAChF,KAAK,MAAM,CAAC,IAAI,kBAAkB,EAAE;QAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,cAAc;QAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,cAAc;QAAE,SAAS,CAAC,CAAC,CAAC,CAAC;IAE7C,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,MAAM,aAAa,GAAG,GAAwB,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAE3E,iFAAiF;IACjF,+EAA+E;IAC/E,6BAA6B;IAC7B,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,OAAO,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;YACvC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;QACpD,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;YAC7B,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACvD,CAAC;QACD,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;QACvB,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;YACrB,MAAM,EAAE,CAAC;YACT,SAAS;QACX,CAAC;QAED,uDAAuD;QACvD,CAAC;YACC,MAAM,CAAC,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACrC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,MAAM,CAAC;wBACd,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,YAAY,EAAE,IAAA,8BAAiB,EAAC,CAAC,CAAC,KAAK,CAAC;qBACzC,CAAC,CAAC;oBACH,OAAO,aAAa,EAAE,CAAC;gBACzB,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,CAAC,MAAM,CAAC;wBACd,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,YAAY,EAAE,IAAA,8BAAiB,EAAC,CAAC,CAAC,KAAK,CAAC;qBACzC,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,4CAA4C;QAC5C,KAAK,MAAM,QAAQ,IAAI,IAAA,2BAAc,EAAC,EAAE,CAAC,EAAE,CAAC;YAC1C,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,CAAC;oBACd,MAAM,EAAE,QAAQ;oBAChB,YAAY,EAAE,EAAE;iBACjB,CAAC,CAAC;gBACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBAAE,OAAO,aAAa,EAAE,CAAC;YACpD,CAAC;YACD,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;gBAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;QACrF,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,SAAS,EAAE,CAAC;gBACvC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACpD,CAAC;YACD,MAAM,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YAClB,IAAI,EAAE,KAAK,SAAS;gBAAE,SAAS;YAE/B,wBAAwB;YACxB,MAAM,UAAU,GAAG,IAAA,2BAAiB,EAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;YAClF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;gBAC3B,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;wBACjB,MAAM,EAAE,CAAC,CAAC,SAAS;wBACnB,YAAY,EAAE,EAAE;qBACjB,CAAC,CAAC;oBACH,OAAO,aAAa,EAAE,CAAC;gBACzB,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;gBAC9C,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;wBACjB,MAAM,EAAE,CAAC,CAAC,SAAS;wBACnB,YAAY,EAAE,EAAE;qBACjB,CAAC,CAAC;oBACH,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;wBAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;gBACrF,CAAC;YACH,CAAC;YAED,wCAAwC;YACxC,MAAM,QAAQ,GAAG,IAAA,8BAAe,EAAC,MAAM,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;YACpD,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACzB,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,gBAAgB,CAAC;wBAC1C,MAAM,EAAE,CAAC,CAAC,SAAS;wBACnB,YAAY,EAAE,IAAA,8BAAiB,EAAC,CAAC,CAAC,YAAY,CAAC;qBAChD,CAAC,CAAC;oBACH,OAAO,aAAa,EAAE,CAAC;gBACzB,CAAC;gBACD,uEAAuE;gBACvE,wEAAwE;gBACxE,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC;gBACxB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,QAAQ,KAAK,IAAI;oBAAE,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC/C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,gBAAgB,CAAC;wBAC1C,MAAM,EAAE,KAAK;wBACb,YAAY,EAAE,IAAA,8BAAiB,EAAC,CAAC,CAAC,YAAY,CAAC;qBAChD,CAAC,CAAC;oBACH,OAAO,aAAa,EAAE,CAAC;gBACzB,CAAC;gBACD,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;gBACxC,IAAI,KAAK,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,gBAAgB,CAAC;wBAC1C,MAAM,EAAE,KAAK;wBACb,YAAY,EAAE,IAAA,8BAAiB,EAAC,CAAC,CAAC,YAAY,CAAC;qBAChD,CAAC,CAAC;oBACH,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ;wBAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;gBACrF,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,EAAE,CAAC;IACX,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { FOLClause, FOLLiteral, FOLTerm } from '../fol-prover/types';
2
+ export declare function isEqualityLiteral(lit: FOLLiteral): boolean;
3
+ export declare function termKey(t: FOLTerm): string;
4
+ export declare function literalKey(lit: FOLLiteral): string;
5
+ export declare function clauseKey(c: FOLClause): string;
6
+ export declare function termsEqual(a: FOLTerm, b: FOLTerm): boolean;
7
+ export declare function cloneTerm(t: FOLTerm): FOLTerm;
8
+ export declare function cloneLiteral(lit: FOLLiteral): FOLLiteral;
9
+ export declare function cloneClause(c: FOLClause): FOLClause;
10
+ export declare function termSize(t: FOLTerm): number;
11
+ export declare function collectVars(t: FOLTerm, out: Set<string>): void;
12
+ export declare function termVars(t: FOLTerm): Set<string>;
13
+ /**
14
+ * Returns the subterm of `t` at the given position. Position [] returns t itself;
15
+ * position [i, j, ...] descends into args[i], then args[j], etc.
16
+ */
17
+ export declare function termAt(t: FOLTerm, pos: number[]): FOLTerm | null;
18
+ /**
19
+ * Returns a new term equal to `t` but with the subterm at `pos` replaced by `replacement`.
20
+ * If pos is invalid returns `t` unchanged.
21
+ */
22
+ export declare function replaceAt(t: FOLTerm, pos: number[], replacement: FOLTerm): FOLTerm;
23
+ /**
24
+ * Enumerate every (non-empty) position inside the term tree, including the root.
25
+ * Variables and constants only yield their own position; functions also yield children.
26
+ */
27
+ export declare function allPositions(t: FOLTerm): number[][];
28
+ /**
29
+ * Enumerate positions for a literal as (argIndex, ...termPath). Useful for paramodulation
30
+ * targets that point inside a literal's args.
31
+ */
32
+ export declare function allLiteralPositions(lit: FOLLiteral): number[][];
33
+ export declare function getLiteralSubterm(lit: FOLLiteral, pos: number[]): FOLTerm | null;
34
+ export declare function replaceLiteralSubterm(lit: FOLLiteral, pos: number[], replacement: FOLTerm): FOLLiteral;
35
+ /**
36
+ * Lexicographic path ordering–ish comparison used for orienting equations and
37
+ * for selecting which side rewrites the other in demodulation. Strictly compares
38
+ * (size, then key) so that the "bigger" term is rewritten into the "smaller" one.
39
+ */
40
+ export declare function compareTerms(a: FOLTerm, b: FOLTerm): number;
41
+ export declare function freshenClause(c: FOLClause): FOLClause;
42
+ export declare function substToRecordTerm(s: Map<string, FOLTerm>): Record<string, FOLTerm>;
43
+ //# sourceMappingURL=term-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-utils.d.ts","sourceRoot":"","sources":["../../src/fol-prover-equality/term-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG1E,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAE1D;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAI1C;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,CAGlD;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,CAE9C;AAED,wBAAgB,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAE1D;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAI7C;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,UAAU,GAAG,UAAU,CAMxD;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAEnD;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,CAM3C;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,CAO9D;AAED,wBAAgB,QAAQ,CAAC,CAAC,EAAE,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAIhD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAWhE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,OAAO,GAAG,OAAO,CAUlF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,GAAG,MAAM,EAAE,EAAE,CAanD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,UAAU,GAAG,MAAM,EAAE,EAAE,CAU/D;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,GAAG,IAAI,CAOhF;AAED,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,UAAU,EACf,GAAG,EAAE,MAAM,EAAE,EACb,WAAW,EAAE,OAAO,GACnB,UAAU,CASZ;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,MAAM,CAS3D;AAID,wBAAgB,aAAa,CAAC,CAAC,EAAE,SAAS,GAAG,SAAS,CAoBrD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAIlF"}