@stevenvo780/st-lang 4.2.0 → 4.4.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 (575) hide show
  1. package/dist/index.d.ts +8 -0
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +70 -1
  4. package/dist/index.js.map +1 -1
  5. package/dist/lambda-calc/church.d.ts +8 -0
  6. package/dist/lambda-calc/church.d.ts.map +1 -0
  7. package/dist/lambda-calc/church.js +67 -0
  8. package/dist/lambda-calc/church.js.map +1 -0
  9. package/dist/lambda-calc/combinators.d.ts +8 -0
  10. package/dist/lambda-calc/combinators.d.ts.map +1 -0
  11. package/dist/lambda-calc/combinators.js +24 -0
  12. package/dist/lambda-calc/combinators.js.map +1 -0
  13. package/dist/lambda-calc/index.d.ts +8 -0
  14. package/dist/lambda-calc/index.d.ts.map +1 -0
  15. package/dist/lambda-calc/index.js +48 -0
  16. package/dist/lambda-calc/index.js.map +1 -0
  17. package/dist/lambda-calc/reduce.d.ts +18 -0
  18. package/dist/lambda-calc/reduce.d.ts.map +1 -0
  19. package/dist/lambda-calc/reduce.js +174 -0
  20. package/dist/lambda-calc/reduce.js.map +1 -0
  21. package/dist/lambda-calc/substitution.d.ts +6 -0
  22. package/dist/lambda-calc/substitution.d.ts.map +1 -0
  23. package/dist/lambda-calc/substitution.js +120 -0
  24. package/dist/lambda-calc/substitution.js.map +1 -0
  25. package/dist/lambda-calc/types.d.ts +19 -0
  26. package/dist/lambda-calc/types.d.ts.map +1 -0
  27. package/dist/lambda-calc/types.js +72 -0
  28. package/dist/lambda-calc/types.js.map +1 -0
  29. package/dist/mltt/equality.d.ts +9 -0
  30. package/dist/mltt/equality.d.ts.map +1 -0
  31. package/dist/mltt/equality.js +79 -0
  32. package/dist/mltt/equality.js.map +1 -0
  33. package/dist/mltt/index.d.ts +8 -0
  34. package/dist/mltt/index.d.ts.map +1 -0
  35. package/dist/mltt/index.js +49 -0
  36. package/dist/mltt/index.js.map +1 -0
  37. package/dist/mltt/infer.d.ts +17 -0
  38. package/dist/mltt/infer.d.ts.map +1 -0
  39. package/dist/mltt/infer.js +269 -0
  40. package/dist/mltt/infer.js.map +1 -0
  41. package/dist/mltt/normalize.d.ts +7 -0
  42. package/dist/mltt/normalize.d.ts.map +1 -0
  43. package/dist/mltt/normalize.js +131 -0
  44. package/dist/mltt/normalize.js.map +1 -0
  45. package/dist/mltt/substitute.d.ts +4 -0
  46. package/dist/mltt/substitute.d.ts.map +1 -0
  47. package/dist/mltt/substitute.js +94 -0
  48. package/dist/mltt/substitute.js.map +1 -0
  49. package/dist/mltt/types.d.ts +72 -0
  50. package/dist/mltt/types.d.ts.map +1 -0
  51. package/dist/mltt/types.js +211 -0
  52. package/dist/mltt/types.js.map +1 -0
  53. package/dist/profiles/intuitionistic-nj/formula.d.ts +19 -0
  54. package/dist/profiles/intuitionistic-nj/formula.d.ts.map +1 -0
  55. package/dist/profiles/intuitionistic-nj/formula.js +99 -0
  56. package/dist/profiles/intuitionistic-nj/formula.js.map +1 -0
  57. package/dist/profiles/intuitionistic-nj/index.d.ts +5 -0
  58. package/dist/profiles/intuitionistic-nj/index.d.ts.map +1 -0
  59. package/dist/profiles/intuitionistic-nj/index.js +24 -0
  60. package/dist/profiles/intuitionistic-nj/index.js.map +1 -0
  61. package/dist/profiles/intuitionistic-nj/kripke.d.ts +17 -0
  62. package/dist/profiles/intuitionistic-nj/kripke.d.ts.map +1 -0
  63. package/dist/profiles/intuitionistic-nj/kripke.js +206 -0
  64. package/dist/profiles/intuitionistic-nj/kripke.js.map +1 -0
  65. package/dist/profiles/intuitionistic-nj/prover.d.ts +13 -0
  66. package/dist/profiles/intuitionistic-nj/prover.d.ts.map +1 -0
  67. package/dist/profiles/intuitionistic-nj/prover.js +418 -0
  68. package/dist/profiles/intuitionistic-nj/prover.js.map +1 -0
  69. package/dist/profiles/intuitionistic-nj/types.d.ts +55 -0
  70. package/dist/profiles/intuitionistic-nj/types.d.ts.map +1 -0
  71. package/dist/profiles/intuitionistic-nj/types.js +21 -0
  72. package/dist/profiles/intuitionistic-nj/types.js.map +1 -0
  73. package/dist/profiles/many-valued/index.d.ts +39 -0
  74. package/dist/profiles/many-valued/index.d.ts.map +1 -0
  75. package/dist/profiles/many-valued/index.js +250 -0
  76. package/dist/profiles/many-valued/index.js.map +1 -0
  77. package/dist/profiles/modal-frame-axioms/formula.d.ts +23 -0
  78. package/dist/profiles/modal-frame-axioms/formula.d.ts.map +1 -0
  79. package/dist/profiles/modal-frame-axioms/formula.js +158 -0
  80. package/dist/profiles/modal-frame-axioms/formula.js.map +1 -0
  81. package/dist/profiles/modal-frame-axioms/index.d.ts +6 -0
  82. package/dist/profiles/modal-frame-axioms/index.d.ts.map +1 -0
  83. package/dist/profiles/modal-frame-axioms/index.js +41 -0
  84. package/dist/profiles/modal-frame-axioms/index.js.map +1 -0
  85. package/dist/profiles/modal-frame-axioms/systems.d.ts +29 -0
  86. package/dist/profiles/modal-frame-axioms/systems.d.ts.map +1 -0
  87. package/dist/profiles/modal-frame-axioms/systems.js +96 -0
  88. package/dist/profiles/modal-frame-axioms/systems.js.map +1 -0
  89. package/dist/profiles/modal-frame-axioms/tableau.d.ts +12 -0
  90. package/dist/profiles/modal-frame-axioms/tableau.d.ts.map +1 -0
  91. package/dist/profiles/modal-frame-axioms/tableau.js +299 -0
  92. package/dist/profiles/modal-frame-axioms/tableau.js.map +1 -0
  93. package/dist/profiles/modal-frame-axioms/types.d.ts +61 -0
  94. package/dist/profiles/modal-frame-axioms/types.d.ts.map +1 -0
  95. package/dist/profiles/modal-frame-axioms/types.js +27 -0
  96. package/dist/profiles/modal-frame-axioms/types.js.map +1 -0
  97. package/dist/profiles/mu-calculus/check.d.ts +15 -0
  98. package/dist/profiles/mu-calculus/check.d.ts.map +1 -0
  99. package/dist/profiles/mu-calculus/check.js +172 -0
  100. package/dist/profiles/mu-calculus/check.js.map +1 -0
  101. package/dist/profiles/mu-calculus/ctl-translate.d.ts +61 -0
  102. package/dist/profiles/mu-calculus/ctl-translate.d.ts.map +1 -0
  103. package/dist/profiles/mu-calculus/ctl-translate.js +181 -0
  104. package/dist/profiles/mu-calculus/ctl-translate.js.map +1 -0
  105. package/dist/profiles/mu-calculus/index.d.ts +7 -0
  106. package/dist/profiles/mu-calculus/index.d.ts.map +1 -0
  107. package/dist/profiles/mu-calculus/index.js +33 -0
  108. package/dist/profiles/mu-calculus/index.js.map +1 -0
  109. package/dist/profiles/mu-calculus/types.d.ts +51 -0
  110. package/dist/profiles/mu-calculus/types.d.ts.map +1 -0
  111. package/dist/profiles/mu-calculus/types.js +42 -0
  112. package/dist/profiles/mu-calculus/types.js.map +1 -0
  113. package/dist/profiles/mu-calculus/wellformed.d.ts +40 -0
  114. package/dist/profiles/mu-calculus/wellformed.d.ts.map +1 -0
  115. package/dist/profiles/mu-calculus/wellformed.js +160 -0
  116. package/dist/profiles/mu-calculus/wellformed.js.map +1 -0
  117. package/dist/profiles/sequent-lk/cut-elimination.d.ts +11 -0
  118. package/dist/profiles/sequent-lk/cut-elimination.d.ts.map +1 -0
  119. package/dist/profiles/sequent-lk/cut-elimination.js +216 -0
  120. package/dist/profiles/sequent-lk/cut-elimination.js.map +1 -0
  121. package/dist/profiles/sequent-lk/index.d.ts +5 -0
  122. package/dist/profiles/sequent-lk/index.d.ts.map +1 -0
  123. package/dist/profiles/sequent-lk/index.js +24 -0
  124. package/dist/profiles/sequent-lk/index.js.map +1 -0
  125. package/dist/profiles/sequent-lk/prover.d.ts +25 -0
  126. package/dist/profiles/sequent-lk/prover.d.ts.map +1 -0
  127. package/dist/profiles/sequent-lk/prover.js +532 -0
  128. package/dist/profiles/sequent-lk/prover.js.map +1 -0
  129. package/dist/profiles/sequent-lk/types.d.ts +55 -0
  130. package/dist/profiles/sequent-lk/types.d.ts.map +1 -0
  131. package/dist/profiles/sequent-lk/types.js +18 -0
  132. package/dist/profiles/sequent-lk/types.js.map +1 -0
  133. package/dist/profiles/sequent-lk/util.d.ts +18 -0
  134. package/dist/profiles/sequent-lk/util.d.ts.map +1 -0
  135. package/dist/profiles/sequent-lk/util.js +71 -0
  136. package/dist/profiles/sequent-lk/util.js.map +1 -0
  137. package/dist/profiles/substructural/index.d.ts +4 -0
  138. package/dist/profiles/substructural/index.d.ts.map +1 -0
  139. package/dist/profiles/substructural/index.js +22 -0
  140. package/dist/profiles/substructural/index.js.map +1 -0
  141. package/dist/profiles/substructural/prover.d.ts +13 -0
  142. package/dist/profiles/substructural/prover.d.ts.map +1 -0
  143. package/dist/profiles/substructural/prover.js +481 -0
  144. package/dist/profiles/substructural/prover.js.map +1 -0
  145. package/dist/profiles/substructural/types.d.ts +72 -0
  146. package/dist/profiles/substructural/types.d.ts.map +1 -0
  147. package/dist/profiles/substructural/types.js +27 -0
  148. package/dist/profiles/substructural/types.js.map +1 -0
  149. package/dist/refinement-types/checker.d.ts +19 -0
  150. package/dist/refinement-types/checker.d.ts.map +1 -0
  151. package/dist/refinement-types/checker.js +248 -0
  152. package/dist/refinement-types/checker.js.map +1 -0
  153. package/dist/refinement-types/index.d.ts +11 -0
  154. package/dist/refinement-types/index.d.ts.map +1 -0
  155. package/dist/refinement-types/index.js +51 -0
  156. package/dist/refinement-types/index.js.map +1 -0
  157. package/dist/refinement-types/predicate.d.ts +31 -0
  158. package/dist/refinement-types/predicate.d.ts.map +1 -0
  159. package/dist/refinement-types/predicate.js +369 -0
  160. package/dist/refinement-types/predicate.js.map +1 -0
  161. package/dist/refinement-types/solver.d.ts +24 -0
  162. package/dist/refinement-types/solver.d.ts.map +1 -0
  163. package/dist/refinement-types/solver.js +207 -0
  164. package/dist/refinement-types/solver.js.map +1 -0
  165. package/dist/refinement-types/subtype.d.ts +14 -0
  166. package/dist/refinement-types/subtype.d.ts.map +1 -0
  167. package/dist/refinement-types/subtype.js +39 -0
  168. package/dist/refinement-types/subtype.js.map +1 -0
  169. package/dist/refinement-types/types.d.ts +64 -0
  170. package/dist/refinement-types/types.d.ts.map +1 -0
  171. package/dist/refinement-types/types.js +130 -0
  172. package/dist/refinement-types/types.js.map +1 -0
  173. package/dist/runtime/abduction/entails.d.ts +21 -0
  174. package/dist/runtime/abduction/entails.d.ts.map +1 -0
  175. package/dist/runtime/abduction/entails.js +308 -0
  176. package/dist/runtime/abduction/entails.js.map +1 -0
  177. package/dist/runtime/abduction/find.d.ts +18 -0
  178. package/dist/runtime/abduction/find.d.ts.map +1 -0
  179. package/dist/runtime/abduction/find.js +202 -0
  180. package/dist/runtime/abduction/find.js.map +1 -0
  181. package/dist/runtime/abduction/index.d.ts +4 -0
  182. package/dist/runtime/abduction/index.d.ts.map +1 -0
  183. package/dist/runtime/abduction/index.js +26 -0
  184. package/dist/runtime/abduction/index.js.map +1 -0
  185. package/dist/runtime/abduction/types.d.ts +78 -0
  186. package/dist/runtime/abduction/types.d.ts.map +1 -0
  187. package/dist/runtime/abduction/types.js +23 -0
  188. package/dist/runtime/abduction/types.js.map +1 -0
  189. package/dist/runtime/anti-unification/anti-unify.d.ts +22 -0
  190. package/dist/runtime/anti-unification/anti-unify.d.ts.map +1 -0
  191. package/dist/runtime/anti-unification/anti-unify.js +154 -0
  192. package/dist/runtime/anti-unification/anti-unify.js.map +1 -0
  193. package/dist/runtime/anti-unification/index.d.ts +6 -0
  194. package/dist/runtime/anti-unification/index.d.ts.map +1 -0
  195. package/dist/runtime/anti-unification/index.js +23 -0
  196. package/dist/runtime/anti-unification/index.js.map +1 -0
  197. package/dist/runtime/anti-unification/many.d.ts +49 -0
  198. package/dist/runtime/anti-unification/many.d.ts.map +1 -0
  199. package/dist/runtime/anti-unification/many.js +185 -0
  200. package/dist/runtime/anti-unification/many.js.map +1 -0
  201. package/dist/runtime/anti-unification/term-utils.d.ts +40 -0
  202. package/dist/runtime/anti-unification/term-utils.d.ts.map +1 -0
  203. package/dist/runtime/anti-unification/term-utils.js +173 -0
  204. package/dist/runtime/anti-unification/term-utils.js.map +1 -0
  205. package/dist/runtime/anti-unification/types.d.ts +41 -0
  206. package/dist/runtime/anti-unification/types.d.ts.map +1 -0
  207. package/dist/runtime/anti-unification/types.js +26 -0
  208. package/dist/runtime/anti-unification/types.js.map +1 -0
  209. package/dist/runtime/bayesian/factor.d.ts +22 -0
  210. package/dist/runtime/bayesian/factor.d.ts.map +1 -0
  211. package/dist/runtime/bayesian/factor.js +249 -0
  212. package/dist/runtime/bayesian/factor.js.map +1 -0
  213. package/dist/runtime/bayesian/index.d.ts +3 -0
  214. package/dist/runtime/bayesian/index.d.ts.map +1 -0
  215. package/dist/runtime/bayesian/index.js +25 -0
  216. package/dist/runtime/bayesian/index.js.map +1 -0
  217. package/dist/runtime/bayesian/inference.d.ts +6 -0
  218. package/dist/runtime/bayesian/inference.d.ts.map +1 -0
  219. package/dist/runtime/bayesian/inference.js +260 -0
  220. package/dist/runtime/bayesian/inference.js.map +1 -0
  221. package/dist/runtime/bayesian/types.d.ts +19 -0
  222. package/dist/runtime/bayesian/types.d.ts.map +1 -0
  223. package/dist/runtime/bayesian/types.js +9 -0
  224. package/dist/runtime/bayesian/types.js.map +1 -0
  225. package/dist/runtime/bisimulation/index.d.ts +4 -0
  226. package/dist/runtime/bisimulation/index.d.ts.map +1 -0
  227. package/dist/runtime/bisimulation/index.js +21 -0
  228. package/dist/runtime/bisimulation/index.js.map +1 -0
  229. package/dist/runtime/bisimulation/operations.d.ts +40 -0
  230. package/dist/runtime/bisimulation/operations.d.ts.map +1 -0
  231. package/dist/runtime/bisimulation/operations.js +219 -0
  232. package/dist/runtime/bisimulation/operations.js.map +1 -0
  233. package/dist/runtime/bisimulation/paige-tarjan.d.ts +8 -0
  234. package/dist/runtime/bisimulation/paige-tarjan.d.ts.map +1 -0
  235. package/dist/runtime/bisimulation/paige-tarjan.js +199 -0
  236. package/dist/runtime/bisimulation/paige-tarjan.js.map +1 -0
  237. package/dist/runtime/bisimulation/types.d.ts +26 -0
  238. package/dist/runtime/bisimulation/types.d.ts.map +1 -0
  239. package/dist/runtime/bisimulation/types.js +22 -0
  240. package/dist/runtime/bisimulation/types.js.map +1 -0
  241. package/dist/runtime/csp/ac3.d.ts +20 -0
  242. package/dist/runtime/csp/ac3.d.ts.map +1 -0
  243. package/dist/runtime/csp/ac3.js +165 -0
  244. package/dist/runtime/csp/ac3.js.map +1 -0
  245. package/dist/runtime/csp/backtrack.d.ts +15 -0
  246. package/dist/runtime/csp/backtrack.d.ts.map +1 -0
  247. package/dist/runtime/csp/backtrack.js +233 -0
  248. package/dist/runtime/csp/backtrack.js.map +1 -0
  249. package/dist/runtime/csp/builtins.d.ts +27 -0
  250. package/dist/runtime/csp/builtins.d.ts.map +1 -0
  251. package/dist/runtime/csp/builtins.js +109 -0
  252. package/dist/runtime/csp/builtins.js.map +1 -0
  253. package/dist/runtime/csp/index.d.ts +5 -0
  254. package/dist/runtime/csp/index.d.ts.map +1 -0
  255. package/dist/runtime/csp/index.js +23 -0
  256. package/dist/runtime/csp/index.js.map +1 -0
  257. package/dist/runtime/csp/types.d.ts +54 -0
  258. package/dist/runtime/csp/types.d.ts.map +1 -0
  259. package/dist/runtime/csp/types.js +14 -0
  260. package/dist/runtime/csp/types.js.map +1 -0
  261. package/dist/runtime/fca/context.d.ts +46 -0
  262. package/dist/runtime/fca/context.d.ts.map +1 -0
  263. package/dist/runtime/fca/context.js +155 -0
  264. package/dist/runtime/fca/context.js.map +1 -0
  265. package/dist/runtime/fca/implications.d.ts +10 -0
  266. package/dist/runtime/fca/implications.d.ts.map +1 -0
  267. package/dist/runtime/fca/implications.js +33 -0
  268. package/dist/runtime/fca/implications.js.map +1 -0
  269. package/dist/runtime/fca/index.d.ts +6 -0
  270. package/dist/runtime/fca/index.d.ts.map +1 -0
  271. package/dist/runtime/fca/index.js +39 -0
  272. package/dist/runtime/fca/index.js.map +1 -0
  273. package/dist/runtime/fca/lattice.d.ts +10 -0
  274. package/dist/runtime/fca/lattice.d.ts.map +1 -0
  275. package/dist/runtime/fca/lattice.js +86 -0
  276. package/dist/runtime/fca/lattice.js.map +1 -0
  277. package/dist/runtime/fca/next-closure.d.ts +12 -0
  278. package/dist/runtime/fca/next-closure.d.ts.map +1 -0
  279. package/dist/runtime/fca/next-closure.js +99 -0
  280. package/dist/runtime/fca/next-closure.js.map +1 -0
  281. package/dist/runtime/fca/types.d.ts +31 -0
  282. package/dist/runtime/fca/types.d.ts.map +1 -0
  283. package/dist/runtime/fca/types.js +30 -0
  284. package/dist/runtime/fca/types.js.map +1 -0
  285. package/dist/runtime/markov-logic/grounding.d.ts +19 -0
  286. package/dist/runtime/markov-logic/grounding.d.ts.map +1 -0
  287. package/dist/runtime/markov-logic/grounding.js +252 -0
  288. package/dist/runtime/markov-logic/grounding.js.map +1 -0
  289. package/dist/runtime/markov-logic/index.d.ts +6 -0
  290. package/dist/runtime/markov-logic/index.d.ts.map +1 -0
  291. package/dist/runtime/markov-logic/index.js +47 -0
  292. package/dist/runtime/markov-logic/index.js.map +1 -0
  293. package/dist/runtime/markov-logic/inference.d.ts +77 -0
  294. package/dist/runtime/markov-logic/inference.d.ts.map +1 -0
  295. package/dist/runtime/markov-logic/inference.js +382 -0
  296. package/dist/runtime/markov-logic/inference.js.map +1 -0
  297. package/dist/runtime/markov-logic/parser.d.ts +25 -0
  298. package/dist/runtime/markov-logic/parser.d.ts.map +1 -0
  299. package/dist/runtime/markov-logic/parser.js +264 -0
  300. package/dist/runtime/markov-logic/parser.js.map +1 -0
  301. package/dist/runtime/markov-logic/types.d.ts +64 -0
  302. package/dist/runtime/markov-logic/types.d.ts.map +1 -0
  303. package/dist/runtime/markov-logic/types.js +17 -0
  304. package/dist/runtime/markov-logic/types.js.map +1 -0
  305. package/dist/runtime/pi-calculus/congruence.d.ts +15 -0
  306. package/dist/runtime/pi-calculus/congruence.d.ts.map +1 -0
  307. package/dist/runtime/pi-calculus/congruence.js +271 -0
  308. package/dist/runtime/pi-calculus/congruence.js.map +1 -0
  309. package/dist/runtime/pi-calculus/index.d.ts +6 -0
  310. package/dist/runtime/pi-calculus/index.d.ts.map +1 -0
  311. package/dist/runtime/pi-calculus/index.js +30 -0
  312. package/dist/runtime/pi-calculus/index.js.map +1 -0
  313. package/dist/runtime/pi-calculus/names.d.ts +28 -0
  314. package/dist/runtime/pi-calculus/names.d.ts.map +1 -0
  315. package/dist/runtime/pi-calculus/names.js +182 -0
  316. package/dist/runtime/pi-calculus/names.js.map +1 -0
  317. package/dist/runtime/pi-calculus/reduction.d.ts +25 -0
  318. package/dist/runtime/pi-calculus/reduction.d.ts.map +1 -0
  319. package/dist/runtime/pi-calculus/reduction.js +338 -0
  320. package/dist/runtime/pi-calculus/reduction.js.map +1 -0
  321. package/dist/runtime/pi-calculus/substitution.d.ts +11 -0
  322. package/dist/runtime/pi-calculus/substitution.d.ts.map +1 -0
  323. package/dist/runtime/pi-calculus/substitution.js +109 -0
  324. package/dist/runtime/pi-calculus/substitution.js.map +1 -0
  325. package/dist/runtime/pi-calculus/types.d.ts +38 -0
  326. package/dist/runtime/pi-calculus/types.d.ts.map +1 -0
  327. package/dist/runtime/pi-calculus/types.js +22 -0
  328. package/dist/runtime/pi-calculus/types.js.map +1 -0
  329. package/dist/runtime/planning/astar.d.ts +10 -0
  330. package/dist/runtime/planning/astar.d.ts.map +1 -0
  331. package/dist/runtime/planning/astar.js +155 -0
  332. package/dist/runtime/planning/astar.js.map +1 -0
  333. package/dist/runtime/planning/bfs.d.ts +17 -0
  334. package/dist/runtime/planning/bfs.d.ts.map +1 -0
  335. package/dist/runtime/planning/bfs.js +87 -0
  336. package/dist/runtime/planning/bfs.js.map +1 -0
  337. package/dist/runtime/planning/ground.d.ts +55 -0
  338. package/dist/runtime/planning/ground.d.ts.map +1 -0
  339. package/dist/runtime/planning/ground.js +154 -0
  340. package/dist/runtime/planning/ground.js.map +1 -0
  341. package/dist/runtime/planning/heuristic.d.ts +29 -0
  342. package/dist/runtime/planning/heuristic.d.ts.map +1 -0
  343. package/dist/runtime/planning/heuristic.js +172 -0
  344. package/dist/runtime/planning/heuristic.js.map +1 -0
  345. package/dist/runtime/planning/index.d.ts +6 -0
  346. package/dist/runtime/planning/index.d.ts.map +1 -0
  347. package/dist/runtime/planning/index.js +38 -0
  348. package/dist/runtime/planning/index.js.map +1 -0
  349. package/dist/runtime/planning/types.d.ts +100 -0
  350. package/dist/runtime/planning/types.d.ts.map +1 -0
  351. package/dist/runtime/planning/types.js +22 -0
  352. package/dist/runtime/planning/types.js.map +1 -0
  353. package/dist/runtime/proof-minify/index.d.ts +3 -0
  354. package/dist/runtime/proof-minify/index.d.ts.map +1 -0
  355. package/dist/runtime/proof-minify/index.js +13 -0
  356. package/dist/runtime/proof-minify/index.js.map +1 -0
  357. package/dist/runtime/proof-minify/minify.d.ts +13 -0
  358. package/dist/runtime/proof-minify/minify.d.ts.map +1 -0
  359. package/dist/runtime/proof-minify/minify.js +540 -0
  360. package/dist/runtime/proof-minify/minify.js.map +1 -0
  361. package/dist/runtime/proof-minify/types.d.ts +89 -0
  362. package/dist/runtime/proof-minify/types.d.ts.map +1 -0
  363. package/dist/runtime/proof-minify/types.js +16 -0
  364. package/dist/runtime/proof-minify/types.js.map +1 -0
  365. package/dist/runtime/symbolic-diff/constructors.d.ts +16 -0
  366. package/dist/runtime/symbolic-diff/constructors.d.ts.map +1 -0
  367. package/dist/runtime/symbolic-diff/constructors.js +75 -0
  368. package/dist/runtime/symbolic-diff/constructors.js.map +1 -0
  369. package/dist/runtime/symbolic-diff/differentiate.d.ts +22 -0
  370. package/dist/runtime/symbolic-diff/differentiate.d.ts.map +1 -0
  371. package/dist/runtime/symbolic-diff/differentiate.js +107 -0
  372. package/dist/runtime/symbolic-diff/differentiate.js.map +1 -0
  373. package/dist/runtime/symbolic-diff/evaluate.d.ts +3 -0
  374. package/dist/runtime/symbolic-diff/evaluate.d.ts.map +1 -0
  375. package/dist/runtime/symbolic-diff/evaluate.js +47 -0
  376. package/dist/runtime/symbolic-diff/evaluate.js.map +1 -0
  377. package/dist/runtime/symbolic-diff/index.d.ts +9 -0
  378. package/dist/runtime/symbolic-diff/index.d.ts.map +1 -0
  379. package/dist/runtime/symbolic-diff/index.js +34 -0
  380. package/dist/runtime/symbolic-diff/index.js.map +1 -0
  381. package/dist/runtime/symbolic-diff/parse.d.ts +16 -0
  382. package/dist/runtime/symbolic-diff/parse.d.ts.map +1 -0
  383. package/dist/runtime/symbolic-diff/parse.js +212 -0
  384. package/dist/runtime/symbolic-diff/parse.js.map +1 -0
  385. package/dist/runtime/symbolic-diff/simplify.d.ts +11 -0
  386. package/dist/runtime/symbolic-diff/simplify.d.ts.map +1 -0
  387. package/dist/runtime/symbolic-diff/simplify.js +214 -0
  388. package/dist/runtime/symbolic-diff/simplify.js.map +1 -0
  389. package/dist/runtime/symbolic-diff/stringify.d.ts +3 -0
  390. package/dist/runtime/symbolic-diff/stringify.d.ts.map +1 -0
  391. package/dist/runtime/symbolic-diff/stringify.js +69 -0
  392. package/dist/runtime/symbolic-diff/stringify.js.map +1 -0
  393. package/dist/runtime/symbolic-diff/types.d.ts +35 -0
  394. package/dist/runtime/symbolic-diff/types.d.ts.map +1 -0
  395. package/dist/runtime/symbolic-diff/types.js +9 -0
  396. package/dist/runtime/symbolic-diff/types.js.map +1 -0
  397. package/dist/runtime/term-rewriting/critical-pairs.d.ts +38 -0
  398. package/dist/runtime/term-rewriting/critical-pairs.d.ts.map +1 -0
  399. package/dist/runtime/term-rewriting/critical-pairs.js +109 -0
  400. package/dist/runtime/term-rewriting/critical-pairs.js.map +1 -0
  401. package/dist/runtime/term-rewriting/index.d.ts +9 -0
  402. package/dist/runtime/term-rewriting/index.d.ts.map +1 -0
  403. package/dist/runtime/term-rewriting/index.js +38 -0
  404. package/dist/runtime/term-rewriting/index.js.map +1 -0
  405. package/dist/runtime/term-rewriting/knuth-bendix.d.ts +29 -0
  406. package/dist/runtime/term-rewriting/knuth-bendix.d.ts.map +1 -0
  407. package/dist/runtime/term-rewriting/knuth-bendix.js +196 -0
  408. package/dist/runtime/term-rewriting/knuth-bendix.js.map +1 -0
  409. package/dist/runtime/term-rewriting/lpo.d.ts +17 -0
  410. package/dist/runtime/term-rewriting/lpo.d.ts.map +1 -0
  411. package/dist/runtime/term-rewriting/lpo.js +158 -0
  412. package/dist/runtime/term-rewriting/lpo.js.map +1 -0
  413. package/dist/runtime/term-rewriting/rewrite.d.ts +44 -0
  414. package/dist/runtime/term-rewriting/rewrite.d.ts.map +1 -0
  415. package/dist/runtime/term-rewriting/rewrite.js +189 -0
  416. package/dist/runtime/term-rewriting/rewrite.js.map +1 -0
  417. package/dist/runtime/term-rewriting/term-utils.d.ts +64 -0
  418. package/dist/runtime/term-rewriting/term-utils.d.ts.map +1 -0
  419. package/dist/runtime/term-rewriting/term-utils.js +360 -0
  420. package/dist/runtime/term-rewriting/term-utils.js.map +1 -0
  421. package/dist/runtime/term-rewriting/types.d.ts +66 -0
  422. package/dist/runtime/term-rewriting/types.d.ts.map +1 -0
  423. package/dist/runtime/term-rewriting/types.js +21 -0
  424. package/dist/runtime/term-rewriting/types.js.map +1 -0
  425. package/dist/runtime/theorem-cache/cache.d.ts +100 -0
  426. package/dist/runtime/theorem-cache/cache.d.ts.map +1 -0
  427. package/dist/runtime/theorem-cache/cache.js +213 -0
  428. package/dist/runtime/theorem-cache/cache.js.map +1 -0
  429. package/dist/runtime/theorem-cache/canonical.d.ts +59 -0
  430. package/dist/runtime/theorem-cache/canonical.d.ts.map +1 -0
  431. package/dist/runtime/theorem-cache/canonical.js +105 -0
  432. package/dist/runtime/theorem-cache/canonical.js.map +1 -0
  433. package/dist/runtime/theorem-cache/index.d.ts +6 -0
  434. package/dist/runtime/theorem-cache/index.d.ts.map +1 -0
  435. package/dist/runtime/theorem-cache/index.js +16 -0
  436. package/dist/runtime/theorem-cache/index.js.map +1 -0
  437. package/dist/runtime/theorem-cache/pattern.d.ts +24 -0
  438. package/dist/runtime/theorem-cache/pattern.d.ts.map +1 -0
  439. package/dist/runtime/theorem-cache/pattern.js +80 -0
  440. package/dist/runtime/theorem-cache/pattern.js.map +1 -0
  441. package/dist/system-f/index.d.ts +7 -0
  442. package/dist/system-f/index.d.ts.map +1 -0
  443. package/dist/system-f/index.js +48 -0
  444. package/dist/system-f/index.js.map +1 -0
  445. package/dist/system-f/infer.d.ts +9 -0
  446. package/dist/system-f/infer.d.ts.map +1 -0
  447. package/dist/system-f/infer.js +94 -0
  448. package/dist/system-f/infer.js.map +1 -0
  449. package/dist/system-f/reduce.d.ts +15 -0
  450. package/dist/system-f/reduce.d.ts.map +1 -0
  451. package/dist/system-f/reduce.js +259 -0
  452. package/dist/system-f/reduce.js.map +1 -0
  453. package/dist/system-f/types.d.ts +53 -0
  454. package/dist/system-f/types.d.ts.map +1 -0
  455. package/dist/system-f/types.js +157 -0
  456. package/dist/system-f/types.js.map +1 -0
  457. package/dist/tests/abduction/abduction.test.d.ts +2 -0
  458. package/dist/tests/abduction/abduction.test.d.ts.map +1 -0
  459. package/dist/tests/abduction/abduction.test.js +380 -0
  460. package/dist/tests/abduction/abduction.test.js.map +1 -0
  461. package/dist/tests/anti-unification/anti-unify.test.d.ts +2 -0
  462. package/dist/tests/anti-unification/anti-unify.test.d.ts.map +1 -0
  463. package/dist/tests/anti-unification/anti-unify.test.js +219 -0
  464. package/dist/tests/anti-unification/anti-unify.test.js.map +1 -0
  465. package/dist/tests/bayesian/bayesian.test.d.ts +2 -0
  466. package/dist/tests/bayesian/bayesian.test.d.ts.map +1 -0
  467. package/dist/tests/bayesian/bayesian.test.js +328 -0
  468. package/dist/tests/bayesian/bayesian.test.js.map +1 -0
  469. package/dist/tests/bisimulation/paige-tarjan.test.d.ts +2 -0
  470. package/dist/tests/bisimulation/paige-tarjan.test.d.ts.map +1 -0
  471. package/dist/tests/bisimulation/paige-tarjan.test.js +254 -0
  472. package/dist/tests/bisimulation/paige-tarjan.test.js.map +1 -0
  473. package/dist/tests/coverage-fill-aristotelian.test.js +1 -1
  474. package/dist/tests/coverage-fill-aristotelian.test.js.map +1 -1
  475. package/dist/tests/coverage-fill-fallacies.test.js +1 -1
  476. package/dist/tests/coverage-fill-fallacies.test.js.map +1 -1
  477. package/dist/tests/coverage-fill-format.test.js +1 -1
  478. package/dist/tests/coverage-fill-format.test.js.map +1 -1
  479. package/dist/tests/coverage-fill-intuitionistic.test.js +1 -1
  480. package/dist/tests/coverage-fill-intuitionistic.test.js.map +1 -1
  481. package/dist/tests/coverage-fill-probabilistic.test.js +1 -1
  482. package/dist/tests/coverage-fill-probabilistic.test.js.map +1 -1
  483. package/dist/tests/csp/csp.test.d.ts +2 -0
  484. package/dist/tests/csp/csp.test.d.ts.map +1 -0
  485. package/dist/tests/csp/csp.test.js +292 -0
  486. package/dist/tests/csp/csp.test.js.map +1 -0
  487. package/dist/tests/fca/fca.test.d.ts +2 -0
  488. package/dist/tests/fca/fca.test.d.ts.map +1 -0
  489. package/dist/tests/fca/fca.test.js +317 -0
  490. package/dist/tests/fca/fca.test.js.map +1 -0
  491. package/dist/tests/intuitionistic-nj/nj.test.d.ts +2 -0
  492. package/dist/tests/intuitionistic-nj/nj.test.d.ts.map +1 -0
  493. package/dist/tests/intuitionistic-nj/nj.test.js +216 -0
  494. package/dist/tests/intuitionistic-nj/nj.test.js.map +1 -0
  495. package/dist/tests/lambda-calc/lambda-calc.test.d.ts +2 -0
  496. package/dist/tests/lambda-calc/lambda-calc.test.d.ts.map +1 -0
  497. package/dist/tests/lambda-calc/lambda-calc.test.js +164 -0
  498. package/dist/tests/lambda-calc/lambda-calc.test.js.map +1 -0
  499. package/dist/tests/many-valued/many-valued.test.d.ts +2 -0
  500. package/dist/tests/many-valued/many-valued.test.d.ts.map +1 -0
  501. package/dist/tests/many-valued/many-valued.test.js +150 -0
  502. package/dist/tests/many-valued/many-valued.test.js.map +1 -0
  503. package/dist/tests/markov-logic/markov-logic.test.d.ts +2 -0
  504. package/dist/tests/markov-logic/markov-logic.test.d.ts.map +1 -0
  505. package/dist/tests/markov-logic/markov-logic.test.js +349 -0
  506. package/dist/tests/markov-logic/markov-logic.test.js.map +1 -0
  507. package/dist/tests/mltt/mltt.test.d.ts +2 -0
  508. package/dist/tests/mltt/mltt.test.d.ts.map +1 -0
  509. package/dist/tests/mltt/mltt.test.js +181 -0
  510. package/dist/tests/mltt/mltt.test.js.map +1 -0
  511. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts +2 -0
  512. package/dist/tests/modal-frame-axioms/frame-axioms.test.d.ts.map +1 -0
  513. package/dist/tests/modal-frame-axioms/frame-axioms.test.js +236 -0
  514. package/dist/tests/modal-frame-axioms/frame-axioms.test.js.map +1 -0
  515. package/dist/tests/mu-calculus/check.test.d.ts +2 -0
  516. package/dist/tests/mu-calculus/check.test.d.ts.map +1 -0
  517. package/dist/tests/mu-calculus/check.test.js +234 -0
  518. package/dist/tests/mu-calculus/check.test.js.map +1 -0
  519. package/dist/tests/pi-calculus/pi-calculus.test.d.ts +2 -0
  520. package/dist/tests/pi-calculus/pi-calculus.test.d.ts.map +1 -0
  521. package/dist/tests/pi-calculus/pi-calculus.test.js +273 -0
  522. package/dist/tests/pi-calculus/pi-calculus.test.js.map +1 -0
  523. package/dist/tests/planning/planning.test.d.ts +2 -0
  524. package/dist/tests/planning/planning.test.d.ts.map +1 -0
  525. package/dist/tests/planning/planning.test.js +397 -0
  526. package/dist/tests/planning/planning.test.js.map +1 -0
  527. package/dist/tests/proof-minify/minify.test.d.ts +2 -0
  528. package/dist/tests/proof-minify/minify.test.d.ts.map +1 -0
  529. package/dist/tests/proof-minify/minify.test.js +281 -0
  530. package/dist/tests/proof-minify/minify.test.js.map +1 -0
  531. package/dist/tests/refinement-types/refinement-types.test.d.ts +2 -0
  532. package/dist/tests/refinement-types/refinement-types.test.d.ts.map +1 -0
  533. package/dist/tests/refinement-types/refinement-types.test.js +174 -0
  534. package/dist/tests/refinement-types/refinement-types.test.js.map +1 -0
  535. package/dist/tests/sequent-lk/prover.test.d.ts +2 -0
  536. package/dist/tests/sequent-lk/prover.test.d.ts.map +1 -0
  537. package/dist/tests/sequent-lk/prover.test.js +317 -0
  538. package/dist/tests/sequent-lk/prover.test.js.map +1 -0
  539. package/dist/tests/substructural/prover.test.d.ts +2 -0
  540. package/dist/tests/substructural/prover.test.d.ts.map +1 -0
  541. package/dist/tests/substructural/prover.test.js +271 -0
  542. package/dist/tests/substructural/prover.test.js.map +1 -0
  543. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts +2 -0
  544. package/dist/tests/symbolic-diff/symbolic-diff.test.d.ts.map +1 -0
  545. package/dist/tests/symbolic-diff/symbolic-diff.test.js +278 -0
  546. package/dist/tests/symbolic-diff/symbolic-diff.test.js.map +1 -0
  547. package/dist/tests/system-f/system-f.test.d.ts +2 -0
  548. package/dist/tests/system-f/system-f.test.d.ts.map +1 -0
  549. package/dist/tests/system-f/system-f.test.js +217 -0
  550. package/dist/tests/system-f/system-f.test.js.map +1 -0
  551. package/dist/tests/term-rewriting/critical-pairs.test.d.ts +2 -0
  552. package/dist/tests/term-rewriting/critical-pairs.test.d.ts.map +1 -0
  553. package/dist/tests/term-rewriting/critical-pairs.test.js +34 -0
  554. package/dist/tests/term-rewriting/critical-pairs.test.js.map +1 -0
  555. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts +2 -0
  556. package/dist/tests/term-rewriting/knuth-bendix.test.d.ts.map +1 -0
  557. package/dist/tests/term-rewriting/knuth-bendix.test.js +94 -0
  558. package/dist/tests/term-rewriting/knuth-bendix.test.js.map +1 -0
  559. package/dist/tests/term-rewriting/lpo.test.d.ts +2 -0
  560. package/dist/tests/term-rewriting/lpo.test.d.ts.map +1 -0
  561. package/dist/tests/term-rewriting/lpo.test.js +57 -0
  562. package/dist/tests/term-rewriting/lpo.test.js.map +1 -0
  563. package/dist/tests/term-rewriting/rewrite.test.d.ts +2 -0
  564. package/dist/tests/term-rewriting/rewrite.test.d.ts.map +1 -0
  565. package/dist/tests/term-rewriting/rewrite.test.js +56 -0
  566. package/dist/tests/term-rewriting/rewrite.test.js.map +1 -0
  567. package/dist/tests/term-rewriting/term-utils.test.d.ts +2 -0
  568. package/dist/tests/term-rewriting/term-utils.test.d.ts.map +1 -0
  569. package/dist/tests/term-rewriting/term-utils.test.js +58 -0
  570. package/dist/tests/term-rewriting/term-utils.test.js.map +1 -0
  571. package/dist/tests/theorem-cache/cache.test.d.ts +2 -0
  572. package/dist/tests/theorem-cache/cache.test.d.ts.map +1 -0
  573. package/dist/tests/theorem-cache/cache.test.js +510 -0
  574. package/dist/tests/theorem-cache/cache.test.js.map +1 -0
  575. package/package.json +1 -1
@@ -0,0 +1,196 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Term Rewriting — Knuth-Bendix Completion
4
+ // ============================================================
5
+ //
6
+ // KB completion transforma un conjunto de ecuaciones E en un TRS
7
+ // terminante y confluente (cuando existe). Procedimiento clásico:
8
+ //
9
+ // 1. Orientar cada ecuación s = t en regla l → r usando una
10
+ // reducción ordering > (LPO acá).
11
+ // 2. Inter-reducir las reglas (simplify) para mantener minimalidad.
12
+ // 3. Calcular critical pairs.
13
+ // 4. Por cada CP (a, b):
14
+ // a' = normalize(a)
15
+ // b' = normalize(b)
16
+ // si a' ≡ b' → joinable, descartar.
17
+ // si no → agregar como nueva regla orientada.
18
+ // 5. Volver al paso 2 hasta que no haya nuevos CPs ⇒ completed.
19
+ //
20
+ // KB es **semi-decidible**: puede no terminar (orientar nuevas
21
+ // ecuaciones puede no ser posible, o el espacio crecer sin cota).
22
+ // Por eso exigimos `maxSteps`.
23
+ //
24
+ // Implementación: estrategia simple "outer loop", no la versión
25
+ // optimizada de Huet con prioridades. Suficiente para teorías
26
+ // pequeñas de testing (grupos, conmutatividad-a-medias, etc.).
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.orient = orient;
29
+ exports.knuthBendixCompletion = knuthBendixCompletion;
30
+ exports.makeTRS = makeTRS;
31
+ const term_utils_1 = require("./term-utils");
32
+ const rewrite_1 = require("./rewrite");
33
+ const critical_pairs_1 = require("./critical-pairs");
34
+ const lpo_1 = require("./lpo");
35
+ /**
36
+ * Orienta una ecuación s = t a regla l → r usando LPO.
37
+ *
38
+ * - Si s >LPO t: devuelve s → t.
39
+ * - Si t >LPO s: devuelve t → s.
40
+ * - Si son incomparables: null (KB falla aquí, el caller debe abortar
41
+ * o pedir al user una precedencia distinta).
42
+ * - Si son iguales: ecuación trivial, devuelve null sin error.
43
+ */
44
+ function orient(s, t, precedence) {
45
+ const cmp = (0, lpo_1.lpoCompare)(s, t, precedence);
46
+ if (cmp === 'eq')
47
+ return null;
48
+ if (cmp === 'gt')
49
+ return { lhs: s, rhs: t };
50
+ if (cmp === 'lt')
51
+ return { lhs: t, rhs: s };
52
+ // incomparable
53
+ return null;
54
+ }
55
+ /**
56
+ * ¿La regla `r` es subsumida (redundante) dada la lista `rules`?
57
+ *
58
+ * Una regla l → r es redundante si normalize(l, rules \ {r}) ya
59
+ * llega a r. En particular, si su LHS es reducible por otra regla,
60
+ * la regla nunca dispara y puede eliminarse.
61
+ */
62
+ function isRedundant(rule, rules) {
63
+ const others = rules.filter((x) => x !== rule);
64
+ const reducedLhs = (0, rewrite_1.normalize)(rule.lhs, others, 1000);
65
+ if (!(0, term_utils_1.termEquals)(reducedLhs, rule.lhs))
66
+ return true;
67
+ const reducedRhs = (0, rewrite_1.normalize)(rule.rhs, rules, 1000);
68
+ if ((0, term_utils_1.termEquals)(reducedLhs, reducedRhs)) {
69
+ // ambos lados convergen sin la regla
70
+ return true;
71
+ }
72
+ return false;
73
+ }
74
+ /**
75
+ * Inter-reduce: simplifica los RHS y elimina reglas redundantes.
76
+ */
77
+ function interReduce(rules) {
78
+ let current = rules.slice();
79
+ let changed = true;
80
+ let guard = 0;
81
+ while (changed && guard++ < 50) {
82
+ changed = false;
83
+ // Normalizar RHS de cada regla con las demás
84
+ const nextRules = [];
85
+ for (const r of current) {
86
+ const others = current.filter((x) => x !== r);
87
+ const newRhs = (0, rewrite_1.normalize)(r.rhs, others, 1000);
88
+ if (!(0, term_utils_1.termEquals)(newRhs, r.rhs)) {
89
+ changed = true;
90
+ nextRules.push({ lhs: r.lhs, rhs: newRhs });
91
+ }
92
+ else {
93
+ nextRules.push(r);
94
+ }
95
+ }
96
+ // Quitar reglas redundantes
97
+ const filtered = nextRules.filter((r) => !isRedundant(r, nextRules));
98
+ if (filtered.length !== nextRules.length)
99
+ changed = true;
100
+ current = filtered;
101
+ }
102
+ return current;
103
+ }
104
+ /**
105
+ * Detecta duplicados sintácticos.
106
+ */
107
+ function ruleAlreadyPresent(rule, rules) {
108
+ return rules.some((r) => (0, term_utils_1.termEquals)(r.lhs, rule.lhs) && (0, term_utils_1.termEquals)(r.rhs, rule.rhs));
109
+ }
110
+ /**
111
+ * Knuth-Bendix completion.
112
+ *
113
+ * `initialRules` se interpretan como ecuaciones orientadas. La
114
+ * orientación inicial se respeta si ya está bien dirigida según
115
+ * la precedencia; si no, se re-orienta.
116
+ *
117
+ * Devuelve un `KBResult` con:
118
+ * - `completed: true` si convergió.
119
+ * - `completed: false` si se excedió `maxSteps` o un CP no-joinable
120
+ * no pudo orientarse (LPO incomparable).
121
+ */
122
+ function knuthBendixCompletion(initialRules, opts = {}) {
123
+ const precedence = opts.precedence ?? new Map();
124
+ const maxSteps = opts.maxSteps ?? 100;
125
+ // Re-orientar las reglas iniciales con LPO. Si una ecuación no
126
+ // es trivial (lhs ≠ rhs) y LPO no la decide, KB falla de
127
+ // inmediato: la orientabilidad de las ecuaciones iniciales es un
128
+ // pre-requisito.
129
+ let rules = [];
130
+ for (const r of initialRules) {
131
+ if ((0, term_utils_1.termEquals)(r.lhs, r.rhs))
132
+ continue; // ecuación trivial
133
+ const oriented = orient(r.lhs, r.rhs, precedence);
134
+ if (oriented === null) {
135
+ return {
136
+ trs: { rules },
137
+ completed: false,
138
+ criticalPairs: 0,
139
+ steps: 0,
140
+ };
141
+ }
142
+ if (!ruleAlreadyPresent(oriented, rules)) {
143
+ rules.push(oriented);
144
+ }
145
+ }
146
+ let cpCount = 0;
147
+ let step;
148
+ for (step = 0; step < maxSteps; step++) {
149
+ rules = interReduce(rules);
150
+ const cps = (0, critical_pairs_1.allCriticalPairs)(rules);
151
+ cpCount += cps.length;
152
+ let addedAny = false;
153
+ for (const cp of cps) {
154
+ const a = (0, rewrite_1.normalize)(cp.lhs, rules);
155
+ const b = (0, rewrite_1.normalize)(cp.rhs, rules);
156
+ if ((0, term_utils_1.termEquals)(a, b))
157
+ continue; // joinable
158
+ const oriented = orient(a, b, precedence);
159
+ if (oriented === null) {
160
+ // CP no joinable y no orientable ⇒ KB falla.
161
+ return {
162
+ trs: { rules },
163
+ completed: false,
164
+ criticalPairs: cpCount,
165
+ steps: step + 1,
166
+ };
167
+ }
168
+ if (!ruleAlreadyPresent(oriented, rules)) {
169
+ rules.push(oriented);
170
+ addedAny = true;
171
+ }
172
+ }
173
+ if (!addedAny) {
174
+ // No se añadió ninguna regla nueva ⇒ converged.
175
+ return {
176
+ trs: { rules },
177
+ completed: true,
178
+ criticalPairs: cpCount,
179
+ steps: step + 1,
180
+ };
181
+ }
182
+ }
183
+ return {
184
+ trs: { rules },
185
+ completed: false,
186
+ criticalPairs: cpCount,
187
+ steps: step,
188
+ };
189
+ }
190
+ /**
191
+ * Sugar: construye un TRS plano.
192
+ */
193
+ function makeTRS(rules) {
194
+ return { rules };
195
+ }
196
+ //# sourceMappingURL=knuth-bendix.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knuth-bendix.js","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/knuth-bendix.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { Term } from './types';
2
+ export type LPOComparison = 'gt' | 'lt' | 'eq' | 'inc';
3
+ /**
4
+ * LPO comparison "rica": incluye 'inc' (incomparable).
5
+ */
6
+ export declare function lpoCompare(t1: Term, t2: Term, precedence: Map<string, number>): LPOComparison;
7
+ /**
8
+ * API pública compacta: devuelve -1 | 0 | 1.
9
+ *
10
+ * -1 si t1 <LPO t2
11
+ * 0 si iguales o incomparables
12
+ * +1 si t1 >LPO t2
13
+ *
14
+ * Para distinguir incomparable vs igual, usar `lpoCompare`.
15
+ */
16
+ export declare function lpo(t1: Term, t2: Term, precedence: Map<string, number>): -1 | 0 | 1;
17
+ //# sourceMappingURL=lpo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lpo.d.ts","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/lpo.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAGpC,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;AAsBvD;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,CA4D7F;AAwBD;;;;;;;;GAQG;AACH,wBAAgB,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAKnF"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Term Rewriting — Lexicographic Path Order (LPO)
4
+ // ============================================================
5
+ //
6
+ // LPO es una de las técnicas estándar para probar terminación de
7
+ // TRSs. Dada una precedencia >F sobre símbolos de función,
8
+ // extiende a un orden bien-fundado >LPO sobre términos.
9
+ //
10
+ // Definición (Dershowitz, 1982):
11
+ //
12
+ // s = f(s₁..sₙ) >LPO t sii alguno de:
13
+ //
14
+ // (LPO1) algún sᵢ ≥LPO t
15
+ // (LPO2) t = g(t₁..tₘ), f >F g, y s >LPO tⱼ para todo j
16
+ // (LPO3) t = f(t₁..tₘ), s >LPO tⱼ para todo j, y
17
+ // (s₁..sₙ) >LPO,lex (t₁..tₘ)
18
+ //
19
+ // Variables: x >LPO t sii x = t y t es variable (caso trivial).
20
+ // En general, una variable no domina a nada que no sea ella misma.
21
+ //
22
+ // Devolvemos -1 / 0 / 1 estilo comparator:
23
+ // -1 si t1 <LPO t2
24
+ // 0 si t1 ≡LPO t2 (estructuralmente iguales)
25
+ // +1 si t1 >LPO t2
26
+ // NaN (sentinel = 0 acá) si incomparables — convención: 0 también.
27
+ //
28
+ // Para diferenciar "iguales" de "incomparables" exponemos `lpoCompare`
29
+ // que devuelve `'gt' | 'lt' | 'eq' | 'inc'`. `lpo` colapsa inc→0.
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.lpoCompare = lpoCompare;
32
+ exports.lpo = lpo;
33
+ const term_utils_1 = require("./term-utils");
34
+ function precOf(name, precedence) {
35
+ return precedence.get(name) ?? 0;
36
+ }
37
+ /**
38
+ * Comparación de precedencia de símbolos de función.
39
+ *
40
+ * Si ambos tienen la misma prioridad, compara por nombre para
41
+ * romper empates de forma determinista (necesario para que LPO
42
+ * sea total sobre términos cerrados).
43
+ */
44
+ function compareSymbols(a, b, precedence) {
45
+ const pa = precOf(a, precedence);
46
+ const pb = precOf(b, precedence);
47
+ if (pa > pb)
48
+ return 1;
49
+ if (pa < pb)
50
+ return -1;
51
+ if (a === b)
52
+ return 0;
53
+ return a < b ? -1 : 1;
54
+ }
55
+ /**
56
+ * LPO comparison "rica": incluye 'inc' (incomparable).
57
+ */
58
+ function lpoCompare(t1, t2, precedence) {
59
+ if ((0, term_utils_1.termEquals)(t1, t2))
60
+ return 'eq';
61
+ // Caso variable
62
+ if (t1.kind === 'var' && t2.kind === 'var') {
63
+ return 'inc'; // variables distintas son incomparables
64
+ }
65
+ if (t1.kind === 'var') {
66
+ // x >LPO t solo si x ocurre en t (improper subterm). Estándar:
67
+ // x ≮LPO t para todo t excepto x. Devolvemos 'lt' si x aparece en t2.
68
+ return occursVar(t1.name, t2) ? 'lt' : 'inc';
69
+ }
70
+ if (t2.kind === 'var') {
71
+ return occursVar(t2.name, t1) ? 'gt' : 'inc';
72
+ }
73
+ // Ambos func: t1 = f(s₁..sₙ), t2 = g(t₁..tₘ)
74
+ const f = t1.name;
75
+ const g = t2.name;
76
+ const ss = t1.args;
77
+ const ts = t2.args;
78
+ // (LPO1): algún sᵢ ≥LPO t2 ⇒ t1 >LPO t2
79
+ for (const si of ss) {
80
+ const cmp = lpoCompare(si, t2, precedence);
81
+ if (cmp === 'gt' || cmp === 'eq')
82
+ return 'gt';
83
+ }
84
+ // Simétrico para t2: si algún tⱼ ≥LPO t1, entonces t2 >LPO t1
85
+ for (const tj of ts) {
86
+ const cmp = lpoCompare(tj, t1, precedence);
87
+ if (cmp === 'gt' || cmp === 'eq')
88
+ return 'lt';
89
+ }
90
+ const cmpFG = compareSymbols(f, g, precedence);
91
+ // (LPO2): f >F g y t1 >LPO tⱼ para todo j
92
+ if (cmpFG === 1) {
93
+ if (ts.every((tj) => lpoCompare(t1, tj, precedence) === 'gt'))
94
+ return 'gt';
95
+ return 'inc';
96
+ }
97
+ if (cmpFG === -1) {
98
+ if (ss.every((si) => lpoCompare(t2, si, precedence) === 'gt'))
99
+ return 'lt';
100
+ return 'inc';
101
+ }
102
+ // (LPO3): f = g (mismo símbolo y misma aridad, si no son incomparables)
103
+ if (ss.length !== ts.length)
104
+ return 'inc';
105
+ // s >LPO tⱼ para todo j
106
+ const allGt = ts.every((tj) => lpoCompare(t1, tj, precedence) === 'gt');
107
+ if (!allGt) {
108
+ // chequear simétrico para 'lt'
109
+ const allLt = ss.every((si) => lpoCompare(t2, si, precedence) === 'gt');
110
+ if (allLt)
111
+ return lexCompare(ts, ss, precedence) === 'gt' ? 'lt' : 'inc';
112
+ return 'inc';
113
+ }
114
+ // Comparación lexicográfica de argumentos
115
+ return lexCompare(ss, ts, precedence);
116
+ }
117
+ /**
118
+ * Comparación lexicográfica de tuplas de términos.
119
+ */
120
+ function lexCompare(ss, ts, precedence) {
121
+ const n = Math.min(ss.length, ts.length);
122
+ for (let i = 0; i < n; i++) {
123
+ const si = ss[i];
124
+ const ti = ts[i];
125
+ if (si === undefined || ti === undefined)
126
+ continue;
127
+ const cmp = lpoCompare(si, ti, precedence);
128
+ if (cmp === 'eq')
129
+ continue;
130
+ return cmp;
131
+ }
132
+ if (ss.length === ts.length)
133
+ return 'eq';
134
+ return ss.length > ts.length ? 'gt' : 'lt';
135
+ }
136
+ function occursVar(name, t) {
137
+ if (t.kind === 'var')
138
+ return t.name === name;
139
+ return t.args.some((a) => occursVar(name, a));
140
+ }
141
+ /**
142
+ * API pública compacta: devuelve -1 | 0 | 1.
143
+ *
144
+ * -1 si t1 <LPO t2
145
+ * 0 si iguales o incomparables
146
+ * +1 si t1 >LPO t2
147
+ *
148
+ * Para distinguir incomparable vs igual, usar `lpoCompare`.
149
+ */
150
+ function lpo(t1, t2, precedence) {
151
+ const r = lpoCompare(t1, t2, precedence);
152
+ if (r === 'gt')
153
+ return 1;
154
+ if (r === 'lt')
155
+ return -1;
156
+ return 0;
157
+ }
158
+ //# sourceMappingURL=lpo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lpo.js","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/lpo.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import type { RewriteRule, Term } from './types';
2
+ /**
3
+ * Intenta aplicar exactamente un paso de reescritura.
4
+ *
5
+ * Devuelve el término reducido o null si no hay redex.
6
+ *
7
+ * Política de selección:
8
+ * - Recorre t en pre-order (raíz primero, luego argumentos).
9
+ * - Para cada nodo prueba las reglas en orden.
10
+ * - El primer match aplica.
11
+ */
12
+ export declare function rewriteStep(t: Term, rules: RewriteRule[]): Term | null;
13
+ /**
14
+ * Normaliza t aplicando reglas hasta punto fijo.
15
+ *
16
+ * @param maxSteps Cota de seguridad para sistemas no terminantes.
17
+ * Si se excede, devuelve el último estado alcanzado.
18
+ *
19
+ * Nota: la confluencia se asume responsabilidad del caller — si el
20
+ * TRS no es confluente, distintas estrategias pueden dar distintas
21
+ * FN. Acá fijamos leftmost-outermost.
22
+ */
23
+ export declare function normalize(t: Term, rules: RewriteRule[], maxSteps?: number): Term;
24
+ /**
25
+ * Lista todas las posiciones (caminos) en t. Una posición es un
26
+ * array de índices: [] = raíz, [0] = primer argumento, [0, 1] =
27
+ * segundo argumento del primer argumento, etc.
28
+ *
29
+ * Útil para enumerar redexes y para calcular critical pairs.
30
+ */
31
+ export declare function allPositions(t: Term, prefix?: number[]): number[][];
32
+ /**
33
+ * Obtiene el subtérmino en la posición indicada.
34
+ * Devuelve null si la posición no existe.
35
+ */
36
+ export declare function subtermAt(t: Term, pos: readonly number[]): Term | null;
37
+ /**
38
+ * Reemplaza el subtérmino en la posición indicada por `replacement`.
39
+ *
40
+ * Devuelve un término nuevo (sin mutar t). Si la posición no existe,
41
+ * devuelve t sin cambios.
42
+ */
43
+ export declare function replaceAt(t: Term, pos: readonly number[], replacement: Term): Term;
44
+ //# sourceMappingURL=rewrite.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite.d.ts","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/rewrite.ts"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAcjD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,IAAI,GAAG,IAAI,CAOtE;AAqCD;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,QAAQ,GAAE,MAAc,GAAG,IAAI,CAYvF;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,EAAE,CAiBvE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,IAAI,CAStE;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,CAyBlF"}
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ // ============================================================
3
+ // ST Term Rewriting — Reescritura y normalización
4
+ // ============================================================
5
+ //
6
+ // Aplicación de reglas l → r sobre un término t.
7
+ //
8
+ // Estrategia: leftmost-outermost. Se recorre t en pre-order;
9
+ // para cada subtérmino se intenta match contra el LHS de alguna
10
+ // regla. El primer match gana. Esto es suficiente para sistemas
11
+ // confluentes (todas las estrategias llegan a la misma FN), y
12
+ // para los terminantes garantiza progreso.
13
+ //
14
+ // `normalize` itera `rewriteStep` hasta punto fijo o hasta
15
+ // `maxSteps` (default 10_000) — la cota evita ciclos cuando el
16
+ // sistema no es terminante.
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.rewriteStep = rewriteStep;
19
+ exports.normalize = normalize;
20
+ exports.allPositions = allPositions;
21
+ exports.subtermAt = subtermAt;
22
+ exports.replaceAt = replaceAt;
23
+ const term_utils_1 = require("./term-utils");
24
+ /**
25
+ * Cota de tamaño máximo del término durante normalización.
26
+ *
27
+ * Si el sistema no es terminante, el término puede crecer sin parar
28
+ * y aún antes de agotar `maxSteps` puede agotar la pila al recorrer.
29
+ * Esta cota corta el bucle cuando el término supera un tamaño "absurdo"
30
+ * (rara vez un término legítimo de KB supera ~10k nodos en teorías
31
+ * pequeñas).
32
+ */
33
+ const MAX_TERM_SIZE = 5000;
34
+ /**
35
+ * Intenta aplicar exactamente un paso de reescritura.
36
+ *
37
+ * Devuelve el término reducido o null si no hay redex.
38
+ *
39
+ * Política de selección:
40
+ * - Recorre t en pre-order (raíz primero, luego argumentos).
41
+ * - Para cada nodo prueba las reglas en orden.
42
+ * - El primer match aplica.
43
+ */
44
+ function rewriteStep(t, rules) {
45
+ // Iterativo: busca el redex outermost-leftmost recorriendo el
46
+ // árbol en pre-order con stack explícito. Cuando encuentra un
47
+ // redex, replaceAt reconstruye el árbol con la sustitución.
48
+ const found = findRedex(t, rules);
49
+ if (found === null)
50
+ return null;
51
+ return replaceAt(t, found.position, found.replacement);
52
+ }
53
+ /**
54
+ * Búsqueda del primer redex en pre-order (outermost-leftmost).
55
+ * Iterativo para soportar términos profundos.
56
+ */
57
+ function findRedex(t, rules) {
58
+ // Stack de (node, position) en orden de DFS pre-order.
59
+ const stack = [{ node: t, pos: [] }];
60
+ while (stack.length > 0) {
61
+ const frame = stack.pop();
62
+ if (frame === undefined)
63
+ break;
64
+ const { node, pos } = frame;
65
+ // Intentar reglas en este nodo.
66
+ for (const rule of rules) {
67
+ const subst = (0, term_utils_1.match)(rule.lhs, node);
68
+ if (subst !== null) {
69
+ return { position: pos, replacement: (0, term_utils_1.applySubst)(rule.rhs, subst) };
70
+ }
71
+ }
72
+ // Si no hay match, push children en orden inverso para que el
73
+ // leftmost (índice 0) se procese primero al pop.
74
+ if (node.kind === 'func') {
75
+ for (let i = node.args.length - 1; i >= 0; i--) {
76
+ const child = node.args[i];
77
+ if (child === undefined)
78
+ continue;
79
+ stack.push({ node: child, pos: [...pos, i] });
80
+ }
81
+ }
82
+ }
83
+ return null;
84
+ }
85
+ /**
86
+ * Normaliza t aplicando reglas hasta punto fijo.
87
+ *
88
+ * @param maxSteps Cota de seguridad para sistemas no terminantes.
89
+ * Si se excede, devuelve el último estado alcanzado.
90
+ *
91
+ * Nota: la confluencia se asume responsabilidad del caller — si el
92
+ * TRS no es confluente, distintas estrategias pueden dar distintas
93
+ * FN. Acá fijamos leftmost-outermost.
94
+ */
95
+ function normalize(t, rules, maxSteps = 10000) {
96
+ let current = t;
97
+ for (let i = 0; i < maxSteps; i++) {
98
+ // Guard contra divergencia: si el término supera MAX_TERM_SIZE
99
+ // asumimos que el sistema no es terminante en esta dirección
100
+ // y devolvemos el último estado.
101
+ if ((0, term_utils_1.termSize)(current) > MAX_TERM_SIZE)
102
+ return current;
103
+ const next = rewriteStep(current, rules);
104
+ if (next === null)
105
+ return current;
106
+ current = next;
107
+ }
108
+ return current;
109
+ }
110
+ /**
111
+ * Lista todas las posiciones (caminos) en t. Una posición es un
112
+ * array de índices: [] = raíz, [0] = primer argumento, [0, 1] =
113
+ * segundo argumento del primer argumento, etc.
114
+ *
115
+ * Útil para enumerar redexes y para calcular critical pairs.
116
+ */
117
+ function allPositions(t, prefix = []) {
118
+ // Iterativo, BFS por orden estable (raíz, luego hijos en orden 0..n).
119
+ const out = [];
120
+ const queue = [{ node: t, pos: prefix.slice() }];
121
+ while (queue.length > 0) {
122
+ const head = queue.shift();
123
+ if (head === undefined)
124
+ break;
125
+ out.push(head.pos);
126
+ if (head.node.kind === 'func') {
127
+ for (let i = 0; i < head.node.args.length; i++) {
128
+ const a = head.node.args[i];
129
+ if (a === undefined)
130
+ continue;
131
+ queue.push({ node: a, pos: [...head.pos, i] });
132
+ }
133
+ }
134
+ }
135
+ return out;
136
+ }
137
+ /**
138
+ * Obtiene el subtérmino en la posición indicada.
139
+ * Devuelve null si la posición no existe.
140
+ */
141
+ function subtermAt(t, pos) {
142
+ let cur = t;
143
+ for (const idx of pos) {
144
+ if (cur.kind !== 'func')
145
+ return null;
146
+ const next = cur.args[idx];
147
+ if (next === undefined)
148
+ return null;
149
+ cur = next;
150
+ }
151
+ return cur;
152
+ }
153
+ /**
154
+ * Reemplaza el subtérmino en la posición indicada por `replacement`.
155
+ *
156
+ * Devuelve un término nuevo (sin mutar t). Si la posición no existe,
157
+ * devuelve t sin cambios.
158
+ */
159
+ function replaceAt(t, pos, replacement) {
160
+ if (pos.length === 0)
161
+ return replacement;
162
+ // Caminamos hasta el nodo padre del target, luego reconstruimos
163
+ // de vuelta. Iterativo.
164
+ const path = [t];
165
+ let cur = t;
166
+ for (let i = 0; i < pos.length; i++) {
167
+ if (cur.kind !== 'func')
168
+ return t; // posición inválida
169
+ const idx = pos[i];
170
+ const child = cur.args[idx];
171
+ if (child === undefined)
172
+ return t;
173
+ cur = child;
174
+ path.push(cur);
175
+ }
176
+ // path[i] = nodo en profundidad i; path[len-1] = target a reemplazar.
177
+ // Reconstruimos desde la hoja.
178
+ let acc = replacement;
179
+ for (let i = pos.length - 1; i >= 0; i--) {
180
+ const parent = path[i];
181
+ if (parent === undefined || parent.kind !== 'func')
182
+ return t;
183
+ const newArgs = parent.args.slice();
184
+ newArgs[pos[i]] = acc;
185
+ acc = { kind: 'func', name: parent.name, args: newArgs };
186
+ }
187
+ return acc;
188
+ }
189
+ //# sourceMappingURL=rewrite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rewrite.js","sourceRoot":"","sources":["../../../src/runtime/term-rewriting/rewrite.ts"],"names":[],"mappings":"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"}